前言
之前講解了分布式事務的解決方案之2PC和3PC,今天主要講解事務補償機制(TCC),Let's go !
TCC
TCC 事務補償是基于 2PC 實作的業務層事務控制方案,它是 try, Confirm, Cancel 三個單詞的首字母,含義如下:
- try 檢查及預留業務資源完成提交事務前的檢查,并預留好資源
- confirm 確定執行業務操作,對 try 階段預留的資源正式執行
- cancel 取消執行業務操作,對 try 階段預留的資源進行釋放
將 TCC 機制帶進業務為例:
1、try
下單業務由訂單服務和庫存服務協同完成,在 try 階段訂單服務和庫存服務完成檢查和預留資源
比如:訂單服務檢查當前是否可以滿足提交訂單,庫存服務檢查是否有充足的庫存,并鎖定資源
2、confirm
訂單服務和庫存服務成功完成 try 后開始正式執行資源操作,
比如:訂單服務寫入一條訂單資訊,庫存服務扣除庫存
3、cancel
訂單服務和庫存服務有一方出現失敗則全部取消操作,
比如:訂單服務需洗掉新增的訂單資訊,庫存還原扣除的庫存
特點
TCC 機制優點:
- 最終保證資料一致性,在業務層實作事務控制,靈活性好
TCC 機制缺點:
- 開發成本高,每個事務操作每個參與者都需要實作 try/commit/cancel 三個介面
由于 try,confirm,cancel 三個階段中失敗后要不斷重試,所以 TCC 的 try,confirm,cancel 的三個介面都要實作冪等性,
冪等性
冪等性是指同一個操作無論請求多少次,其結果都相同,
保證冪等性的方案如下:
1、操作前在業務系統進行判斷如果執行過了就不再執行
2、快取所有請求和處理的結果,已經處理的請求則直接回傳結果
3、在資料庫表中添加一個狀態欄位,資料操作時判斷處理狀態
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/301108.html
標籤:其他
