分佈式事務Seata的at、tcc、saga模式

一、Seata 是什麼?

Seata 是一款開源的分佈式事務解決方案,致力於提供高性能和簡單易用的分佈式事務服務。Seata 將爲用戶提供了 AT、TCC、SAGA 和 XA 事務模式,爲用戶打造一站式的分佈式解決方案。

AT 模式

前提
基於支持本地 ACID 事務的關係型數據庫。
Java 應用,通過 JDBC 訪問數據庫。
整體機制
兩階段提交協議的演變:

一階段:業務數據和回滾日誌記錄在同一個本地事務中提交,釋放本地鎖和連接資源。

二階段:

提交異步化,非常快速地完成。
回滾通過一階段的回滾日誌進行反向補償。

TCC 模式

在這裏插入圖片描述一個分佈式的全局事務,整體是 兩階段提交 的模型。全局事務是由若干分支事務組成的,分支事務要滿足 兩階段提交 的模型要求,即需要每個分支事務都具備自己的:

一階段 prepare 行爲
二階段 commit 或 rollback 行爲
Overview of a global transaction

根據兩階段行爲模式的不同,我們將分支事務劃分爲 Automatic (Branch) Transaction Mode 和 Manual (Branch) Transaction Mode.

AT 模式(參考鏈接 TBD)基於 支持本地 ACID 事務 的 關係型數據庫:

一階段 prepare 行爲:在本地事務中,一併提交業務數據更新和相應回滾日誌記錄。
二階段 commit 行爲:馬上成功結束,自動 異步批量清理回滾日誌。
二階段 rollback 行爲:通過回滾日誌,自動 生成補償操作,完成數據回滾。
相應的,TCC 模式,不依賴於底層數據資源的事務支持:

一階段 prepare 行爲:調用 自定義 的 prepare 邏輯。
二階段 commit 行爲:調用 自定義 的 commit 邏輯。
二階段 rollback 行爲:調用 自定義 的 rollback 邏輯。
所謂 TCC 模式,是指支持把 自定義 的分支事務納入到全局事務的管理中。

Saga 模式
Saga模式是SEATA提供的長事務解決方案,在Saga模式中,業務流程中每個參與者都提交本地事務,當出現某一個參與者失敗則補償前面已經成功的參與者,一階段正向服務和二階段補償服務都由業務開發實現。

Saga模式示意圖

在這裏插入圖片描述
理論基礎:Hector & Kenneth 發表論⽂ Sagas (1987)

適用場景:
業務流程長、業務流程多
參與者包含其它公司或遺留系統服務,無法提供 TCC 模式要求的三個接口
優勢:
一階段提交本地事務,無鎖,高性能
事件驅動架構,參與者可異步執行,高吞吐
補償服務易於實現
缺點:
不保證隔離性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章