開源分佈式事務框架 Dog TCC 初探

源碼地址:https://github.com/sunpengChina/dog

Dog Tcc是什麼?

  • DogTcc是一個2019年3月開源的,基於註解的高性能 分佈式事務 TCC框架。感謝於他的框架設計,可達到2ms/事務,支持鏈式調用,損耗線性增長。

框架特性

  • 高速,事務發起方損耗 2.15ms每事務,事務被調方損耗 2.13ms每事務
  • 損耗隨事務鏈變寬[A 調用B,C,D,E…],或者變深[A 調用B,B調用C,C調用D…],線性增長
  • 對原有服務無侵入,標註是基於方法而不是RPC接口的,可以在需要回滾的最小單位方法上添加標註
  • 框架自動實現冪等
  • 框架實現分佈式環境下的可重入鎖
  • 易用性高,使用者通過標註,和實現指定的回滾和確認接口,即可集成框架
  • 節點無本地狀態,部署多臺即可實現集羣,無需多餘配置
  • 和協議無關,使用者只要實現事務的協議注入即可集成到框架中,可參照Spring模塊
  • 和消息服務器無關,框架提供了消息服務接口,使用者可使用其他消息中間件,可參考zookeeper模塊
  • 支持事務鏈,事務鏈長度不影響事務性能
  • 故障恢復,任何服務節點丟失都不會影響最終一致性,丟失節點的事務會被同類節點託管,或者在丟失節點啓動時候恢復
  • 錯誤通知,對於極端情況,Confirm或者Cancel失敗,系統會通過第三方接口通知,用戶需要實現該接口定義的方法

性能報告

  • 測試機配置

    • Cpu

    cpu family : 6
    model : 63
    model name : Intel® Xeon® CPU E5-2620 v3 @ 2.40GHz

    • 操作系統

    Linux version 3.10.0-327.el7.x86_64

    • 內存

    4G

  • 啓動配置

    • zookeeper 默認配置啓動

    • 註冊中心 和 Server1 Server2 Server3

      啓動參數:-Xms256m -Xmx512m

  • 測試用例 [見Server1工程的Server1ApplicationController]

    • 鏈式調用:Server1 調用 Server2 ,Server3 ; Server2 調用 Server3

    • 單次調用:Server1 調用 Server3

    • 爲了降低業務對框架性能測試的影響,Server2 和 Server3 的業務代碼爲空。

    • Server2 中有一個Call單元

      Call(有回滾需求的方法)定義請見: https://github.com/sunpengChina/dog/wiki/DogTcc-architecture

    • Server3 中有兩個Call單元

  • 性能報告

    • [1]非線程5000次非TCC事務調用: 11325ms
    • [2]非線程5000次TCC事務單次調用: 34133ms
    • [3]10線程,各500次循環,共5000次鏈式,TCC事務調用:49826ms
    • [4]10線程,各500次循環,共5000次鏈式,非TCC事務調用:6458ms
    • [5]10線程,各500次循環,共5000次,TCC事務單次調用:35566ms
    • [6]10線程,各500次循環,共5000次,非TCC事務單次調用:2884ms
  • 結論

    設tcc單次調用,發起方損耗爲x (ms),call損耗爲y (ms)

    • 根據性能報告的[3]和[4],可得 x + 3y = (49826 - 6458)/5000 = 8.67 ms
    • 根據性能報告的[5]和[6], 可得 x + 2y = (35566-2884)/5000 = 6.52 ms
    • 可得tcc發起方單次損耗爲:2.25 ms ; Call方損耗爲 2.13 ms

快速開始

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章