1.Seata框架(XA、AT、TCC) TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器:定义全局事务的范围、开始全局事
1.Seata框架(XA、AT、TCC)
TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
1.seata的XA模式(cp)
RM一阶段的工作:①注册分支事务到TC ②执行分支业务sql但不提交 ③报告执行状态到TC
TC二阶段的工作:TC检测各分支事务执行状态 如果都成功,通知所有RM提交事务 如果有失败,通知所有RM回滚事务
RM二阶段的工作:接收TC指令,提交或回滚事务
2.AT模式原理
AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
阶段一RM的工作:注册分支事务 记录undo-log(数据快照)执行业务sql并提交 报告事务状态
阶段二提交时RM的工作:删除undo-log
阶段二回滚时RM的工作:根据undo-log恢复数据到更新前
3.TCC模式原理
1.Try:资源的检测和预留;
2. Confirm:完成资源操作业务;要求 Try 成功 Confirm一定要能成功。
3、Cancel:预留资源释放,可以理解为try的反向操作。
2.MQ分布式事务
1.seata的XA模式,CP,需要互相等待各个分支事务提交,可以保证强一致性,性能差 银行业务
2.seata的AT模式,AP,底层使用undo log 实现,性能好 互联网业务
3.seata的TCC模式,AP,性能较好,不过需要人工编码实现 银行业务
4.MQ模式实现分布式事务,在A服务写数据的时候,需要在同一个事务内发送消息到另外一个事务,异步,性能
最好 互联网业务