Tx-LCN 5.0 開始支援三種事務模式,分別是:LCN、TCC、TXC 模式。 每種模式在實際使用時有著自己對應的註解。
LCN:@LcnTransaction
TCC:@TccTransaction
TXC:@TxcTransaction
1.LCN 模式
1.1 原理介紹
LCN 模式是通過代理 JDBC 中 Connection 的方式實現對本地事務的操作,然後在由TxManager 統一協調控制事務。當本地事務提交回滾或者關閉連線時將會執行假操作,該代 理的連線將由 LCN 連線池管理
1.2 模式特點
該模式對程式碼的嵌入性低。 該模式僅限於本地存在連線物件且可通過連線物件控制事務的模組。 該模式下的事務提交與回滾是由本地事務方控制,對於資料一致性上有較高的保障 該模式缺陷在於代理的連線需要隨事務發起方一同釋放連線,增加了連線佔用的時間 總結:LCN 模式適合能用 JDBC 連線的所有支援事務的資料庫
2.TCC 事務模式
2.1 原理介紹
TCC 事務機制相對於傳統事務機制(X/Open XA Two-Phase-Commit),其特徵在於它不依賴資源管理器(RM)對 XA 的支援,而是通過對(由業務系統提供的)業務邏輯的排程來實現分散式事務。主要由三步操作,Try: 嘗試執行業務、 Confirm:確認執行業務、 Cancel: 取消執行業務
2.2 程式碼說明
每個 TCC 事務處理方法可以額外包含 confirmXxx 和 cancelXxx 的方法(),出現失敗問題,需要在 cancel 中通過業務邏輯把改變的資料還原回來 confirmXxx 和 cancelXxx 兩個方法會由 TxManager 進行統一協調呼叫 confirmXxx 和 cancelXxx 也可以在@TccTransaction 註解中通過屬性明確指定
@TccTransaction
public String demo ( ) {
}
public void confirmDemo ( ) {
}
public void cancelDemo ( ) {
}
2.3 模式特點
該模式對程式碼的嵌入性高,要求每個業務需要寫二個以上步驟的操作 該模式對有無本地事務控制都可以支援,使用面更廣 資料一致性控制幾乎完全由開發者控制,對業務開發難度要求高 總結:Tcc 模式應用於所有不支援 XA 事務的軟體。例如:redis,mongodb 等
3.TXC 事務模式
3.1 原理介紹
TXC 模式命名來源於淘寶,實現原理是在執行 SQL 之前,先查詢 SQL 的影響資料,然後儲存執行的 SQL 資訊和建立鎖。當需要回滾的時候就採用這些記錄資料回滾資料庫,目前鎖實現依賴 redis 分散式鎖控制。(在使用 lcn 時必須要配置 redis 引數)
3.2 模式特點
該模式同樣對程式碼的嵌入性低 該模式僅限於對支援 SQL 方式的模組支援 該模式由於每次執行 SQL 之前需要先查詢影響資料,因此相比 LCN 模式消耗資源與時間要多 該模式不會佔用資料庫的連線資源 總結:只能用在支援 SQL 的資料庫。對資源消耗較多。建議使用 LCN 模式