Hyperledger Fabric 入门笔记(二十)Fabric V2.5 测试网络进阶之Tape性能测试

发布于:2025-07-04 ⋅ 阅读:(17) ⋅ 点赞:(0)


前言

本文介绍由Hyperledger中国技术工作组提供的另一款区块链网络性能测试工具Tape的架构、安装和在Fabric测试网络中的使用。

一、介绍

Tape是一款轻量级的、可以快速测试 Hyperledger Fabric TPS 值的工具。它有如下特点:

  1. 轻量级, Tape实现过程中没有使用SDK,也无需配置connection profile;
  2. 易操作,通过简单的配置文件和命令即可快速启动测试;
  3. 结果准确,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: &peer1
  addr: localhost:7051
  ssl_target_name_override: peer0.org1.example.com
  org: org1
  tls_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.pem

peer2: &peer2
  addr: localhost:9051
  ssl_target_name_override: peer0.org2.example.com
  org: org2
  tls_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.pem

orderer1: &orderer1
  addr: localhost:7050
  ssl_target_name_override: orderer.example.com
  org: ordererOrg
  tls_ca_cert: /home/csb1/hyfa/fabric-samples/test-network/organizations/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem

policyFile: ./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
  - *peer2

commitThreshold: 2

# orderer Nodes to interact with
orderer: *orderer1

channel: 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。


网站公告

今日签到

点亮在社区的每一天
去签到