Hyperledger Caliper:測量區(qū)塊鏈性能的工具
Hyperleder Caliper。Caliper項目最初于2017年5月啟動,全球信息與通信技術公司華為積極參與了該項目的設計和開發(fā)。Hyperledger Caliper是一個區(qū)塊鏈基準測試工具,讓項目可以不間斷地跟蹤不同區(qū)塊鏈實現的性能特性。Hyperledger Caliper初始版本的重點是每秒事務數(TPS)、延遲和資源利用率。
區(qū)塊鏈技術日益受到人們的關注,但是,你在為業(yè)務問題創(chuàng)建解決方案之前,卻無法測試各種可用區(qū)塊鏈平臺的性能。為了解決這一痛點,Hyperledger社區(qū)提供了一個名為“Hyperledger Caliper”的工具,可用來測試區(qū)塊鏈平臺的性能。
Hyperledger Caliper
Caliper是一個區(qū)塊鏈性能基準測試框架,它允許用戶使用預定義的用例測試不同的區(qū)塊鏈解決方案,并獲得一組性能測試結果。
目前支持的性能指標:
成功率
事務吞吐量
事務延遲(最小值、最大值、平均值、百分比)
架構
適配層
使用適配層將現有的區(qū)塊鏈系統(tǒng)集成到Caliper框架中。每個適配器通過使用相應的區(qū)塊鏈的原生SDK或RESTful API來實現區(qū)塊鏈的Caliper NBI。
接口和核心層
接口和核心層實現核心功能,并為上行應用程序(up-applications)提供了北向接口,共四種NBI:
1.區(qū)塊鏈操作接口:包含在后端區(qū)塊鏈上部署智能合約、調用合約、從分類賬查詢狀態(tài)等操作。
2.資源監(jiān)控器:包含啟動、停止監(jiān)控器和獲取后端區(qū)塊鏈系統(tǒng)的資源消耗狀態(tài)的操作,包括CPU、內存、網絡IO等。目前提供了兩種監(jiān)控器,一種是監(jiān)控本地和遠程docker容器,另一種是監(jiān)控本地進程。
3.性能分析器:包含讀取預定義性能統(tǒng)計數據(包括TPS、延遲、成功率等)和打印基準測試結果的操作。在調用區(qū)塊鏈NBI時記錄關鍵指標,例如事務的創(chuàng)建時間和提交時間、事務結果等。
4.報告生成器:包含用于生成HTML格式測試報告的操作。
應用層
應用層包含針對典型區(qū)塊鏈場景實現的測試。每個測試都有一個配置文件,用于定義后端區(qū)塊鏈網絡和測試參數。
內置了一個默認基準測試引擎,用來幫助開發(fā)人員理解框架,并快速實現自己的測試。開發(fā)人員可以在沒有框架的情況下直接使用NBI來實現他們的測試。
基準測試引擎:
Master:
Master實現了一個包含三個階段的默認測試流:
1. 準備階段:在此階段,Master使用區(qū)塊鏈配置文件創(chuàng)建并初始化內部區(qū)塊鏈對象,按照配置中指定的方式部署智能合約,并啟動監(jiān)控器對象來監(jiān)控后端區(qū)塊鏈系統(tǒng)的資源消耗。
2. 測試階段: Master根據基準測試配置文件啟動一個循環(huán)測試、來執(zhí)行測試。任務將根據定義的工作負載生成并分配給Client。將存儲客戶的性能統(tǒng)計返回,以供以后分析。
3. 報告階段:分析每一輪測試的所有客戶端統(tǒng)計數據,并自動生成HTML格式報告。
Client:
Local Client:
在這種模式下,Master使用Node.js集群模塊分叉多個Local Client來進行實際的測試工作。
Zookeeper Client:
在這種模式下,多個Zookeeper Client獨立啟動。Zookeeper客戶端將在啟動后注冊并監(jiān)控測試任務。測試之后,將創(chuàng)建一個包含性能統(tǒng)計結果的znode。
Caliper示例報表格式:
配置文件:
使用兩種配置文件。一個是基準測試配置文件,它定義了類似工作負載的基準測試。
另一個是區(qū)塊鏈配置文件,它指定了有助與SUT交互的必要信息。
下面是一個基準測試配置文件示例:
先決條件:
· 確保已經安裝下列工具:
· NodeJS 8.X
· node-gyp
· Docker
· Docker-compose
git clone https://github.com/hyperledger/caliper.git
要在本地安裝依賴項,請在caliper文件夾中運行npm install。
安裝區(qū)塊鏈SDK:
Fabic
在根文件夾中運行:
npm install grpc@1.10.1 fabric-ca-client fabric-client
Sawtooth
安裝依賴項:
npm install protocol-buffers
使用存儲庫安裝sawtooth JavaScript SDK。
run npm install sawtooth-sdk in the root folder
在根文件夾中運行:
npm install sawtooth-sdk
Iroha
安裝Iroha庫
在Caliper的根文件夾中運行:
npm install -no-save iroha-lib@0.1.7
Composer
安裝依賴項:
更新主package.json文件,包含所需的Composer和Fabic模塊,然后運行npm install來安裝。
運行基準測試:
在基準測試文件夾中,可以找到所有預定義的基準測試。
要開始基準測試,只需在根文件夾中運行它即可:
node benchmark/simple/main.js -c yourconfig.json -n yournetwork.json
參數-c:指定基準測試的配置文件。如果不指定此參數,則config.json將用作默認值。
參數-n:指定被測區(qū)塊鏈網絡的配置文件。如果不指定此參數,則在基準測試配置文件中指定文件地址。
注意:
·你還可以使用npm腳本來運行基準測試。
npm運行列表:
》 caliper@0.1.0 list /home/hurf/caliper
》 node 。/scripts/list.js
可用基準測試:
drm
simple
使用特定配置文件來運行基準測試:
npm test?—?— simple -c 。/benchmark/simple/config.json -n./benchmark/simple/fabric.json
》 caliper@0.1.0 test /home/hurf/caliper
》 node 。/scripts/test.js “simple” “-c” “。/benchmark/simple/config.json” “-n” “。/benchmark/simple/fabric.json”
。..。..
使用去中心化Client進行基準測試:
1. 啟動ZooKeeper服務;
2. 通過運行節(jié)點。/src/comm/client/zoo-client.js zookeeper-server或npm run startclient?—?— zookeeper-server分別在目標計算機上啟動Client。
例如:
$ npm run startclient?—?10.229.42.159:2181
》 caliper@0.1.0 startclient /home/hurf/caliper
》 node 。/src/comm/client/zoo-client.js “10.229.42.159:2181”
Connected to ZooKeeper
Created client node:/caliper/clients/client_1514532063571_0000000006
Created receiving queue at:/caliper/client_1514532063571_0000000006_in
Created sending queue at:/caliper/client_1514532063571_0000000006_out
Waiting for messages at:/caliper/client_1514532063571_0000000006_in.。..。.
3. 將配置文件中的Client類型設置修改為zookeeper。
例如:
“clients”: {
“type”: “zookeeper”,
“zoo” : {
“server”: “10.229.42.159:2181”,
“clientsPerHost”: 5
}
}
4. 像往常一樣,在任何機器上啟動基準測試。
注意:
· Zookeeper用于注冊Client和交換信息。啟動的Client將在/caliper/clients/下添加新的znode?;鶞蕼y試檢查目錄以了解有多少Client,并根據工作負載為每個Client分配任務。
· Client之間沒有自動時間同步。你應該手動同步目標計算機之間的時間,例如使用“ntpdate”命令。
· 區(qū)塊鏈配置文件必須存在于運行Client的計算機上,且文件的相對路徑(相對于caliper文件夾)必須相同。配置中的所有引用文件也必須存在。
編寫你自己的基準測試
Caliper提供了一組nodejs NBI(北向接口),供應用程序與后端區(qū)塊鏈系統(tǒng)交互。查看src/comm/blockchain.js來了解NBI。多重適配器實現將NBI轉換為不同的區(qū)塊鏈協(xié)議。因此,開發(fā)人員可以編寫一次基準測試,并在不同的區(qū)塊鏈系統(tǒng)中運行它。
一般來說,要編寫一個新的caliper基準測試,你需要:
· 為想要測試的系統(tǒng)編寫智能合約
· 使用caliper NBI編寫一個測試流。Caliper提供了一個默認的基準測試引擎,它可以插拔并可配置,可以輕松地集成新的測試。有關更多的詳細信息,請參閱基準測試引擎。
· 編寫配置文件來定義后端網絡和基準測試參數。
評論
查看更多