15
回答
java 跨库事务解决方案
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
求助各位大神,我现在遇到java中的跨库事务问题,请问有没有什么好的解决方案?
<无标签>
举报
吴睿
发帖于3年前 15回/2K+阅
共有15个答案 最后回答: 3年前
对并发量不大的系统jta就可以了,但是分布式事务对性能的消耗太大了。
如果想并发量很大的系统,就要考虑事务补偿了。
这个一般事务控制在service 接口类当中吧,然后配一个spring aop 切面事务,事务颗粒配备成方法级的。
--- 共有 1 条评论 ---
吴睿谢谢你的提议 我试一试!开始我配置多数据源的时候只有一个数据源的事务生效。单独使用的时候可以正常使用,但是如果两个事物混用就只有一个生效了。 3年前 回复

引用来自“Brin想写程序”的评论

应用层面解决吧。。

保持多个数据库 链接,用一个连接的列表,不commit,要commit同时commit,否则一起rollback.

就是2阶段提交了, 之前用 zookeeper 解决过这个问题, 可以参考文档http://zookeeper.apache.org/doc/r3.3.5/recipes.htm中得Two-phased Commit

难道你不知道有XA/JTA这东西吗?  再说了数据库设计到跨库了,也真够失败的

--- 共有 2 条评论 ---
菊花爆满山夸库 和 设计失败 有什么关系。。。好扯蛋的说法 3年前 回复
吴睿我现在就是用的jta 是通过spring jpa hibernate Atomikos 和tomcat 配合使用的。 我看了有博文说:这种全局事务会影响 性能和程序扩展性。还有就是如果节点多了,其中一个节点不正常就会全面崩溃。请教各位还有什么好的处理方式 ​ 3年前 回复
分布式事务方案,1、如果是JBoss、Weblogic、Websphere,可以通过配置就可以实现;2、如果是在系统上集成的话,使用Atomikos框架,支持Spring
--- 共有 1 条评论 ---
吴睿请问在jboss中有什么具体配置方案吗? 3年前 回复

引用来自“jobet”的评论

两种方案:

1、分布式事务 jta

2、事务补偿 

说的完全正确,只是这两个实现起来都不容易。如果没有足够的技术积累和精力,还是建议楼主修改设计。分布式事务这块,我所知道的也就是阿里做的还行,其它公司都不尽如人意

应用层面解决吧。。

保持多个数据库 链接,用一个连接的列表,不commit,要commit同时commit,否则一起rollback.

顶部