當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導(dǎo)讀] 近期區(qū)塊鏈的技術(shù)概念在傳統(tǒng)IT圈逐漸升溫,成為許多遺產(chǎn)系統(tǒng)升級重構(gòu)方案的備選技術(shù)路線。筆者本人多年從事應(yīng)用系統(tǒng)研發(fā),目前所維護的系統(tǒng)性能漸露瓶頸,分片擴容難度較大且面臨分布式改進的潛在需求,因而

近期區(qū)塊鏈的技術(shù)概念在傳統(tǒng)IT圈逐漸升溫,成為許多遺產(chǎn)系統(tǒng)升級重構(gòu)方案的備選技術(shù)路線。筆者本人多年從事應(yīng)用系統(tǒng)研發(fā),目前所維護的系統(tǒng)性能漸露瓶頸,分片擴容難度較大且面臨分布式改進的潛在需求,因而亟需區(qū)塊鏈架構(gòu)技術(shù)儲備。

應(yīng)用系統(tǒng)性能提升的關(guān)鍵在于運維端的接入管理模型(AAA,認(rèn)證AuthenticaTIon、授權(quán)AuthorizaTIon、計費AccounTIng)及業(yè)務(wù)端的并發(fā)(Concurrency)/吞吐量(Throughput)模型。區(qū)塊鏈?zhǔn)堑湫偷摹斑\維友好型”系統(tǒng),天然的自我治理能力極大程度上優(yōu)化了接入管理模型,但現(xiàn)有區(qū)塊鏈系統(tǒng)的并發(fā)/吞吐量模型指標(biāo)卻飽受詬病。無論是BTC的7tps,還是ETH的40tps在傳統(tǒng)業(yè)務(wù)系統(tǒng)動輒萬級甚至十萬級tps面前都難以抬頭。

本著不重復(fù)造輪子的宗旨,首先梳理了一下對區(qū)塊鏈項目的需求:

·聚焦底層基礎(chǔ)設(shè)施,項目自身行業(yè)或領(lǐng)域特征不明顯,易引入本行業(yè)業(yè)務(wù);

·能夠?qū)崿F(xiàn)微服務(wù)級部署,擴容友好,易遷移部署;

·并發(fā)吞吐量5k+,穩(wěn)定支撐10w級DAU,可靠性強。

根據(jù)需求有的放矢地尋覓區(qū)塊鏈項目,尋覓的過程其實遠(yuǎn)比想象的簡單。區(qū)塊鏈項目多如牛毛,但純做技術(shù)框架不扯業(yè)務(wù)場景或者經(jīng)濟模型的項目真心不多。通過對主流交易所的項目篩選(畢竟不能找一個不穩(wěn)定的團隊做的東西),基本圈定了EOS、QTUM、AELF項目。EOS官宣吞吐量約3300~3500tps,QTUM官宣吞吐量為BTC的十倍(權(quán)且估算100tps),AELF項目7月伊始發(fā)布測試網(wǎng),官方暫未發(fā)布吞吐量信息。選定AELF作為調(diào)研對象的原因一方面是開發(fā)指南新近發(fā)布,與最近代碼版本的可操作性強,且AELF采用的Akka并發(fā)框架應(yīng)用范圍較廣,先前有所接觸。

測試設(shè)計

