当前位置 : 主页 > 编程语言 > java >

分布式事务解决方案笔记

来源:互联网 收集:自由互联 发布时间:2023-09-06
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指令,提交或回滚事务

分布式事务解决方案笔记_回滚事务_02

2.AT模式原理

AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷

阶段一RM的工作:注册分支事务 记录undo-log(数据快照)执行业务sql并提交 报告事务状态

阶段二提交时RM的工作删除undo-log

阶段二回滚时RM的工作:根据undo-log恢复数据到更新前

分布式事务解决方案笔记_回滚事务_03

3.TCC模式原理

1.Try:资源的检测和预留;

2. Confirm:完成资源操作业务;要求 Try 成功 Confirm一定要能成功。

3、Cancel:预留资源释放,可以理解为try的反向操作。

分布式事务解决方案笔记_回滚事务_04

2.MQ分布式事务

分布式事务解决方案笔记_全局事务_05

1.seata的XA模式,CP,需要互相等待各个分支事务提交,可以保证强一致性,性能差 银行业务

2.seata的AT模式,AP,底层使用undo log 实现,性能好 互联网业务

3.seata的TCC模式,AP,性能较好,不过需要人工编码实现 银行业务

4.MQ模式实现分布式事务,在A服务写数据的时候,需要在同一个事务内发送消息到另外一个事务,异步,性能

最好 互联网业务


网友评论