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