文章目錄
- 前言
- 一、介紹
- 二、架構
- 三、安裝說明
- 四、使用方法
- 4.1. 修改配置文件
- 4.2. 啟動測試網絡
- 4.3. 運行測試
前言
本文介紹由Hyperledger中國技術工作組提供的另一款區塊鏈網絡性能測試工具Tape的架構、安裝和在Fabric測試網絡中的使用。
一、介紹
Tape是一款輕量級的、可以快速測試 Hyperledger Fabric TPS 值的工具。它有如下特點:
- 輕量級, Tape實現過程中沒有使用SDK,也無需配置connection profile;
- 易操作,通過簡單的配置文件和命令即可快速啟動測試;
- 結果準確,Tape直接使用gRPC 發送交易,并且對交易和區塊處理的不同階段單獨拆分,使用協程及通道緩存的方式并行處理,大幅度提升了 Tape 自身的處理效率,從而可以準確的測試出 Fabric 的真實性能。
Tape由負載生成器客戶端和觀察者客戶端組成。因此Tape僅可以用來對已經完成部署的Fabric網絡進行測試。
二、架構
Tape由多種goroutine組成,這些goroutine通過緩存通道連接,可以互相傳遞數據。整體工作流程如下圖:
? Signer,負責簽名生成的交易提案,并將簽名后的結果存入緩存通道中;
? Proposer,負責從緩存通道中取出已簽名的交易提案,然后通過gRPC將已簽名提案發送到背書節點,并將背書節點返回的背書結果寫入另一個緩存通道;
? Integrator,負責從緩存通道中取出背書后的結果,并封裝成信封,然后將該信封再次存入一個單獨的緩存通道;
? Broadcaster,負責將從緩存通道中取出信封,并然后通過 gRPC將信封廣播到排序節點;
以上四種goroutine可以啟動不止一個,以實現高性能和可擴展性,因此Tape自身不會成為性能瓶頸。
排序節點生成區塊后,會將區塊廣播到 Peer 節點,Peer 節點接收到區塊并經過驗證保存到本地賬本之后,會向其他節點廣播已提交區塊。
? Observer,接收到 Peer 節點廣播的區塊之后,會計算區塊中交易數量,以及總耗時,當接收到區塊的交易數量和運行 Tape 時輸入的參數一致時,結束運行,并根據總耗時計算 TPS。
三、安裝說明
Tape有多種安裝方式,包括下載二進制文件、拉取Docker鏡像和本地編譯。
后續使用本地編譯的方式:
git clone https://github.com/Hyperledger-TWGC/tape.git
cd ./tape
make tape
四、使用方法
4.1. 修改配置文件
tape的根目錄下的有一個config.yaml,項目的說明文檔中都是使用該文件作為配置文件,不過該文件缺少必要的內容,直接使用會報"empty endorsement policy"
的錯誤。
內容完整的配置文件在test/目錄下,比如test/configlatest.yaml,其中最重要的是多了一個"policyFile"
字段。
后續參考該文件進行修改:
gedit config.yaml
修改內容涉及各個路徑。
peer1: &peer1addr: localhost:7051ssl_target_name_override: peer0.org1.example.comorg: org1tls_ca_cert: /home/csb1/hyfa/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pempeer2: &peer2addr: localhost:9051ssl_target_name_override: peer0.org2.example.comorg: org2tls_ca_cert: /home/csb1/hyfa/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pemorderer1: &orderer1addr: localhost:7050ssl_target_name_override: orderer.example.comorg: ordererOrgtls_ca_cert: /home/csb1/hyfa/fabric-samples/test-network/organizations/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pempolicyFile: ./test/andLogic.rego# Peer Nodes to interact with as endorsement Peers
endorsers:- *peer1- *peer2# Peer Nodes to interact with as Commit Peers as listening
committers: - *peer1- *peer2commitThreshold: 2# orderer Nodes to interact with
orderer: *orderer1channel: mychannel
chaincode: basic
args:- CreateAsset- uuid- randomString8- randomNumber0_50- randomString8- randomNumber0_50
# Tx submiter information
mspid: Org1MSP
private_key: /home/csb1/hyfa/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk
sign_cert: /home/csb1/hyfa/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem
# network traffic control
num_of_conn: 10
client_per_conn: 10
4.2. 啟動測試網絡
啟動測試網絡并部署basic鏈碼:
pushd ~/hyfa/fabric-samples/test-network
./network.sh up createChannel
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
4.3. 運行測試
使用二進制文件運行測試:
popd
./tape --config=config.yaml --number=4000
該命令向 Fabric 網絡發送4000條交易進行性能測試。
注1:發送的交易數量應設置為batchsize(Peer節點的配置文件core.yaml中的參數)的整倍數,避免最后一個區塊到超時才出塊。
注2:Tape可以單獨測試背書和提交階段,詳見./tape --help。