天天看點

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

文章目錄

  • TCC 基本原理
    • 第一階段 Try
    • 第二階段 Confirm
    • 第二階段 Cancel
    • 多個事務并發的情況
  • Seata TCC事務模式
項目源碼: https://gitee.com/benwang6/seata-samples

TCC 基本原理

TCC 與 Seata AT 事務一樣都是兩階段事務,它與 AT 事務的主要差別為:

  • TCC 對業務代碼侵入嚴重

    每個階段的資料操作都要自己進行編碼來實作,事務架構無法自動處理。

  • TCC 效率更高

    不必對資料加全局鎖,允許多個事務同時操作資料。

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

第一階段 Try

以賬戶服務為例,當下訂單時要扣減使用者賬戶金額:

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

假如使用者購買 100 元商品,要扣減 100 元。

TCC 事務首先對這100元的扣減金額進行預留,或者說是先當機這100元:

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

第二階段 Confirm

如果第一階段能夠順利完成,那麼說明“扣減金額”業務(分支事務)最終肯定是可以成功的。當全局事務送出時, TC會控制目前分支事務進行送出,如果送出失敗,TC 會反複嘗試,直到送出成功為止。

當全局事務送出時,就可以使用當機的金額來最終實作業務資料操作:

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

第二階段 Cancel

如果全局事務復原,就把當機的金額進行解凍,恢複到以前的狀态,TC 會控制目前分支事務復原,如果復原失敗,TC 會反複嘗試,直到復原完成為止。

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

多個事務并發的情況

多個TCC全局事務允許并發,它們執行扣減金額時,隻需要當機各自的金額即可:

分布式事務(六)Seata TCC模式-TCC模式介紹TCC 基本原理Seata TCC事務模式

Seata TCC事務模式

Seata 支援 TCC 事務模式,與 AT 模式相同的,也需要以下元件來支援全局事務的控制:

  • TC 事務協調器
  • TM 事務管理器
  • RM 資料總管

下一節,我們還是以訂單業務為例,來示範 Seata 如何實作 TCC 事務。

項目源碼: https://gitee.com/benwang6/seata-samples

繼續閱讀