? TCC事務(wù)機(jī)制相對于傳統(tǒng)事務(wù)機(jī)制(X/Open XA Two-Phase-Commit),其特征在于它不依賴資源管理器(RM)對XA的支持薛匪,而是通過對(由業(yè)務(wù)系統(tǒng)提供的)業(yè)務(wù)邏輯的調(diào)度來實(shí)現(xiàn)分布式事務(wù)逸尖。
? 對于業(yè)務(wù)系統(tǒng)中一個(gè)特定的業(yè)務(wù)邏輯S冷溶,其對外提供服務(wù)時(shí),必須接受一些不確定性苗胀,即對業(yè)務(wù)邏輯執(zhí)行的一次調(diào)用僅是一個(gè)臨時(shí)性操作基协,調(diào)用它的消費(fèi)方服務(wù)M保留了后續(xù)的取消權(quán)陷揪。如果M認(rèn)為全局事務(wù)應(yīng)該rollback悍缠,它會要求取消之前的臨時(shí)性操作,這將對應(yīng)S的一個(gè)取消操作趴拧;而當(dāng)M認(rèn)為全局事務(wù)應(yīng)該commit時(shí),它會放棄之前臨時(shí)性操作的取消權(quán)兄渺,這對應(yīng)S的一個(gè)確認(rèn)操作。每一個(gè)初步操作口叙,最終都會被確認(rèn)或取消。因此疟呐,針對一個(gè)具體的業(yè)務(wù)服務(wù),TCC事務(wù)機(jī)制需要業(yè)務(wù)系統(tǒng)提供三段業(yè)務(wù)邏輯:初步操作Try拷沸、確認(rèn)操作Confirm撞芍、取消操作Cancel。
1. 初步操作(Try)
TCC事務(wù)機(jī)制中的業(yè)務(wù)邏輯(Try),從執(zhí)行階段來看,與傳統(tǒng)事務(wù)機(jī)制中業(yè)務(wù)邏輯相同。但從業(yè)務(wù)角度來看塘秦,卻不一樣。TCC機(jī)制中的Try僅是一個(gè)初步操作,它和后續(xù)的確認(rèn)一起才能真正構(gòu)成一個(gè)完整的業(yè)務(wù)邏輯〖酪可以認(rèn)為
1
[傳統(tǒng)事務(wù)機(jī)制]的業(yè)務(wù)邏輯 = [TCC事務(wù)機(jī)制]的初步操作(Try) + [TCC事務(wù)機(jī)制]的確認(rèn)邏輯(Confirm)携茂。
TCC機(jī)制將傳統(tǒng)事務(wù)機(jī)制中的業(yè)務(wù)邏輯一分為二窃爷,拆分后保留的部分即為初步操作(Try)邑蒋;而分離出的部分即為確認(rèn)操作(Confirm)姓蜂,被延遲到事務(wù)提交階段執(zhí)行。
TCC事務(wù)機(jī)制以初步操作(Try)為中心的医吊,確認(rèn)操作(Confirm)和取消操作(Cancel)都是圍繞初步操作(Try)而展開钱慢。因此,Try階段中的操作卿堂,其保障性是最好的束莫,即使失敗,仍然有取消操作(Cancel)可以將其不良影響進(jìn)行回撤草描。
2. 確認(rèn)操作(Confirm)
確認(rèn)操作(Confirm)是對初步操作(Try)的一個(gè)補(bǔ)充览绿。當(dāng)TCC事務(wù)管理器決定commit全局事務(wù)時(shí),就會逐個(gè)執(zhí)行初步操作(Try)指定的確認(rèn)操作(Confirm)穗慕,將初步操作(Try)未完成的事項(xiàng)最終完成饿敲。
3. 取消操作(Cancel)
取消操作(Cancel)是對初步操作(Try)的一個(gè)回撤。當(dāng)TCC事務(wù)管理器決定rollback全局事務(wù)時(shí)逛绵,就會逐個(gè)執(zhí)行初步操作(Try)指定的取消操作(Cancel)怀各,將初步操作(Try)已完成的事項(xiàng)全部撤回。
在傳統(tǒng)事務(wù)機(jī)制中术浪,業(yè)務(wù)邏輯的執(zhí)行和事務(wù)的處理瓢对,是在不同的階段由不同的部件來完成的:業(yè)務(wù)邏輯部分訪問資源實(shí)現(xiàn)數(shù)據(jù)存儲,其處理是由業(yè)務(wù)系統(tǒng)負(fù)責(zé)胰苏;事務(wù)處理部分通過協(xié)調(diào)資源管理器以實(shí)現(xiàn)事務(wù)管理硕蛹,其處理由事務(wù)管理器來負(fù)責(zé)。二者沒有太多交互的地方硕并,所以法焰,傳統(tǒng)事務(wù)管理器的事務(wù)處理邏輯,僅需要著眼于事務(wù)完成(commit/rollback)階段鲤孵,而不必關(guān)注業(yè)務(wù)執(zhí)行階段壶栋。
而在TCC事務(wù)機(jī)制中的業(yè)務(wù)邏輯處理和事務(wù)處理,其關(guān)系就錯(cuò)綜復(fù)雜:業(yè)務(wù)邏輯(Try/Confirm/Cancel)階段涉及所參與資源事務(wù)的commit/rollback普监;全局事務(wù)commit/rollback時(shí)又涉及到業(yè)務(wù)邏輯(Try/Confirm/Cancel)的執(zhí)行贵试。