分布式事務原理
xa協議三階段提交
mq事務
tcc事務 補償操作
參考鏈結
分布式事務是為了解決分布式系統(微服務)中不通節點資料不一致的問題。
分布式系統中,對同一業務的操作分布在不通的系統中,在單體系統的事務處理滿足不了分布式系統的發展。
例如:購物系統中的訂單和庫存在不同的微服務中。
2pc 兩階段提交
3pc 三階段提交 都屬於oracle提出的xa協議
tcc事務 try commit cancel
mq事務 利用訊息中介軟體來完成事務的後一半更新 實現系統的一致性。
xa協議中包含事務的參與者和 事務的協調者
如果所有的參與者節點都向協調者作了「vote commit」的反饋的話,那麼此時流程就會進入第二個階段了。
所有節點返回確認資訊,協調者向所有參與者節點發出"全域性確認通知(global_commit)";各節點完成本地事務提交,並將結果(ack)訊息返回給協調者,協調者向呼叫方反饋分布式事務處理完成結果。
xa協議遵循強一致性。在事務執行過程中,各節點占用資料庫資源,只有當所有節點準備完畢,才會釋放資源。有著明顯的效能問題
事務協調者是xa模型的核心,如果他掛掉,參與者收不到提交或則回滾的訊息,會一直處於中間狀態 本地事務掛起。
在xa協議的第二階段,如果網路通訊問題,一部分參與者受到提交訊息,一部分沒收到提交資訊,導致節點之間資料的不一致。
三階段提交在兩階段提交的基礎上進行了的cancommit階段,並且引入了超時機制。一旦事務參與者超時沒收到協調者的命令,會自動提交。但是這只解決了協調者單點故障,沒有解決效能問題和資料一致性問題
利用訊息中介軟體完成事務的後一半提交,實現系統的一致性,避免了了xa協議的效能問題。
try commit cancel 其邏輯類似於xa的兩階段提交,但是在**層面進行人為實現。
核心:針對每個事務操作都要註冊乙個與之對應的確認和補償。
- try階段:針對業務系統做檢測
- confirm階段:確認執行
- cancel階段:取消執行業務
tcc事務和兩階段提交的處理流程比較相似,不過2pc通常在跨庫的db層面,
tcc本質是個應用層面的2pc,需要通過業務邏輯來實現。
優點:可以讓應用自定義資料庫操作粒度,從而降低鎖衝突,提高吞吐量。
缺點: 嵌入性強;
業務每個分支都需要try confirm cancel三個操作,邏輯繁複;
實現難度大,需要根據網路狀態,系統故障不通情況實現不通回滾策略
為滿足資料一致性,cancel和confirm介面還需要實現冪等
![在這裡插入描述](
我是沒看懂 協調服務怎麼工作的
什麼是分布式事務
分布式事務深入
分布式 分布式事務
是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...
分布式事務 分布式事務的實現
如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...
分布式之分布式事務
被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...