跳转到主要内容

关键词词典

Saga

长事务的补偿模式。把一个跨服务的业务流程拆成一串本地事务,每步配一个反向补偿动作。

又称Saga 模式长事务

架构

是什么

Saga 是一种最终一致性方案。一个跨多个服务的业务流程,被拆成若干本地事务 $T_1, T_2, \dots, T_n$,每个 $T_i$ 配一个补偿动作 $C_i$。全部成功则流程完成;若 $T_k$ 失败,则按倒序执行 $C_{k-1}, \dots, C_1$ 把已经造成的变更撤销。

两种协调方式

编排(Orchestration)协同(Choreography)
控制方式中央协调器发命令各服务订阅事件自行推进
优点流程显式可读,易监控和补偿无单点,服务解耦彻底
缺点协调器容易长成上帝类流程散落,排障困难

银行核心这类流程长、监管要求可追溯的场景,基本都选编排式。

与 2PC 的取舍

2PC 追求强一致,但在微服务下会长时间锁资源,且协调者故障即阻塞。Saga 放弃隔离性(中间状态对外可见),换来可用性。设计时必须处理隔离性缺失:例如转账 saga 的中间态会让用户看到「已扣款未入账」,需要用预留/冻结语义来规避。

补偿不是回滚

数据库回滚能抹掉一切,补偿是业务动作:扣款 100 元的补偿是「冲正 100 元」,会产生新的流水记录。因此补偿动作必须幂等,且要能处理「补偿也失败」的情况(重试 + 人工兜底)。

提及本词的文章

相关词条