# Seata Saga模式


<!--more-->


## 4.1 Saga模式介绍

Saga模式是Seata开源的⻓事务解决⽅案，将由蚂蚁⾦服主要贡献。在Saga模式下，分布式事务内有多个参与者，每⼀个参与者都是⼀个冲正补偿服务，需要⽤户根据业务场景实现其正向操作和逆向回滚操作。

分布式事务执⾏过程中，依次执⾏各参与者的正向操作，如果所有正向操作均执⾏成功，那么分布式事务提交。如果任何⼀个正向操作执⾏失败，那么分布式事务会去退回去执⾏前⾯各参与者的逆向回滚操作，回滚已提交的参与者，使分布式事务回到初始状态。

![示意图](https://img.zhaojq.top/20260727091648766.png "示意图")

适用场景:

- 业务流程⻓、业务流程多
- 参与者包含第三⽅公司或遗留系统服务，⽆法提供TCC模式要求的三个接⼝
- 典型业务系统：如⾦融⽹络（与外部⾦融机构对接）、互联⽹微贷、渠道整合等业务系统

## 4.2 三种模式对比

由于saga不常用, 这里不再做demo示例

| 维度       | AT                                                   | TCC                        | Saga                          |
| ---------- | ---------------------------------------------------- | -------------------------- | ----------------------------- |
| 集成难度   | 低                                                   | 非常高                     | 中等                          |
| 隔离性     | 保证                                                 | 保证                       | 不保证                        |
| 推荐度     | 高                                                   | 中                         | 低                            |
| 数据库改造 | UNDO_LOG                                             | 无                         | 流程与实例表                  |
| 实现机制   | DataSource代理                                       | TCC实现                    | 状态机                        |
| 场景       | ⾃研项⽬全场景<br/>拥有数据访问权限<br/>快速集成场景 | 更⾼的性能要求更复杂的场景 | ⻓流程<br/>涉及⼤量第三⽅调⽤ |

AT模式是⽆侵⼊的分布式事务解决⽅案，适⽤于不希望对业务进⾏改造的场景，⼏乎0学习成本。

TCC模式是⾼性能分布式事务解决⽅案，适⽤于核⼼系统等对性能有很⾼要求的场景。

Saga模式是⻓事务解决⽅案，适⽤于业务流程⻓且需要保证事务最终⼀致性的业务系统，Saga模式⼀阶段就会提交本地事务，⽆锁，⻓流程情况下可以保证性能，多⽤于渠道层、集成层业务系统。事务参与者可能是其它公司的服务或者是遗留系统的服务，⽆法进⾏改造和提供TCC要求的接⼝，也可以使⽤Saga模式。






