1. Saga是什么
保证最终一致性的一种分布式事务方案
2. Saga流程
- 有多个事务参与者,每个参与者都有两块逻辑:正向操作和逆向操作
- 把事务分成两个阶段
- 第一阶段每个参与者执行正向操作
- 第二阶段根据第一阶段结果而定
- 如果所有正向操作均执行成功,那么分布式事务提交
- 如果任何一个正向操作执行失败,退回去执行前面各参与者的逆向操作
3. TCC vs Saga
- 相同点:
- 都是两个阶段
- 都需要实现补偿操作
- 不同点:
- TCC是同步的,而Saga是异步的(由事件驱动)
- TCC第一阶段需要预留资源,而Saga不需要
4. Saga的使用场景
- 多个服务使用多个数据源且每个数据源可以是不同的
- 参与者包含其它公司或遗留系统服务,无法提供 TCC 模式要求的三个接口
- 业务流程长、业务流程多
5. Saga的问题
不保证隔离性