分布式事务AT、TCC、Saga、XA 模式分析对比
总结 AT、TCC、Saga、XA 模式分析
分布式事务模式 | 介绍 | 技术栈 |
---|---|---|
AT 模式 | 无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本(sql都由框架托管统一执行,会存在脏写问题) | seata、shardingsphere |
TCC 模式 | 高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景(第一阶段会产生行锁,事务执行太久会锁行很久) | seata、service-comb |
Saga 模式 | 长事务解决方案,适用于业务流程长且需要保证事务最终一致性的业务系统(第一阶段就操作DB,会存在脏读问题) | seata、shardingsphere、service-comb |
XA模式 | 分布式强一致性的解决方案,但性能低而使用较少。 | seata、shardingsphere |
Saga和TCC模式区别不大,TCC就是多了个锁行的步骤(避免了脏读,但事务执行太久会导致锁行很久,不适用于长事务) |
注:
- shardingsphere的Saga 模式 引擎使用的是service-comb(较comb实现了解析sql自动回滚)
- shardingsphere的AT模式引擎是用的Seata引擎
- shardingsphere是从Sharding-JDBC进化而来,分库分表使用很火
shardingsphere开源地址:https://github.com/apache/shardingsphere (当当开源)
seata开源地址:https://github.com/seata/seata (阿里2019年开源)
service-comb开源地址:https://github.com/apache/servicecomb-pack (华为2017年开源)