当前位置: 首页 > news >正文

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

文章目录

  • 前言
  • 一、介绍
  • 二、架构
  • 三、安装说明
  • 四、使用方法
    • 4.1. 修改配置文件
    • 4.2. 启动测试网络
    • 4.3. 运行测试


前言

本文介绍由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: &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。

相关文章:

  • 3.Stable Diffusion WebUI本地部署和实践
  • 论分布式设计
  • 基于Redis分布式的限流
  • springboot整合微信App支付以及支付宝App支付
  • opensuse安装rabbitmq
  • 使用 Azure 创建虚拟机所涉及的各项资源和设置
  • 探秘 VR 逃生救援技术的奇妙世界​
  • 鸿蒙HarmonyOS 5小游戏实践:记忆翻牌(附:源代码)
  • docker stats和/proc/pid/status内存统计的差异问题
  • 生成式人工智能实战 | WGAN(Wasserstein Generative Adversarial Network, GAN)
  • GO 语言学习 之 变量和常量
  • 【git学习】学习目标及课程安排
  • React Native 如何实现拉起App
  • Spring Boot 3.2.11 Swagger版本推荐
  • js防止重复提交的3种解决方案
  • 小程序学习笔记:自定义组件创建、引用、应用场景及与页面的区别
  • AI辅助编写前端VUE应用流程
  • 开疆智能CCLinkIE转ModbusTCP网关连接组态王配置案例
  • MySQL在C中常用的API接口
  • [Python] -基础篇2-Python中的变量和数据类型详解