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