1. 程式人生 > >【分散式事務】GitHub上分散式事務框架壓測效能對比

【分散式事務】GitHub上分散式事務框架壓測效能對比

一、前言

      隨著專案逐步以微服務開發為趨勢,逐漸呈現一個服務對應一個數據庫。從中產生了分散式事務的問題:一個操作先後呼叫不同的服務,要保證服務間的事務一致性,這就是分散式事務解決的問題。

      本次調研,根據github上star排名進行調研,主要調研了hmily和bytetcc兩種分散式事務框架。

二、選型原則

      本次調研主要是根據CAP和BASE理論進行,主要要保證資料的可用性、分割槽容錯性、最終一致性。

三、調研框架介紹

hmily介紹

      Hmily是由碧桂園工程師開發,高效能非同步分散式事務TCC框架。

特點:
1、 採用disruptor框架進行事務日誌的非同步讀寫,與RPC框架的效能毫無差別。
2、 RPC框架支援 : dubbo,motan,springcloud。
3、 支援巢狀事務(Nested transaction support).
4、 採用disruptor框架進行事務日誌的非同步讀寫,與RPC框架的效能毫無差別。
5、 支援SpringBoot-starter 專案啟動,使用簡單。
6、 本地事務儲存支援 : redis,mongodb,zookeeper,file,mysql。
7、 事務日誌序列化支援 :java,hessian,kryo,protostuff。
8、 採用Aspect AOP 切面思想與Spring無縫整合,天然支援叢集。
9、 內建經典的分散式事務場景demo工程,並有swagger-ui視覺化介面可以快速體驗。
10、 非同步confirm 和 cancel,保證資料一致性
11、 使用Guava Cache

Bytetcc介紹

      Bytetcc是由北京新奧集團工程師開發,是一個相容JTA規範的基於TCC機制的分散式事務管理器。目前開發到了第五版,穩定版本為第四版,本次調研為第四版(0.4.x)。

特點:
1、支援Spring容器的宣告式事務管理;
2、支援普通事務、TCC事務、saga事務等事務機制;
3、支援多資料來源、跨應用、跨伺服器等分散式事務場景;
4、支援長事務;
5、支援dubbo服務框架;
6、支援spring cloud;

四、壓測機器情況說明

壓測機

  • Windows 10 企業版
  • 16GB
  • Jmeter

伺服器

伺服器cpu 伺服器記憶體 伺服器網路 壓測機cpu 伺服器cpu配置 伺服器記憶體配置 rds的cpu情況,可能多個 redis的cpu情況,可能多個
4 16 公司內網 4 4核 4G 4 沒有使用

五、壓測報告

在這裡插入圖片描述

在這裡插入圖片描述

hmily壓測報告

正常執行

介面 總數 平均響應時間 中間數 90% 95% 99% 最小響應時間 最大響應時間 錯誤率 吞吐量 每秒接受訊息 每秒傳送傳送訊息 執行緒數
Pay 500000 225 215 347 394 513 13 1374 0 438.7 51.41 87.82 100

      測試結果分析:測試結果發現,吞吐量比較高,但是hmily存在優化的地方,當前版本非同步執行confirm和cancel的速度比較慢,且在高併發情況下存在資料不一致問題:

      例如:
      一共執行10w條資料,目標結果:庫存-10w , 賬戶-10w。但是最終執行結果:庫存和賬戶的剩餘量不一樣。不能保證資料的最終一致性。

      Cpu:
在這裡插入圖片描述

      DB cpu:
在這裡插入圖片描述

帶回滾操作執行

介面 總數 平均響應時間 中間數 90% 95% 99% 最小響應時間 最大響應時間 錯誤率 吞吐量 每秒接受訊息 每秒傳送傳送訊息 執行緒數
Pay 200000 1573 1384 2703 3246 5815 48 11596 0 62.2 32.02 12.45 100

      Cpu:
在這裡插入圖片描述

      DB cpu:
在這裡插入圖片描述

Bytetcc 壓測報告

正常執行

介面 總數 平均響應時間 中間數 90% 95% 99% 最小響應時間 最大響應時間 錯誤率 吞吐量 每秒接受訊息 每秒傳送傳送訊息 執行緒數
Pay 500000 1197 1180 1534 1652 1900 85 2953 0 106.9 14.43 16.71 100

      測試結果分析:吞吐量比較低,可以保證資料的最終一致性。比較穩定。

      Cpu:
在這裡插入圖片描述

DB cpu:
在這裡插入圖片描述

帶回滾操作執行

介面 總數 平均響應時間 中間數 90% 95% 99% 最小響應時間 最大響應時間 錯誤率 吞吐量 每秒接受訊息 每秒傳送傳送訊息 執行緒數
Pay 60000 4006 3556 4491 4973 21972 100 10012 0 48.6 9.1 9.64 100

      Cpu:
在這裡插入圖片描述

      DB cpu:
在這裡插入圖片描述

六、小結

      小編只是通過Jmeter對兩個比較火的分散式事務框架進行了壓測,其中的業務邏輯是一樣的,效能也是有不同的。

      測試的程式碼地址: