分布式事务的管理--atomikos

Posted Fly , Mason ! ! !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式事务的管理--atomikos相关的知识,希望对你有一定的参考价值。

在一些业务场景及技术架构下,跨库的事务时不可避免的,这时候如何统一管理事务,保证事务的强一致性是整个系统稳定、可用基石。一些中间件如tuxedo、cics就是凭借这个能力占据了金融、电信、银行等很大的市场,捞取了大量的利润。

在java中,atomikos作为一个开源项目(有商业版本),提供了分布式事务管理的能力。本文主要验证一下简单的业务场景,来测试一下atomikos管理下的分布式的事务一致性。

 

 

首先在一台机器准备两个mysql实例

1 下载安装第一个实例 http://mirrors.sohu.com/mysql/

mysqld -install net start mysql mysql -u root -p

2 安装第二个实例复制一份mysql目录 修改my-default.ini的端口号等信息: basedir = D:/Program Files/MySQL/MySQL Server datadir = D:/Program Files/MySQL/MySQL Server/data port = 3307

运行 mysqld --install mysql2 --defaults-file="D:\Program Files\MySQL\MySQL Server\bin\my-default.ini" net start mysql2

在两个库分别建立一个数据表:


DROP TABLE IF EXISTS account; CREATE TABLE account ( UserId int(11) NOT NULL, Money bigint(20) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Records of account


INSERT INTO account VALUES (‘123‘, ‘0‘);

然后实现代码逻辑:

代码逻辑是实现随机的从1库转账一定金额到2库,或者从2库转账到1库。

在转账过程中,会按照一定概率发生异常,回滚整个事务。 运行一段时间后,查看两个库的金额是否能够对账正确。

 

具体代码见github:

https://github.com/wfb29/atomikos-test

以上是关于分布式事务的管理--atomikos的主要内容,如果未能解决你的问题,请参考以下文章

Atomikos实现分布式事物管理

使用springboot+jta+atomikos 分布式事物管理

spring事务隔离级别传播行为以及spring+mybatis+atomikos实现分布式事务管理

Spring事务隔离级别与传播机制,spring+mybatis+atomikos实现分布式事务管理

Spring事务隔离级别与传播机制,spring+mybatis+atomikos实现分布式事务管理

spring3.0+Atomikos 构建jta的分布式事务