Saga模式作为一种处理长事务的柔性方案,通过“正向本地事务”与“反向补偿事务”的机制,在数据一致性与系统高可用性之间找到了一个关键的平衡点,因此被广泛应用于电商、金融等微服务架构中。其核心概念源于1987年的论文《Sagas》,核心是:将长事务拆解为一系列可独立执行的本地事务,当某个步骤失败时,便执行反向的补偿事务来撤销之前步骤的影响,以此保障数据的最终一致性。
🗺️ 核心工作流程
Saga的执行流程围绕两个核心概念展开:
本地事务 (Local Transaction, Ti):业务流程中的一个独立操作,执行后立即提交,不持有锁。
补偿事务 (Compensation Transaction, Ci):与
Ti对应的逆向操作,用于撤销Ti带来的数据变更。
一个Saga事务包含两种执行路径:
成功路径:所有本地事务按顺序成功执行,事务最终完成。
失败回滚路径:若中间任一事务
Tj失败,Saga会按相反顺序(Cj-1-> ... ->C1)执行补偿事务,撤销之前成功的所有变更,使系统恢复到事务开始前的状态。
🎭 两种协调模式
Saga支持两种协调模式,设计决策主要取决于业务流程的复杂度和对中央控制的需求。
| 特性 | 协同模式 (Choreography) | 编排模式 (Orchestration) |
|---|---|---|