分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定

互联网应用架构:专注编程教学,架构,JAVA,Python,微服务,机器学习等领域,欢迎关注,一起学习。

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第1张图片

前言

最近有个项目,里面涉及到多个数据源的操作,按照以前的做法采用MQ来做最终一致性,但是又觉得繁琐些,项目的量能其实也不大很小,想来想去最终采用Atomikos来实现。

XA是啥

在做Atomikos之前,我们先来了解一下什么是XA。XA是由X/Open组织提出的分布式事务的一种协议(或者称之为分布式架构)。它主要定义了两部分的管理器,全局事务管理器及资源管理器。在XA的设计理念中,把不同资源纳入到一个事务管理器进行统一管理,例如数据库资源,消息中间件资源等,从而进行全部资源的事务提交或者取消,目前主流的数据库,消息中间件都支持XA协议。

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第2张图片

JTA又是啥

上面讲完XA协议,我们来聊聊JTA,JTA叫做Java Transaction API,它是XA协议的JAVA实现。目前在JAVA里面,关于JTA的定义主要是两部分

1、事务管理器接口-----javax.transaction.TransactionManager

2、资源管理器接口-----javax.transaction.xa.XAResource

在一般应用采用JTA接口实现事务,需要一个外置的JTA容器来存储这些事务,像Tomcat。今天我们要讲的是Atomikos,它是一个独立实现了JTA的框架,能够在我们的应用服务器中运行JTA事务。

接下来我们直接进入到主题,在一个微服务应用中,针对多数据源的时候如何实现分布式事务。

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第3张图片

基础包引入

配置第一个数据源


分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第4张图片

配置第二个数据源


分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第5张图片

配置数据源管理器


分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第6张图片

配置常量


分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第7张图片

配置信息

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第8张图片

运行测试

我们定义了一个接口并实现该接口,定义了一个test方法,根据不同情况手动抛出异常,在运行后可以直接看到数据并没有被插入到数据中


分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定_第9张图片

总结

实验结果测试没问题,这里就不贴出来,有兴趣的同学可以通过以下获取源码

h ttps://gitee.com/lemeno/boots

--END--

作者:@互联网应用架构

原创作品,抄袭必究

如需要源码,转发,关注后私信我

部分图片或代码来源网络,如侵权请联系删除,谢谢!

你可能感兴趣的:(分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定)