分布式事務處理之TCC模型


TCC模型

一、什么是TCC模型

TCC是try confirm cancel的單詞首字母縮寫,是一個類似2pc理論的柔性分布式事務處理的解決方案

ps:

1.什么是分布式事務處理?

  分布式系統是把一個應用系統拆分解到各個塊進行獨立運行部署,當我們的部署服務在各個區塊執行的時候,需要服務與服務之間進行遠程協作完成事務的操作,這種通過網絡連接完成分布式系統的事務處理任務的事務,稱為分布式事務。

2.什么是2pc理論?

  2pc是指兩階段提交協議,就是把整個事務流程分為兩個部分,一部分是准備階段(Prepare)另一部分是提交階段(Commit)

  原理:

  准備階段:開始,事務的管理者會給每個參與者發送Prepare的消息,並寫入本地數據日志,但是此時事務並沒有提交。

  提交階段:當事務管理器收到參與者執行失敗、或者執行超時了的信號時,事務管理器會直接給每個參與者發送回滾信號(RollBack);否則,事務管理器將對每個參與者發送提交的消息;參與者則根據事務管理器的指示進行提交信息或者進行回滾操作,並且在最后階段要釋放之前占有的資源。

二、TCC模型核心

如圖:

 

 Try操作:對業務進行檢查,比如檢查數據庫資源是否充足,然后在業務隔離層隔離業務活動需要的資源;

Confirm操作:這個操作的前提是Try操作成功執行,這一步是執行業務,並且無需檢查資源情況,直接使用Try操作隔離預留的資源;

Cancel操作:執行這個操作是因為Try操作失敗,釋放掉Try操作預留的資源;

三、TCC模型原理

TCC模型主要分為三個部分:主服務、從服務和全局事務管理器

 

 

原理:

  服務與服務之間通過請求/響應的同步通信機制進行交互;

  主服務是提供對外接口,接收客戶端請求,並且發起一個全局的業務活動並編排所有的事務參與者;

  從服務是全局事務的參與者,提供Try、Confirm、Cancel三個接口,通過調用這些接口來使從服務的事務完成;

  全局事務管理器是整個分布式事務的協調者,記錄着全局事務管理的執行日志和事務狀態,在Try操作階段完成后根據成功與否調動Confirm或者Cancel接口,全局事務管理器是一個單獨的服務。

四、TCC模型異常處理

通常有三種異常處理:空回滾、冪等、懸掛

  空回滾:在沒有執行Try 操作的情況下,調用 Cancel 操作,Cancel 方法需要識別出這是一個空回滾,然后直接返回成功;

  主要是因為分支事務所在的服務異常或網絡異常,進而使調用記錄為失敗;也就是說,如果執行了Try操作就正常進行回滾,如果沒有執行Try操作,那就是執行空回滾;執行了Try操作事務日志里會存在記錄,Cancel操作可以根據有無記錄判斷是否為空回滾。

  冪掛:確保 Confirm提交重試機制不會引發數據不一致,要求 TCC  Try、Confirm 和 Cancel 接口保證冪等,這樣不會重復使用或者釋放資源。

  懸掛: 就是Cancel 操作比 Try 操作先執行;

  在全局事務管理器調用分支事務 的Try 操作時,是先注冊分支事務,再執行全局事務管理器調用,如果此時全局事務管理器調用的網絡發生擁堵,通常全局事務管理器調用是有超時時間的,全局事務管理器超時以后,就會回滾該分布式事務,可能回滾完成之后,全局事務管理器請求才到達參與者真正執行,而一個 Try 方法預留的業務資源,只有該分布式事務才能使用,則Try操作留出來的資源無法被利用造成懸掛。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM