分佈式事務的管理--atomikos

在一些業務場景及技術架構下,跨庫的事務時不可避免的,這時候如何統一管理事務,保證事務的強一致性是整個系統穩定、可用基石。一些中間件如tuxedo、cics就是憑藉這個能力佔據了金融、電信、銀行等很大的市場,撈取了大量的利潤。java

在java中,atomikos做爲一個開源項目(有商業版本),提供了分佈式事務管理的能力。本文主要驗證一下簡單的業務場景,來測試一下atomikos管理下的分佈式的事務一致性。mysql

 

 

首先在一臺機器準備兩個mysql實例git

1 下載安裝第一個實例 http://mirrors.sohu.com/mysql/github

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

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;atom


-- Records of accountcode


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

而後實現代碼邏輯:

代碼邏輯是實現隨機的從1庫轉帳必定金額到2庫,或者從2庫轉帳到1庫。

在轉帳過程當中,會按照必定機率發生異常,回滾整個事務。 運行一段時間後,查看兩個庫的金額是否可以對帳正確。

 

具體代碼見github:

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

相關文章
相關標籤/搜索