現(xiàn)有的區(qū)塊鏈系統(tǒng)業(yè)務(wù)處理能力普遍面向價值傳遞進行建設(shè),因此對于區(qū)塊鏈系統(tǒng)性能的評測思路應(yīng)面向交易過程展開。AELF項目在區(qū)塊鏈架構(gòu)方面主打的特征是“主鏈+多級側(cè)鏈”,鏈間有專門的跨鏈算法實現(xiàn)相對隔離的業(yè)務(wù)單元間資源的協(xié)同,鏈內(nèi)節(jié)點均運行于集群,節(jié)點內(nèi)部通過并行化方案提升吞吐量指標(biāo)。根據(jù)官方在社區(qū)披露的信息,測試網(wǎng)初期(即目前)提供主鏈并行計算模塊的測試驗證,確認(rèn)主鏈性能后再灰度升級至多級側(cè)鏈版本,從軟件質(zhì)量體系的角度而言是合理的。通過參與社區(qū)內(nèi)的技術(shù)直播互動,也與項目技術(shù)團隊充分探討了AELF選用的幾個技術(shù)方案,尤其是Akka并行框架。積極選用已被驗證的成熟技術(shù)元素確實是做新系統(tǒng)、新基礎(chǔ)設(shè)施時的難能可貴的姿態(tài),進一步提升了對AELF項目的好感度。PS:該團隊技術(shù)的人也在社區(qū),很NICE很好溝通。

TransacTIon,傳統(tǒng)IT人習(xí)慣叫“事務(wù)”,區(qū)塊鏈圈的人通常叫“交易”,可能是BTC白皮書翻譯傳承下來的吧。軟件測評應(yīng)充分考慮軟件質(zhì)量體系的要求,同理,對于一個區(qū)塊鏈底層架構(gòu)而言,模擬價值傳輸壓力的交易激勵能夠作為區(qū)塊鏈底層基礎(chǔ)設(shè)施tps指標(biāo)的驗證形式。

據(jù)此,先定義一個原子事務(wù)作為本次測試驗證的基本測試用例——“合約轉(zhuǎn)賬”。1次“合約轉(zhuǎn)賬”包括2次讀2次寫操作,具體步驟如下:

·從A賬戶讀取余額(1次讀);

·從B賬戶讀取余額(1次讀);

·從A賬戶減去金額(1次寫);

·從B賬戶增加金額(1次寫)。

因之前接觸過BTC,深深嘆服中本聰大神UTXO體系設(shè)置的精妙,但傳統(tǒng)應(yīng)用系統(tǒng)往往還是依賴賬戶模型體系,因此選用一個經(jīng)典的原子轉(zhuǎn)賬事務(wù)作為標(biāo)準(zhǔn)測試用例,并以該用例的執(zhí)行效率作為吞吐量指標(biāo)的依據(jù)。AELF支持區(qū)塊鏈智能合約,上述原子事務(wù)須編寫為合約腳本部署至測試網(wǎng)。

進而,再定義一個基本的測試流程梗概:

該測試流程可作為一個典型的區(qū)塊鏈性能測評策略。以一次“合約轉(zhuǎn)賬”為一個基本業(yè)務(wù)執(zhí)行單元,編寫運行于區(qū)塊鏈平臺上的“合約腳本”程序,該程序能夠被區(qū)塊鏈系統(tǒng)各節(jié)點部署并執(zhí)行。實施測評前需依據(jù)特定的用例或隨機生成測試用例初始化測試數(shù)據(jù),不同場景、不同輪次的測評實施須基于相同的測試數(shù)據(jù)以確保測試結(jié)果可信。測試數(shù)據(jù)作為交易申請相繼對主網(wǎng)發(fā)起激勵,對于AELF此類采用分布式并行化思想進行架構(gòu)設(shè)計的項目,可采用多組數(shù)據(jù)并發(fā)激勵的形式以測試較高并發(fā)交易場景下區(qū)塊鏈系統(tǒng)的性能。測試過程中,可通過實時監(jiān)視或特定時間片監(jiān)視的方式判定測試用例的執(zhí)行情況,時間片可設(shè)置為出塊周期的N倍(N《=6,借鑒BTC主網(wǎng)6區(qū)塊確認(rèn)的慣例)。

繼續(xù)定義不同的測試場景:

·場景I:單機場景,1業(yè)務(wù)處理節(jié)點+1業(yè)務(wù)數(shù)據(jù)集;

·場景II:集群-單機場景,N業(yè)務(wù)處理節(jié)點+1業(yè)務(wù)數(shù)據(jù)集;

