您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)分布式事務(wù)框架DogTcc是怎么樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
DogTcc是一個基于注解的高性能 分布式事務(wù) TCC框架。感謝于他的框架設(shè)計,可達到2ms/事務(wù),支持鏈式調(diào)用,損耗線性增長。
高速,事務(wù)發(fā)起方損耗 2.15ms每事務(wù),事務(wù)被調(diào)方損耗 2.13ms每事務(wù)
損耗隨事務(wù)鏈變寬[A 調(diào)用B,C,D,E..],或者變深[A 調(diào)用B,B調(diào)用C,C調(diào)用D..],線性增長
對原有服務(wù)無侵入,標注是基于方法而不是RPC接口的,可以在需要回滾的最小單位方法上添加標注
易用性高,使用者通過標注,和實現(xiàn)指定的回滾和確認接口,即可集成框架
節(jié)點無本地狀態(tài),部署多臺即可實現(xiàn)集群,無需多余配置
和協(xié)議無關(guān),使用者只要實現(xiàn)事務(wù)的協(xié)議注入即可集成到框架中,可參照Spring模塊
和消息服務(wù)器無關(guān),框架提供了消息服務(wù)接口,使用者可使用其他消息中間件,可參考zookeeper模塊
支持事務(wù)鏈,事務(wù)鏈長度不影響事務(wù)性能
故障恢復(fù),任何服務(wù)節(jié)點丟失都不會影響最終一致性,丟失節(jié)點的事務(wù)會被同類節(jié)點托管,或者在丟失節(jié)點啟動時候恢復(fù)
錯誤通知,對于極端情況,Confirm或者Cancel失敗,系統(tǒng)會通過第三方接口通知,用戶需要實現(xiàn)該接口定義的方法
測試機配置
cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
Linux version 3.10.0-327.el7.x86_64
4G
內(nèi)存
操作系統(tǒng)
Cpu
啟動配置
zookeeper 默認配置啟動
注冊中心 和 Server1 Server2 Server3
啟動參數(shù):-Xms256m -Xmx512m
測試用例 [見Server1工程的Server1ApplicationController]
鏈式調(diào)用:Server1 調(diào)用 Server2 ,Server3 ; Server2 調(diào)用 Server3
單次調(diào)用:Server1 調(diào)用 Server3
為了降低業(yè)務(wù)對框架性能測試的影響,Server2 和 Server3 的業(yè)務(wù)代碼為空。
Server2 中有一個Call單元
Call(有回滾需求的方法)定義請見: https://github.com/sunpengChina/dog/wiki/DogTcc-architecture
Server3 中有兩個Call單元
性能報告
[1]非線程5000次非TCC事務(wù)調(diào)用: 11325ms
[2]非線程5000次TCC事務(wù)單次調(diào)用: 34133ms
[3]10線程,各500次循環(huán),共5000次鏈式,TCC事務(wù)調(diào)用:49826ms
[4]10線程,各500次循環(huán),共5000次鏈式,非TCC事務(wù)調(diào)用:6458ms
[5]10線程,各500次循環(huán),共5000次,TCC事務(wù)單次調(diào)用:35566ms
[6]10線程,各500次循環(huán),共5000次,非TCC事務(wù)單次調(diào)用:2884ms
結(jié)論
設(shè)tcc單次調(diào)用,發(fā)起方損耗為x (ms),call損耗為y (ms)
根據(jù)性能報告的[3]和[4],可得 x + 3y = (49826 - 6458)/5000 = 8.67 ms
根據(jù)性能報告的[5]和[6], 可得 x + 2y = (35566-2884)/5000 = 6.52 ms
可得tcc發(fā)起方單次損耗為:2.25 ms ; Call方損耗為 2.13 ms
準備zookeeper
wget https://raw.githubusercontent.com/wiki/sunpengChina/dog/zookeeper-3.4.13.zip
解壓文件 unzip zookeeper-3.4.13.zip
進入zk目錄 cd zookeeper-3.4.13/bin
啟動zk服務(wù)器 ./zkServer.sh start
打開zk客戶端 ./zkCli.sh
在zk 客戶端中執(zhí)行 create /dog "dog"
下載源碼
https://github.com/sunpengChina/dog.git
進入源碼根目錄,編譯源碼 mvn clean install
啟動服務(wù)
啟動springCloud配置中心: cd jar -jar eureka/target/eureka-1.0-SNAPSHOT.jar
啟動服務(wù)Server1:jar -jar Server1/target/Server1-1.0-SNAPSHOT.jar
啟動服務(wù)Server2:jar -jar Server2/target/Server2-1.0-SNAPSHOT.jar
啟動服務(wù)Server3:jar -jar Server3/target/Server3-1.0-SNAPSHOT.jar
在瀏覽器中測試
http://127.0.0.1:8081/chainTcc 一次鏈式事務(wù)調(diào)用,檢驗?zāi)愕南到y(tǒng)是否正常部署
http://127.0.0.1:8081/noTcc5000 5000次無事務(wù)調(diào)用的時間
http://127.0.0.1:8081/singleTcc5000 5000次簡單事務(wù)單元的時間
http://127.0.0.1:8081/chainTcc5000thread 10個線程各500次調(diào)用TCC鏈式事務(wù),調(diào)用需要的時間
http://127.0.0.1:8081/chainNoTcc5000thread 10個線程各500次調(diào)用鏈式非TCC事務(wù),調(diào)用需要的時間
http://127.0.0.1:8081/singleTcc5000thread 10個線程各500次調(diào)用非鏈式TCC事務(wù),調(diào)用需要的時間
http://127.0.0.1:8081/singleNoTcc5000thread 10個線程各500次調(diào)用非鏈式非TCC事務(wù),調(diào)用需要的時間
關(guān)于分布式事務(wù)框架DogTcc是怎么樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。