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.pswp.cn/diannao/88787.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样在 VS Code 中快速创建 Vue 单文件组件(SFC)的基础模板结构?

问题 在Vue项目的开发中&#xff0c;我们经常遇到一个问题&#xff0c;创建新组件时要自己输入基本的框架&#xff0c;比如&#xff1a; <template><div class"page-box"></div> </template><script> export default {name: ,data()…

高防IP在服务器中的作用都有哪些?

高防IP作为一种通过技术手段让用户网络服务更加安全的一种IP地址&#xff0c;有着更高的防御能力&#xff0c;有着强大的流量清洗中心和防御系统&#xff0c;帮助企业实时监控网络流量&#xff0c;将恶意的用户请求识别并过滤掉&#xff0c;保护目标服务器不会受到网络攻击&…

实战 X-AnyLabeling:构建高效自动标注系统的工程实践

文章目录 一、项目背景与目标二、系统架构与模块划分2.1 模块组成说明2.2 架构图 三、模型封装与平台对接3.1 模型封装接口3.2 接入 X-AnyLabeling 平台 四、可视化与预测验证4.1 UI 预测标签预览 五、性能优化与工程经验5.1 模型加速与推理优化5.2 经验总结5.3 实际效果 本文将…

UC3842/UC3843反激教程教学开关电源 反激设计步骤,每一关键元器件计算

资料下载地址&#xff1a;UC3842/UC3843反激教程教学开关电源 反激设计步骤&#xff0c;每一关键元器件计算 1、原理图 2、PCB图 3、变压器设计资料 4、开关电源设计资料 5、主要元器件说明书 6、系统整体资料 7、说明文档 7.1、电源设计概述 电源规格&#xff1a;设计一款 2…

Docker 入门教程(二):Docker 的基本原理

文章目录 &#x1f433; Docker 入门教程&#xff08;二&#xff09;&#xff1a;Docker 的基本原理1. Docker 架构总览&#xff1a;三大核心角色2. 镜像与容器的关系3. 容器启动流程&#xff1a;docker run 背后发生了什么&#xff1f; &#x1f433; Docker 入门教程&#xf…

21.安卓逆向2-frida hook技术-HookOkHttp的拦截器

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

小程序入门:swpier 和 swpier-item 的基本使用

在前端开发中&#xff0c;创建交互式的用户界面组件是至关重要的。今天&#xff0c;我们将深入探讨 swpier 和 swpier-item 的基本使用方法&#xff0c;这两个组件在构建轮播图等滑动效果的场景中非常实用。 一、swpier 组件概述 swpier 组件是实现滑动效果的核心容器。它负责…

SQL学习笔记4

约束 1、约束 约束&#xff0c;是指作用在表中字段上的规则&#xff0c;用于限制字段输入的数据&#xff0c;使得表格式统一&#xff0c;数据内容正确。同一个字段的约束可以有多个 约束包括&#xff1a; 非空约束&#xff0c;限制表中的值不为null:not null 唯一约束&…

力扣刷题(第七十天)

灵感来源 - 保持更新&#xff0c;努力学习 - python脚本学习 比特位计数 解题思路 对于任意整数 x&#xff0c;其 1 的个数等于 x // 2 的 1 的个数加上 x % 2。状态转移方程&#xff1a;dp[x] dp[x // 2] (x % 2)。 class Solution:def countBits(self, n: int) ->…

鸿蒙网络编程系列56-仓颉版通过数据包结束标志解决TCP粘包问题

1. TCP粘包问题解决思路 在本系列的上一篇文章演示了TCP数据粘包的原因以及可能的解决方法&#xff0c;本文将通过其中的添加数据包结束标志的方法来解决这个问题。我们知道&#xff0c;数据粘包的原因是因为发送的时候没有标明数据包的边界&#xff0c;那么&#xff0c;我们人…

Redis网络通信模块深度解析:单线程Reactor到多线程IO的架构演进