·場景III:分布式集群場景,N業(yè)務(wù)處理節(jié)點+N業(yè)務(wù)數(shù)據(jù)集。

單機場景旨在驗證區(qū)塊鏈系統(tǒng)的獨立性能,因區(qū)塊鏈為分布式集群系統(tǒng),針對單機場景測評驗證對于最終全網(wǎng)性能指標(biāo)結(jié)論的意義不是很大,但有助于我們更好地定義集群測試的邊界。如單機測評的性能指標(biāo)為P,進行集群測評時能夠以P為基礎(chǔ)通過節(jié)點/進程增長與性能指標(biāo)增長之間的關(guān)系判定是否有必要進行更大規(guī)模的測評驗證。此外,在單機測試的過程中通過補充帶有網(wǎng)絡(luò)延遲的測試環(huán)境有助于對網(wǎng)絡(luò)環(huán)境影響因素進行基本的定量。

集群-單機場景旨在針對面向區(qū)塊鏈底層平臺所支撐的實際業(yè)務(wù)類型進行覆蓋性測試。區(qū)塊鏈技術(shù)本身是去中心化的,但區(qū)塊鏈系統(tǒng)所支撐的上層業(yè)務(wù)可能有中心化特征,因此需要進行多對一場景的模擬測評。該場景的設(shè)計針對數(shù)據(jù)I/O存在固定瓶頸的情況下對區(qū)塊鏈系統(tǒng)業(yè)務(wù)處理吞吐量進行定量測評。

分布式集群場景旨在針對處于P2P網(wǎng)絡(luò)拓?fù)渲薪灰讏?zhí)行處理與交易數(shù)據(jù)協(xié)同均需實現(xiàn)區(qū)塊鏈共識的業(yè)務(wù)場景進行覆蓋性測試。該場景為典型的區(qū)塊鏈系統(tǒng)場景,通過單機場景及集群-單機場景的測評,能夠輔助我們對該場景下的測試邊界及測試差異性因子進行綜合分析,確定測試實施的方式及被測部署環(huán)境的典型性,從而得到較為可靠的測評結(jié)論。

區(qū)塊鏈系統(tǒng)的運行有多個層次,區(qū)塊鏈程序可被部署至多臺服務(wù)器(Server),每臺服務(wù)器可運行多個進程級實例(Worker),對AELF而言,每個實例內(nèi)可以配置多個并行化業(yè)務(wù)單元(Actor)。因此性能指標(biāo)TPS受服務(wù)器、進程、業(yè)務(wù)單元的影響均需在測試中體現(xiàn),最優(yōu)TPS測評結(jié)果應(yīng)表現(xiàn)在一個適宜的服務(wù)器、進程、業(yè)務(wù)單元配置之下,在測試條件允許之內(nèi)尋找這個最優(yōu)的配置也是本次測評的目的之一。

綜上,擬實現(xiàn)的測試驗證目的包括但不限于單服務(wù)節(jié)點運行狀態(tài)下的并發(fā)執(zhí)行能力及集群環(huán)境下的性能延展性。

測試搭建及部署

測試所選用的環(huán)境為標(biāo)準(zhǔn)云平臺虛擬機(包括AWS及阿里云),根據(jù)官方在社區(qū)內(nèi)推薦的配置,采用了8vCPU+16G內(nèi)存的組合,網(wǎng)絡(luò)帶寬10G,Redis版本4.0.10,Twemproxy版本0.4.1,基本與標(biāo)準(zhǔn)集群生產(chǎn)環(huán)境類似,后續(xù)隨測試網(wǎng)內(nèi)容的增多配置可能有變化,在社區(qū)隨時可以得到項目技術(shù)團隊的解答。

8月8日補充:AELF官方Github已給出權(quán)威版測試搭建步驟,下文為筆者的搭建步驟。

對AELF測試網(wǎng)進行開發(fā)接入的核心是厘清Benchmark環(huán)境,通過與技術(shù)團隊的咨詢交流,下述為基本的搭建與部署執(zhí)行步驟。

