目录
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案
1.At模式
实现原理:
阿里 SEATA独有模式,通过生成反向SQL实现数据回滚,需要在数据库额外附加UNDO_LOG表。
特点:
性能:高
模式:AP,存在数据不一致的中间状态
难易程度:简单,靠SEATA自己解析反向SQL并回滚
使用要求:
所有服务与数据库必须要自己拥有管理权,因为要创建UNDO_LOG表。
最好都是MysQL,听说也支持PSQL,不过没试验过。
应用场景:
高并发互联网应用,允许数据出现短时不一致,可通过对账程序或补录来保证最终一致性。
2.TCC模式
TCC是Try-尝试、Confirm-确认、Cancel-取消Try 尝试阶段,对资源进行锁定。
Conirm 确认阶段,对资源进行确认,完成操作Cancel 取消阶段,对资源进行还原,取消操作。
实现原理:
在代码中和数据库中添加字段,实现对资源的锁定。
confirm
模式:AP,存在数据不一致的中间状态
难易程度:复杂,SEATA TC只负责全局事务的提交与回滚指令,具体的回滚处理全靠程序员自己实现
使用要求:
1. 所有服务与数据库必须要自己拥有管理杈
2. 支持异构数据库,可以使用不同选型实现
3. 高并发石联网应用,介许数据出现短时不一致,可通讨对账程序或补录来保近最终一致性
3.SAGA
Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。形成事件反向链类似于状态机,事件的反向事件需要自己设计完成。
特点
性能:不一定,取决于三方服务
模式:AP,在数据不一致的中间状态
难易程度:复杂,提交与回滚流程全靠程序员编排
4.XA模式
每个数据库交给统一管理,数据库完成后阻塞但不提交,等所有完成后一起提交;
特点
性能:低,
模式:CP,能保证一致性,
难易程度:简单,基于数据库自带特性实现,全程只有唯一的线程可以进行操作,无需改表
使用要求:
使用支持XA方案的关系型数据库(主流都支持)
应用场景:
金融行业,并发量不大,但数据很重要的项目