一、LCN框架定位
並不生產事務,LCN只是本地事務的協調工。TX-LCN定位於一款事務協調性框架,框架其本身並不操作事務,而是基於對事務的協調從而達到事務一致性的效果。
二、LCN事務模式
LCN模式是通過代理Connection的方式實現對本地事務的操作,然後在由TxManager統一協調控制事務。當本地事務提交回滾或者關閉連接時將會執行假操作,該代理的連接將由LCN連接池管理。
模式特點:
- 該模式對代碼的嵌入性爲低。
- 該模式僅限於本地存在連接對象且可通過連接對象控制事務的模塊。
- 該模式下的事務提交與回滾是由本地事務方控制,對於數據一致性上有較高的保障。
- 該模式缺陷在於代理的連接需要隨事務發起方一起釋放連接,增加了連接佔用的時間。
三、解決方案的例子
在一個分佈式系統下存在多個模塊協調來完成一次業務。那麼就存在一次業務事務下可能橫跨多種數據源節點的可能。TX-LCN框架將可以解決這樣的問題。
例如存在服務模塊A 、B、 C。A模塊是mysql作爲數據源的服務,B模塊是基於redis作爲數據源的服務,C模塊是基於mongo作爲數據源的服務。若需要解決他們的事務一致性就需要針對不同的節點採用不同的方案,並且統一協調完成分佈式事務的處理。
方案:若採用TX-LCN分佈式事務框架,則可以將A模塊採用LCN模式、B/C採用TCC模式就能完美解決。
四、事務控制原理
TX-LCN由兩大模塊組成:TxClient、TxManager。TxClient作爲模塊的依賴框架,提供TX-LCN的標準支持;TxManager作爲分佈式事務的控制方。事務發起方或者參與方都由TxClient端來控制。
原理圖:
五、核心步驟
1、創建事務組:
是指在事務發起方開始執行業務代碼之前先調用TxManager創建事務組對象,然後拿到事務標示GroupId的過程。
2、加入事務組
添加事務組是指事務參與方在執行完業務方法以後,將該模塊的事務信息通知給TxManager的操作。
3、通知事務組
是指在發起方執行完業務代碼以後,將發起方執行結果狀態通知給TxManager,TxManager將根據事務最終狀態和事務組的信息來通知相應的參與模塊提交或回滾事務,並返回結果給事務發起方。