1. Saga 长事务模式,拆分 + 补偿?
Saga 长事务模式是什么?如何通过拆分 + 补偿实现分布式事务?
- Saga 模式的概念
- 拆分与补偿机制
- Saga 的编排与协同方式
Saga 长事务模式是把一个大的分布式事务拆分成多个本地事务(子事务),每个子事务按顺序执行,并配套对应的补偿事务(compensation)。当某个子事务失败时,逆序执行已成功子事务的补偿事务,把系统回滚到初始状态,从而在"无全局锁、无两阶段提交"的情况下实现长事务的最终一致性。Saga 有两种编排方式:协同式(Choreography)——各服务通过事件相互触发,无中央协调者;编排式(Orchestration)——由中央协调器调用各子事务并管理补偿。Saga 适合跨服务、长执行、无需强一致性的业务(如订单、下单流程),但缺点是缺乏隔离性(中间状态可见)、补偿逻辑复杂。
Saga 的核心是"拆分 + 补偿":把大事务拆成分散的子事务,用补偿回滚。它放弃了 ACID 的隔离性,换取了长事务的可用性与最终一致性。相比 XA(两阶段提交),Saga 不占用全局锁、更灵活,但补偿的编写和正确性要求高。实际中常与 Outbox、消息可靠投递配合。