克隆及編譯代碼:

·git clone https://github.com/AElfProject/AElf.git aelf

·cd aelf

·dotnet publish –configuration Release -o /temp/aelf

確認(rèn)配置文件目錄:

·Mac/Linux: ~/.local/share/aelf/config

·Windows: C:UsersxxxxxAppDataLocalaelfconfig

配置數(shù)據(jù)集信息:

·將代碼中的aelf/config/database.json拷貝至配置文件目錄

·根據(jù)本機Redis安裝情況修改配置:

{

// 數(shù)據(jù)庫類型(內(nèi)存:inmemory,Redis:redis,SSDB:ssdb)

“Type”: “redis”,

// 數(shù)據(jù)庫地址

“Host”: “l(fā)ocalhost”,

// 數(shù)據(jù)庫端口

“Port”: 6379

}

單機場景部署:

將代碼中的aelf/config/actor.json拷貝至配置文件目錄,并根據(jù)本機情況配置IsCluster、WorkerCount、Benchmark、ConcurrencyLevel:

{

// 是否為集群模式

“IsCluster”: false,

“HostName”: “127.0.0.1”,

“Port”: 0,

// 并行執(zhí)行 worker 的數(shù)量,建議與本機cpu 核數(shù)相同

“WorkerCount”: 8,

// 運行Benchmark模式

“Benchmark”:true,

// 最大并行分組級別,大于等于WorkerCount

“ConcurrencyLevel”: 16,

“Seeds”: [

{

“HostName”: “127.0.0.1”,

“Port”: 32551

}

],

“SingleHoconFile”: “single.hocon”,

“MasterHoconFile”: “master.hocon”,“WorkerHoconFile”: “worker.hocon”,

“ManagerHoconFile”: “manager.hocon”

}

運行Benchmark:

dotnet AElf.Benchmark.dll -n 8000 --grouprange 80 80 --repeattime 5

// -n 總事務(wù)數(shù)量 --grouprange 分組范圍 --repeattime 重復(fù)執(zhí)行次數(shù)

集群場景部署:

運行ConcurrencyManager:

dotnet AElf.Concurrency.Manager.dll --actor.host 192.168.100.1 --actor.port 4053

// --actor.host Manager的 IP 地址 --actor.port Manager的監(jiān)聽端口

將代碼中的aelf/config/actor.json拷貝至配置文件目錄,并根據(jù)本集群情況配置IsCluster、HostName、WorkerCount、Benchmark、ConcurrencyLevel、Seeds:

{

// 是否為集群模式

“IsCluster”: true,

// Worker的 ip 地址

“HostName”: “127.0.0.1”,

// Worker監(jiān)聽的端口

“Port”: 32551,

// 并行執(zhí)行 worker 的數(shù)量,建議與本機cpu 核數(shù)相同

“WorkerCount”: 8,

// 運行Benchmark模式

“Benchmark”:true,

// 最大并行分組級別,大于等于WorkerCount*Worker 的進程數(shù)

“ConcurrencyLevel”: 16,

// Manager的 ip、端口信息

“Seeds”: [

{

“HostName”: “192.168.100.1”,

“Port”: 4053

}

],

“SingleHoconFile”: “single.hocon”,

“MasterHoconFile”: “master.hocon”,

“WorkerHoconFile”: “worker.hocon”,

“ManagerHoconFile”: “manager.hocon”

}

運行ConcurrencyWorker:

dotnet AElf.Concurrency.Worker.dll --actor.port 32551

// --actor.port Worker的監(jiān)聽端口

如Worker收到Manager的歡迎信息則說明該Worker加入集群,后續(xù)節(jié)點擴容可依托此環(huán)境開展

運行Benchmark:

dotnet AElf.Benchmark.dll -n 8000 --grouprange 80 80 --repeattime 5

測試執(zhí)行與數(shù)據(jù)分析

