TCC(Try-Confirm-Cancel)又被稱補償事務,TCC與2PC的思想很相似,事務處理流程也很相似,但2PC是應用于在DB層面,TCC則可以理解為在應用層面的2PC,是需要我們編寫業務邏輯來實現。
TCC它的核心思想是:"針對每個操作都要注冊一個與其對應的確認(Try)和補償(Cancel)"。
還拿下單扣庫存解釋下它的三個操作:
Try階段:下單時通過Try操作去扣除庫存預留資源。
Confirm階段:確認執行業務操作,在只預留的資源基礎上,發起購買請求。
Cancel階段:只要涉及到的相關業務中,有一個業務方預留資源未成功,則取消所有業務資源的預留請求。
TCC的缺點:
應用侵入性強:TCC由于基于在業務層面,至使每個操作都需要有try、confirm、cancel三個接口。
開發難度大:代碼開發量很大,要保證數據一致性confirm和cancel接口還必須實現冪等性。