分布式事务XA与AT

简介: 个人理解

XA

理解

第一步是@GlobalTransactional在方法入口通知TM事务管理器发送全局事务的范围给TC事务协调者开启事务

开启事务后第二步是调用各分支去TC事务协调中去注册分支的事务

第三步是微服务去执行相对应的sql

比如我订单对应的是库存跟支付 那么就是库存跟支付去执行自己的sql语句

执行完了之后是向TC事务协调者汇报事务的状态

然后TC事务协调者会根据各分支汇报的情况去选择全局提交或者全局回滚

然后根据选择的结果通知给RM资源管理器 去处理各分支的提交或者回滚

疑问 第二阶段为什么是由TM事务管理器去发起的提交 不应该是TC接收到所有RM的结果汇报了之后自己去检查判断吗 为什么要有2.1

还是说TM能感知到所有事务完毕了 然后发起询问请求TC 然后TC再根据结果去通知RM呢

优缺点很好理解

保证事务所有一致性的前提下肯定是牺牲了可用性跟性能

因为要保证事务的所有一致性肯定就是要将事务经过的地方都锁起来

所以这个时候别人要访问修改都得排队 要等到全局事务的提交或者回滚才能释放数据库资源

而且还要依赖关系型数据库 因为关系型数据库才有事务

所以我觉得应该不咋用 性价比不高

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

那么如何解决锁定资源周期过长的缺陷呢

那无非就是不要等到全局事务的提交或者回滚才能释放资源

这个时候就可以采用类似redis那种快照版本

记录当前的版本的快照 如果提交 删除快照 因为提交了就不用回滚到之前的版本了

如果全局事务回滚的话 那就是根据快照的版本恢复到事务执行之前的数据就ok了

注意 快照一定是在执行sql语句之前就已经保存下来的

AT与XA的区别

简述AT模式与XA模式最大的区别是什么?

  • XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源。

  • XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚。

  • XA模式强一致;AT模式最终一致

所谓强一致就是从头到尾 各微服务的事务状态都保持一致

最终一致则是最后的结果一致 过程不一定一致

优缺点

AT模式的优点:

  • 一阶段完成直接提交事务,释放数据库资源,性能比较好

  • 利用全局锁实现读写隔离

  • 没有代码侵入,框架自动完成回滚和提交

AT模式的缺点:

  • 两阶段之间属于软状态,属于最终一致

  • 框架的快照功能会影响性能,但比XA模式要好很多

相关文章
|
Java 数据库连接 API
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
351 0
|
开发框架 Java 数据库连接
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)(下)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
277 0
分布式篇问题之集群(Cluster)模式主控节点的高可用性问题如何解决
分布式篇问题之集群(Cluster)模式主控节点的高可用性问题如何解决
163 0
|
程序员
深入解析:分布式一致性的终极解决方案——XA协议
本文介绍了分布式系统中的两种一致性协议:2PC(两阶段提交)和3PC(三阶段提交)。2PC分为准备和提交两个阶段,确保所有参与者在提交前达成一致。3PC则在2PC基础上增加了一个CanCommit阶段,提高容错性和可用性,参与者在超时后可自行中断事务。选择协议需依据业务需求和系统特点,高一致性要求可选3PC,注重性能则选2PC。
301 0
|
SQL 关系型数据库 MySQL
分布式事物【XA强一致性分布式事务实战、分布式架构的理论知识、TCC核心组成】(六)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、分布式架构的理论知识、TCC核心组成】(六)-全面详解(学习总结---从入门到深化)
218 0
|
SQL NoSQL Java
还不会分布式事务,seata xa模式入门实战送上
还不会分布式事务,seata xa模式入门实战送上
1285 0
还不会分布式事务,seata xa模式入门实战送上
|
SQL JSON Java
Seata分布式事务模式(TA、TCC、XA、SAGA)工作机制
分布式应用有一个比较明显的问题就是,一个业务流程通常需要几个服务来完成,业务的一致性很难保证。为了保障业务一致性,每一步都要在 catch 里去处理前面所有的“回滚”操作,可读性及维护性差,开发效率低下。
1396 0
|
SQL 关系型数据库 数据库
30-微服务技术栈(高级):分布式事务Seata的XA模式
在分布式架构系统中,服务不止一个,一个完整的业务链路肯定也不止调用一个服务,此时每个服务都有自己的数据库增删改查,而每一个写操作对应一个本地事务。如果想要确保全部的业务状态一致,也就意味着需要所有的本地事务状态一致,这在我们之前的学习中肯定是不具备的,如何做到跨服务、跨数据源的事务一致性将是本章节的重点学习内容。
409 0
|
存储 关系型数据库 MySQL
详解 Mysql 分布式事务 XA(跨数据库事务)
详解 Mysql 分布式事务 XA(跨数据库事务)
|
6月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
470 2

热门文章

最新文章