durable workflow相比任务序列优势在哪

它把执行状态外置成持久事件日志,靠确定性重放恢复成功步骤、按策略处理失败步骤,用幂等应对副作用而非删除历史。

要点

  1. 简单任务序列状态全在进程内存,假设进程不死、每步快速成功、失败整体重来;一旦有外部副作用或长任务,这个假设就崩。
  2. 优势包括执行状态外置使进程可换、重试粒度到单步、可承载数天的挂起等待、每步输入输出落库便于对账、中间态收敛到有限可枚举点。
  3. 成功步骤的提取靠事件溯源加确定性重放:每步结果作为事件追加写入持久日志,恢复时从日志命中缓存返回,跳过实际调用。
  4. 因此 workflow 代码必须确定性,日期、随机数、UUID 等需走框架接口并进日志;返回值要可序列化,大对象应存对象存储只留 key。
  5. 失败处理分三种:退避重试、副作用后靠业务幂等键去重、真正的回滚分补偿(saga)与终止清理,后者多为软删除加状态标记。
  6. 常见坑是 workflow 代码里读时间戳做分支导致重放对不上;应只做编排,把所有不确定、不幂等、有副作用的部分压到 activity 里。

来源