当前位置: 首页 > 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。

http://www.lqws.cn/news/548263.html

相关文章:

  • Ubuntu 20.04 系统上运行 SLAM卡顿是什么原因
  • 免安装一键修复网络诊断 + 权限修复!打印机共享错误工具适配 Win7/10/11
  • Spring Boot 项目实训 - 图书信息网站
  • 移动端测试——如何解决iOS端无法打开弹窗式网页(Webkit)
  • canvas面试题200道
  • C++:string类(1)
  • 临床项目计划框架
  • java代码规范
  • 机器学习2——贝叶斯理论下
  • 【Linux手册】进程终止:进程退出和信号的响应机制
  • 微软全新开源的Agentic Web网络项目:NLWeb详解
  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • 【世纪龙科技】吉利博瑞汽车车身诊断与校正仿真教学软件
  • window显示驱动开发—DirectX 图形内核子系统(二)
  • Ai大模型 - ocr图像识别形成结构化数据(pp-ocr+nlp结合) 以及训练微调实现方案(初稿)
  • 第六章 总线
  • 四大高频设计题深度解析:【LRU缓存】、【LFU缓存】、最大频率栈、餐盘栈
  • 论面向服务的架构设计
  • Java项目:基于SSM框架实现的宠物综合服务平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • MySQL在C中常用的API接口
  • 楼宇自控系统以智能化管控,全方位满足建筑节约、安全与可靠运行需求
  • 嵌入式项目:基于QT与Hi3861的物联网智能大棚集成控制系统
  • 模型部署和推理架构学习笔记
  • <script setup> 语法糖
  • 中高端服装品牌开展全渠道零售业务,如何选OMS订单管理系统?|商派
  • 成都芯谷金融中心·文化科技产业园:绘就区域腾飞新篇章
  • 【Pandas】pandas DataFrame resample
  • 疲劳检测与行为分析:工厂智能化实践
  • 解剖智能运维三基石:Metrics/Logs/Traces
  • 广东广电U点-创维E900-S-海思MV310芯片-海兔线刷烧录固件包