| 结构 | 协调器 + 有序本地事务 + 补偿动作 |
|---|---|
| 优势 | 流程可见、分支与补偿明确 |
| 代价 | 协调器承担编排职责,需处理超时、重试与重复回调 |
- 状态建模:初始、步骤进行中、补偿中、已完成、已失败
- 驱动事件:步骤成功、失败与超时事件触发状态迁移
- 动作幂等:正向调用与补偿动作都要能安全重复执行
- 持久化:状态与待执行动作先落库,重启后可继续推进
- 超时控制:每步设置超时与重试上限,超限进入补偿
- 回调防重:按步骤标识与当前状态校验,过期回调忽略记录
| 补偿顺序 | 按业务可接受方式逆序补偿;不可逆步骤尽量前移,或改为预留(先冻结再扣减) |
|---|---|
| 观测要点 | 流程图状态分布、单步耗时与补偿触发次数纳入监控 |
| 并发处理 | 同一业务实体的 Saga 按标识串行化推进,避免交叉执行导致状态错乱 |
|---|---|
| 人工介入 | 多次补偿仍失败时转入人工队列,附带完整步骤轨迹便于定位 |
| 测试要点 | 用故障注入逐步骤模拟超时与失败,验证每条补偿路径都能收敛 |
协调器通常用持久化状态机或工作流引擎实现,确保重启后能继续推进。