該部分不再贅述具體的執(zhí)行過程,直接針對三種場景給出測試驗證的數(shù)據(jù)干貨。特別強調(diào),本次測試的數(shù)據(jù)結(jié)果為筆者自行測試,環(huán)境和過程可能因人為操作誤差不是很嚴(yán)謹(jǐn),具體性能指標(biāo)以官方發(fā)布為準(zhǔn),好事者勿擾?。?!

場景I 單機場景測試數(shù)據(jù)

通過上圖可以看出,當(dāng)數(shù)據(jù)庫與業(yè)務(wù)單元分離部署時,網(wǎng)絡(luò)延遲會導(dǎo)致TPS指標(biāo)下降,同等網(wǎng)絡(luò)延遲下TPS指標(biāo)跟隨變化趨勢基本相同。

場景II 集群-單機場景測試數(shù)據(jù)

通過上兩圖可以看出當(dāng)數(shù)據(jù)集服務(wù)為單例部署時,2進程16業(yè)務(wù)單元的部署模式較為理想。針對2進程16業(yè)務(wù)單元的部署模式又做了服務(wù)器擴容的補充分析,分析表明在數(shù)據(jù)集服務(wù)為單例時,服務(wù)器增長到5時性能達(dá)到瓶頸,TPS指標(biāo)開始下滑。

場景III 分布式集群場景測試數(shù)據(jù)

上圖測試環(huán)境為8個Redis實例構(gòu)建的集群,5個Twemproxy,每臺服務(wù)器連接不同的Twemproxy,TPS指標(biāo)能夠隨擴容而增長至理想值附近。

其他相關(guān)測試參數(shù):使用240000個交易,重復(fù)5次。

測試總結(jié)

通過上述測試驗證的執(zhí)行結(jié)果基本能夠看出隨著系統(tǒng)的擴容,吞吐量性能指標(biāo)的增長是較為健康的,測試范圍之內(nèi)預(yù)期最優(yōu)指標(biāo)約為1.3w~1.5w tps。此外,在每一組特定的部署模式下,能夠通過系統(tǒng)調(diào)優(yōu)獲得平均約10%~15%的性能提升,吞吐量性能曲線的極值點符合較為合理,符合快升緩降的泊松分布。目前小拓?fù)浼合碌沫h(huán)境搭建驗證基本能夠滿足中小型業(yè)務(wù)系統(tǒng)的吞吐量需求,初步可應(yīng)用于傳統(tǒng)應(yīng)用系統(tǒng)的優(yōu)化重構(gòu)——當(dāng)然,只用區(qū)塊鏈技術(shù)做分布式數(shù)據(jù)庫和通信組件難免有點大材小用,后續(xù)還需關(guān)注多級側(cè)鏈體系的測試情況,進一步融和分布式業(yè)務(wù)模型。

簡單的測試驗證后,同為搬磚碼農(nóng)的筆者也有一些建議給AELF技術(shù)團隊:

當(dāng)Transaction數(shù)量級較大,且后續(xù)引入側(cè)鏈的結(jié)構(gòu)較復(fù)雜時,目前的分組策略耗時可能會有比較顯著的提升,如10w級事務(wù)分1k級處理單元組時,可能的分組時間會達(dá)到800ms~1000ms,分組策略在后續(xù)多級側(cè)鏈體系下有待進一步優(yōu)化;

系統(tǒng)目前配置的Round-Robin-Group路由策略在生產(chǎn)環(huán)境下并非最優(yōu),路由能力可通過配置調(diào)優(yōu)的方式得到進一步提升;

并行化事務(wù)處理過程中建議增加健康狀態(tài)監(jiān)控機制,如MailBox,以方便運維、開發(fā)團隊了解執(zhí)行過程及定位問題,否則復(fù)雜關(guān)聯(lián)事務(wù)的死可能會導(dǎo)致無法預(yù)見的系統(tǒng)失效。

刨除掉上述三點,該測試網(wǎng)目前的表現(xiàn)可圈可點,后續(xù)進展值得期待。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