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
英文地址,請注明出處:http://en.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 研究背景與意義 隨著電子商務的快速發展,網絡上積累了海量的產品數據。這些數據來自不同的電商平臺、賣家,存在著產品名稱不統一、規格描述差異大等問題,給數據整合、價格比較、競品分析等應用帶來了極大挑戰。傳統的精確匹配方法無法處理產品名稱中的拼寫錯誤…