TX-LCN由兩大模塊組成, TxClient、TxManager,TxClient作為模塊的依賴框架,提供TX-LCN的標准支持,TxManager作為分布式事務的控制方。事務發起方或者參與方都由TxClient端來控制。
原理圖:

核心步驟
-
創建事務組
是指在事務發起方開始執行業務代碼之前先調用TxManager創建事務組對象,然后拿到事務標識GroupId的過程。 -
加入事務組
添加事務組是指參與方在執行完業務方法以后,將該模塊的事務信息通知給TxManager的操作。 -
通知事務組
是指在發起方執行完業務代碼以后,將發起方執行結果狀態通知給TxManager,TxManager將根據事務最終狀態和事務組的信息來通知相應的參與模塊提交或回滾事務,並返回結果給事務發起方。
LCN事務模式:
原理:LCN模式是通過代理Connection的方式實現對本地事務的操作,然后在由TxManager統一協調控制事務。當本地事務提交回滾或者關閉連接時將會執行假操作,該代理的連接將由LCN連接池管理。
模式特點:該模式對代碼的嵌入性為低。
該模式僅限於本地存在連接對象且可通過連接對象控制事務的模塊。
該模式下的事務提交與回滾是由本地事務方控制,對於數據一致性上有較高的保障。
該模式缺陷在於代理的連接需要隨事務發起方一共釋放連接,增加了連接占用的時間。
該模式僅限於本地存在連接對象且可通過連接對象控制事務的模塊。
該模式下的事務提交與回滾是由本地事務方控制,對於數據一致性上有較高的保障。
該模式缺陷在於代理的連接需要隨事務發起方一共釋放連接,增加了連接占用的時間。
TCC事務模式:
原理: TCC事務機制相對於傳統事務機制(X/Open XA Two-Phase-Commit),其特征在於它不依賴資源管理器(RM)對XA的支持,而是通過對(由業務系統提供的)業務邏輯的調度來實現分布式事務。主要由三步操作,Try: 嘗試執行業務、 Confirm:確認執行業務、 Cancel: 取消執行業務。
模式特點:該模式對代碼的嵌入性高,要求每個業務需要寫三種步驟的操作。
該模式對有無本地事務控制都可以支持使用面廣。
數據一致性控制幾乎完全由開發者控制,對業務開發難度要求高。
該模式對有無本地事務控制都可以支持使用面廣。
數據一致性控制幾乎完全由開發者控制,對業務開發難度要求高。
TXC事務模式:
原理:TXC模式命名來源於淘寶,實現原理是在執行SQL之前,先查詢SQL的影響數據,然后保存執行的SQL快走信息和創建鎖。當需要回滾的時候就采用這些記錄數據回滾數據庫,目前鎖實現依賴redis分布式鎖控制。
模式特點:該模式同樣對代碼的嵌入性低。
該模式僅限於對支持SQL方式的模塊支持。
該模式由於每次執行SQL之前需要先查詢影響數據,因此相比LCN模式消耗資源與時間要多。
該模式不會占用數據庫的連接資源。
該模式僅限於對支持SQL方式的模塊支持。
該模式由於每次執行SQL之前需要先查詢影響數據,因此相比LCN模式消耗資源與時間要多。
該模式不會占用數據庫的連接資源。