分佈式事物 - 基於RPC調用 - TCC模式

前提

  • 前端業務(主服務)能夠以同步或異步調用TCC框架,或者TCC框架自己就是同步異步兼備的.
  • 假定TCC框架擁有斷電後的自動恢復能力.同時,在下游業務出現無限失敗的狀況下,也會進行無限的重試,以達到最終一致

正式開始

正常流程

一切安好.
能夠觀察到,confirm操做徹底交由TCC調用.在同步狀態下,不管最終成功與失敗,可能出現前端等待時間過長的問題.
我的認爲,try階段,也能夠直接註冊到TCC中,並徹底交由TCC框架調用,客戶端只訪問其保留的接口.前端

預留失敗

因下游業務或網絡問題致使了預留失敗.
與正常流程相同,不過此時調用了TCC的cancel操做git

總結

  • 實施TCC方案時,最好在立項伊始就要作好相應的數據庫設計與接口定義方案.能在數據庫中保存"預留"數據,同時相關代碼提供"預留","確認","取消"方法的接口定義以用做實現.
  • 總體來講,業務級人員減少了業務開發難度(雖然工做量變大了).同時將重心轉移到了"TCC框架"的實現.它須要保證高可用,數據安全,冪等,甚至須要能處理代碼迭代引發的版本差別的問題
  • 由於設計到事物管理問題,其框架開發難度也變大了,能夠使用開源框架如:
    1. EasyTransaction
    2. ByteTCC
    3. ...
相關文章
相關標籤/搜索