TCC 事務(wù)

簡(jiǎn)介

TCC是一種常見(jiàn)的分布式事務(wù)機(jī)制,是“Try-Confirm-Cancel”三個(gè)單詞的縮寫(xiě),是有數(shù)據(jù)庫(kù)專家Pat Helland在2007年撰寫(xiě)的論文《Life beyond Distributed Transactions: An Apostate’s Opinion》中提出。

TCC組成

TCC對(duì)原有業(yè)務(wù)侵入性較強(qiáng),要求業(yè)務(wù)處理過(guò)程必須拆分問(wèn)“預(yù)留業(yè)務(wù)資源”和“確認(rèn)/釋放消費(fèi)資源”兩個(gè)子過(guò)程,就如同TCC的名字一樣,它分為三個(gè)階段

  1. Try
    嘗試執(zhí)行階段,完成所有業(yè)務(wù)可執(zhí)行性的檢查(保障一致性),并且預(yù)留好全部需要用到的業(yè)務(wù)資源(保障隔離性)
  2. Confirm
    確認(rèn)執(zhí)行階段,不進(jìn)行任何業(yè)務(wù)檢查,直接使用Try階段準(zhǔn)備的資源來(lái)完成業(yè)務(wù)處理。Confirm階段可能會(huì)重復(fù)執(zhí)行,因此本階段執(zhí)行的操作需要具備冪等性
  3. Cancel
    取消執(zhí)行階段,釋放Try階段預(yù)留的業(yè)務(wù)資源。Cancel階段可能會(huì)重復(fù)執(zhí)行,因此本階段執(zhí)行的操作也需要具備冪等性

例子

下圖是一個(gè)TCC的一個(gè)基本流程,通常在TCC中會(huì)存在一個(gè)coordinator(協(xié)調(diào)員)用于確保所有參與者確認(rèn)他們的Confirm/Cancel:


  1. 發(fā)起者調(diào)用coordinator開(kāi)始TCC業(yè)務(wù)
  2. 發(fā)起者對(duì)一個(gè)或多個(gè)參與者調(diào)用 POST (Try) 以創(chuàng)建預(yù)訂
  3. 發(fā)起者調(diào)用coordinator確認(rèn)或取消交易
  4. coordinator根據(jù)發(fā)起者對(duì)每個(gè)參與者調(diào)用PUT(Confirm)或 DELETE(Cancel)

框架

seata-java-阿里
seata-go-golang
dtm-golang

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容