一、核心架构&#xff1a;单线程Reactor模型 Redis网络模块采用经典Reactor模式&#xff0c;核心流程如下&#xff1a; void aeMain(aeEventLoop *eventLoop) {while (!eventLoop->stop) {// 前置钩子&#xff08;集群心跳/数据持久化&#xff09;if (eventLoop->befor…

PILCO: 基于模型的高效策略搜索方法原理解析

PILCO: 基于模型的高效策略搜索方法原理解析 PILCO (Probabilistic Inference for Learning Control) 是一种基于模型的强化学习算法&#xff0c;由Marc Deisenroth和Carl Rasmussen于2011年提出。该算法在数据效率方面表现出色&#xff0c;能够以极少的样本数据实现有效学习。…

大语言模型训练中的自监督学习和其他训练方式

大语言模型训练中的自监督学习和其他训练方式。 自监督学习&#xff08;Self-Supervised Learning&#xff09; 1. 什么是自监督学习&#xff1f; 自监督学习是一种不需要人工标注数据的训练方式&#xff0c;模型从数据本身学习特征和模式。 在语言模型中的具体实现&#x…

[mcp-servers] 工具与资源 | 模型上下文协议MCP | 锚点分类

第三章&#xff1a;工具与资源 欢迎回来&#xff01; 在之前的旅程中&#xff0c;我们认识了客户端&#xff08;第一章&#xff1a;客户端&#xff09;——AI的信使组件 以及MCP服务器&#xff08;第二章&#xff1a;MCP服务器&#xff09;——接收请求并具备执行能力的智能助…

2025年06月27日Github流行趋势

项目名称&#xff1a;edit 项目地址 url&#xff1a;https://github.com/microsoft/edit项目语言&#xff1a;Rust历史 star 数&#xff1a;10807今日 star 数&#xff1a;411项目维护者&#xff1a;lhecker, DHowett, b6k-dev, rhysd, MingcongBai项目简介&#xff1a;我们都编…

Camera Api 2 和 OPEN GL ES 使用(显示滤镜效果)

Camera Api 2 和 OPEN GL ES 使用&#xff08;显示滤镜效果&#xff09; 相机预览和open GL 使用实现滤镜效果 代码 https://github.com/loggerBill/camera 相机预览 1.相机动态权限 <uses-permission android:name"android.permission.CAMERA" /><uses-f…

CAS教务系统单点登录分析

1. 核心 URL 结构 GET /authserver/login?servicehttp%3A%2F%2F192.168.254.188%2Fjsxsd%2Fframework%2FxsMainV.htmlx认证服务器&#xff1a;authserver.XXXX.edu.cn&#xff08;典型 CAS 系统&#xff09;目标服务&#xff1a;http://192.168.254.188/jsxsd/framework/xsMa…

利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类

大家觉得有读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 工业信息物理系统 &#xff08;ICPS&#xff09; 技术是推动海上自主化的基础&#xff0c;尤其是对于无人水面航行器 &#xff08;USV&#xff09;。然而&#xff0c;船上计算限制和通信延迟…

AI+物联网:从万物互联到万物智联

AI物联网&#xff1a;从万物互联到万物智联的范式革命 当农田传感器自主决策灌溉时机&#xff0c;当咖啡机根据睡眠数据调节浓度&#xff0c;当城市交通系统在拥堵发生前主动干预——这些场景不再是科幻想象&#xff0c;而是2025年AIoT&#xff08;人工智能物联网&#xff09;…

Python爬虫实战:研究Levenshtein库相关技术

1. 引言 1.1 研究背景与意义 随着电子商务的快速发展,网络上积累了海量的产品数据。这些数据来自不同的电商平台、卖家,存在着产品名称不统一、规格描述差异大等问题,给数据整合、价格比较、竞品分析等应用带来了极大挑战。传统的精确匹配方法无法处理产品名称中的拼写错误…