事务管理

1. 概述

事务管理是对项目层的事务实例进行管理。事务实例是实际运行的事务定义。一个事务定义可以有多个事务实例。

2. 事务管理列表

事务实例列表展示了事务实例的基本信息。

2.1 事务实例状态总览

  • 完成状态:展示执行完成的事务实例数量。
  • 运行中状态:展示正在进行中的事务实例数量。
  • 失败状态:展示执行失败的事务实例数量。

2.2 按事务视图查看事务实例

列表字段:

  • 事务实例:事务定义名称+事务实例的ID,是事务实例的标识,具有唯一性。
  • 状态:事务实例的运行状态。共有进行中完成失败三种状态。
  • 开始时间:事务实例开始运行的时间。以年-月-日 时:分:秒的形式展示。
  • 关联业务类型:事务实例会关联至少一个业务。这个业务一般取事务实例运行时执行的第一个子事务所关联业务。业务有类型属性。该字段为事务实例关联的业务的业务类型。
  • 关联业务ID:事务实例关联的业务的业务ID。
  • 进度条:展示事务实例下各个任务的执行情况。绿色表示完成,红色表示失败,蓝色表示进行中,黄色表示队列中。

hover到事务实例的名称查看更多详情:

  • ID:事务实例的ID,是事务实例的标识,具有唯一性。
  • 所属事务定义:实例所属的事务定义。一个事务定义下可以有多个实例。
  • 描述:saga的描述,说明saga中定义的事务所执行的功能流程。
  • 所属微服务:定义saga的微服务。一般选择在saga的处理流程中,第一步涉及的微服务,在该微服务中定义saga。
  • 触发层级:组织层。
  • 开始时间:事务实例开始运行的时间。以年-月-日 时:分:秒的形式展示。
  • 结束时间:事务实例运行结束的时间。以年-月-日 时:分:秒的形式展示。

2.3 按任务视图查看事务实例

  • 任务编码:任务的编码。
  • 状态:事务实例时任务的运行状态。共有进行中完成失败队列中四种种状态。
  • 所属事务实例:任务所属的事务实例。
  • 描述:任务的描述,对任务进一步补充说明。
  • 实际开始时间:任务实际开始运行的时间。
  • 实际完成时间:任务实际运行完成的时间。
  • 重试次数:已重试次数与最大重试次数的比值。

3. 事务实例详情

  1. 在项目层,点击菜单“运营>事务管理>事务定义”,进入事务管理页面。
  2. 点击事务管理列表的实例名称,可查看事务实例运行的详情。
  3. 详情页以流程图的形式展示实例的实际运行情况。流程图展示了按执行顺序执行的任务及输入、输出。

    • 任务也可称为事务实例里的一系列子事务。任务一共有等待运行中完成失败四种状态。
    • 输入、输出为位于开始和结束节点的圆形。点击输入节点,显示json格式的输入参数的数据;点击输出参数,显示json格式的输出结果数据。
    • 任务为位于输入、输出节点之间的正方形。点击任务节点,显示任务的运行情况和该任务在事件定义中的详情。
  4. 点击正方形的任务节点,显示任务的运行情况和该任务在事件定义中的详情 任务的运行情况有如下信息:

    • 任务编码:用来标识任务,具有唯一性。
    • 状态:任务的状态,一共有等待运行中完成失败四种状态。
    • 序列:任务在执行流程中的执行顺序。
    • 运行的微服务实例:运行这个任务的微服务实例。因为是分布式事务,所以不同的任务会分布在不同的微服务中运行。
    • 最大重试次数:若任务执行失败后,系统自动重试的最大次数。
    • 已重试次数:任务失败后,系统已经重试的次数。
    • 当状态为完成时,显示运行结果:显示json格式的输出结果数据。
    • 当状态为失败时,显示异常信息:导致任务运行失败的原因。

4. 解锁任务

当任务的状态为等待、运行中或失败中任一种,且运行的微服务实例不为空时,任务将会被锁住,此时,允许进行解锁操作。

如果锁住任务的微服务实例出现异常,但任务没有接收到异常信息时,任务将保持锁住状态,此时,可以在界面将任务解锁,解锁后,任务可以被同一微服务的其他实例进行锁定。解锁步骤如下:

  1. 点击事务实例的名称,查看详情。
  2. 出现事务实例的事务执行流程图后,点击要解锁的任务。
  3. 出现任务运行情况后,在运行情况顶部点击解锁→解锁按钮。

5. 重试任务

当任务的执行出现异常时,系统将会自动进行重试,当已重试次数达到最大重试次数的值时,该任务的状态将从运行中变为失败,允许用户可在界面上进行手动重试操作。重试步骤如下:

  1. 点击事务实例的名称,查看详情。
  2. 出现事务实例的事务执行流程图后,点击要重试的任务。
  3. 出现任务运行情况后,在运行情况顶部点击重试→重试按钮。

6. 强制失败

当任务执行状态为进行中或者等待被拉取的状态时,用户可以强制将任务置为失败状态

  1. 点击事务实例的名称,查看详情。
  2. 出现事务实例的事务执行流程图后,点击要强制失败的任务。
  3. 出现任务运行情况后,在运行情况顶部部点击强制失败→强制失败按钮。