文章目录
- 前言
- 一、介绍
- 二、架构
- 三、安装说明
- 四、使用方法
- 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。