分布式事务方案分类
目前分布式事务解决的方案主要有对业务无入侵和有入侵的方案.
业务无侵入的方案
无入侵方案主要有基于数据库 XA 协议的两段式提交(2PC)方案和蚂蚁金服开源的Seata AT 模式。
分布式事务方案 | 常用实践框架 | 相关阅读 |
---|---|---|
数据库 XA | 各个数据库厂商实现XA协议 | |
Seata AT | Seata AT 模式 | 分布式事务中间件Seata的设计原理 Seata AT 模式 |
Seata XA | Seata XA 模式 | Seata 分布式事务实践和开源详解 |
基于数据库 XA 协议方案优缺点:
- 优点是对业务代码无入侵
- 缺点也是很明显:必须要求数据库对 XA 协议的支持,且由于 XA 协议自身的特点,它会造成事务资源长时间得不到释放,锁定周期长,而且在应用层上面无法干预,因此它性能很差,在互联网项目中并不是很流行这种解决方案。
侵入业务的方案
实际上,最初分布式事务只有 XA 这个唯一方案。XA 是完备的,但在实践过程中,由于种种原因(包含但不限于上面提到缺点)往往不得不放弃,转而从业务层面着手来解决分布式事务问题。比如:
分布式事务方案 | 常用实践框架 | 相关阅读 |
---|---|---|
最终一致性方案 | RocketMQ等 | 最终一致性分布式事务 |
TCC | Seata TCC 模式、 ByteTCC、 tcc-transaction | TCC分布式事务案例 、 Seata官网、 Seata三种模式详解 |
Saga | Seata Saga 模式、 ServiceComb | Seata 分布式事务实践详解 、 TCC、Saga入门级理解、 Seata Saga模式详解、柔性事务之Saga详解、 基于 Seata Saga 设计更有弹性的金融应用、 ServiceComb数据一致性解决方案Saga演进介绍、 Saga分布式事务解决方案与实践 |