ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

分布式事务方案

2021-08-09 10:02:05  阅读:210  来源: 互联网

标签:方案 事务 管理器 数据库 XA 提交 JTA 分布式


XA/二阶段提交

基于XA协议的二阶段提交

所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问各个数据库准备好了吗?如果每个数据库都回 ok,那就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。

这种分布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,不适合高并发的场景。

 

 

JTA

JTA只是Java实现XA事务的一个规范,全称Java事务规范JTA(Java Transaction API) ,我们日常使用的@Transactional。都可以叫JTA事务管理。实际上,JTA是基于XA架构上建模的,

对于Spring来说,可以使用如JBoss之类的应用服务器提供的JTA事务管理器;可以以使用Atomikos、Bitronix等库提供的JTA事务管理器。Spring都有封装,开箱即用。

链式

对于Spring,还有个链式事务管理,就是声明一个ChainedTransactionManager 将所有的数据源事务按顺序放到该对象中,则事务会按相反的顺序来执行事务。事务依次提交后提交的事务若出错不能回滚。

1.start message transaction
2.receive message
3.start database transaction
4.update database
5.commit database transaction
6.commit message transaction   ##当这一步出现错误时,上面的因为已经commit,所以不会rollback

和JTA比起来,更轻量,但只能单机用。

 

标签:方案,事务,管理器,数据库,XA,提交,JTA,分布式
来源: https://www.cnblogs.com/KL2016/p/15117311.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有