Fabric上搭建Hyperledger caliper进行性能测试

这篇具有很好参考价值的文章主要介绍了Fabric上搭建Hyperledger caliper进行性能测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fabric介绍(推荐文章)

Hyperledger(超级账本)是Linux基金会旗下的项目,Fabric是Hyperledger项目里最早也是目前应用最广泛的区块链项目,最初由IBM开发,后来捐助给基金会。

  • 是一个开源的企业级需要许可的分布式账本技术平台
  • 是一个高度模块化和可配置架构(a,b,c)
  • 支持不同组件的可插拔实现
  • 智能合约支持多语言:go,java,node.js等

Hyperledger Caliper介绍(官方文档)

Hyperledger Caliper是一个通用的区块链性能测试框架,它允许用户使用自定义的用例测试不同的区块链解决方案,并得到一组性能测试结果。

Caliper目前支持以下区块链平台:

  • Hyperledger Besu
  • Hyperledger Burrow
  • Ethereum
  • Hyperledger Fabric
  • FISCO BCOS
  • Hyperledger Iroha
  • Hyperledger Sawtooth

Caliper目前支持的性能指标包括:

  • 交易/读吞吐量
  • 交易/读延迟:最小、最大、平均、百分比
  • 资源消耗:CPU、内存、网络IO…

安装nodejs

本测试需要docker、docker-compose、go、nodejs的环境,这里不进行安装介绍,只是简单介绍一下nodejs的安装。

这里我用到了下面这几个版本的node,具体使用哪一个看报错信息。但是每次安装了新的之后要重新构建安装node-gyp构建自动化工具。去node的bin目录里面看是否有node-gyp命令即可。

hyperledger caliper可以测量系统延迟吗,fabric,区块链,运维

wget https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.xz
tar -xvf node-v16.15.0-linux-x64.tar.xz 
sudo vim /etc/profile
export NODE_HOME=你自己的安装目录
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile
node -v

#安装node-gyp构建自动化工具
sudo npm install -g node-gyp
搭建Hyperledger caliper(官网)

测试之前是保证我们的区块链项目已经安装成功,前面的相关步骤已经完成。
大家也可以参照官网,较少的非常详细。

创建并初始化Fabric网络

cd test-network
./network.sh up createChannel

创建Caliper的工作区

在和network.sh同级的目录下创建caliper-workspace文件夹并创建三个子文件夹

mkdir -p caliper-workspace/{networks,benchmarks,workload}

初始化工作区
进入caliper-workspace目录执行命令

npm init -y

安装caliper-cli,这个会把用到的依赖下载到当前工作区的node_modules目录下

#版本要匹配,0.4对应fabric2.x,0.3对应fabric1.4
npm install --only=prod @hyperledger/caliper-cli@0.4.0

注意事项:
linux为了安全起见,root用户执行npm命令的时候会被换成一个nobody的用户,而这个用户基本上是没有任何权限的,所以执行这个命令的时候可以自己用其他的用户登录,然后赋予其他用户操作我们的fabric工作区的权限。(参考文章)

#下面这个命令使这个文件夹所有用户都可以操作
chmod -R 777 /home/workspace/

绑定终端SDK

npx caliper bind --caliper-bind-sut fabric:2.1

构建测试文件

构建测试工作的负载模块。
在workload文件夹下创建createAsset.js文件,创建测试账户命令,随机生成账户id并进行初始化调用。

'use strict';

const { WorkloadModuleBase } = require('@hyperledger/caliper-core');

class MyWorkload extends WorkloadModuleBase {
    constructor() {
        super();
    }
    
    async initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext) {
        await super.initializeWorkloadModule(workerIndex, totalWorkers, roundIndex, roundArguments, sutAdapter, sutContext);
    }
    
    async submitTransaction() {
            const randomId = Math.random();
            const assetID = `${this.roundArguments.prefix}_${randomId}`;
            console.log(`Creating asset ${assetID}`);
            const request = {
                contractId: this.roundArguments.contractId,
                contractFunction: 'CreateAsset',
                invokerIdentity: 'Admin@org1.example.com',
                contractArguments: [assetID,'blue','20','500','500'],
                readOnly: false
            };

            await this.sutAdapter.sendRequests(request);
    }
    
    async cleanupWorkloadModule() {
    }
}

function createWorkloadModule() {
    return new MyWorkload();
}

module.exports.createWorkloadModule = createWorkloadModule;


在networks文件夹下创建一个名为networkConfig.json的文件.

这里说明一下,networkConfig.json的文件里面的path路径是自己的工程里面的文件对应的路径。
其他的名称和host里面的配置对应,要不修改的话都不进行修改。

{
    "version" : "1.0",
    "name": "Caliper test",
    "caliper" : {
        "blockchain": "fabric"
    },
    "clients": {
        "Admin@org1.example.com": {
            "client": {
                "credentialStore": {
                    "path": "/tmp/org1",
                    "cryptoStore": {
                        "path": "/tmp/org1"
                    }
                },
                "organization": "Org1",
                "clientPrivateKey": {
                    "path": "/root/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"
                },
                "clientSignedCert": {
                    "path": "/root/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem"
                },
                "connection": {
                    "timeout": {
                        "peer": {
                            "endorser": "3000"
                        }
                    }
                }

            }
        }
    },
    "channels": {
        "mychannel": {
            "created" : true,
	    "orderers":[
	       "orderer.example.com"
	    ],
	    "peers":{
                "peer0.org1.example.com": {}
	    },
            "contracts": [
                {
                    "id":"basic",
                    "version":"1.0"
                }
            ]
        }
    },
    "organizations":{
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com"
            ]
        }
    },
    "orderers":{
        "orderer.example.com": {
	   "url": "grpcs://orderer.example.com:7050",
	   "tlsCACerts": {
	       "path": "/root/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"

	   },
            "grpcOptions": {
                "ssl-target-name-override": "orderer.example.com"
            }
	}
    },

    "peers": {
        "peer0.org1.example.com": {
            "url": "grpcs://peer0.org1.example.com:7051",
            "tlsCACerts": {
		"path": "/root/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"    
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org1.example.com",
                "hostnameOverride": "peer0.org1.example.com"
            }
        }
    }
}


构建基准的测试的配置文件

在benchmarks文件夹下创建一个名为myAssetBenchmark.yaml

基准配置文件定义基准轮次并引用定义的工作负载模块。它将指定生成负载时使用的测试工作人员的数量、测试轮次的数量、每轮的持续时间、每轮期间应用于事务负载的速率控制以及与监视器相关的选项。
在这个文件里面我们还可以配置测试的发送交易总量、发送的tps等信息。

  • tps:交易发送速率
  • txNumber:交易发送总量

hyperledger caliper可以测量系统延迟吗,fabric,区块链,运维

test:
    #测试的名称
    name: basic-contract-benchmark
    #基本的描述信息
    description: test benchmark
    workers:
      type: local
      number: 5
    rounds:
      - label: createAsset-total20
        description: create asset benchmark
        #交易的发送总量
        txNumber: 20
        rateControl: 
          type: fixed-rate
          opts:
          	#交易发送的速率
            tps: 2
        workload:
        #这个配置我们刚才创建的js文件的路径
          module: workload/createAsset.js
          arguments:
            prefix: assetv1
            assets: 5
            contractId: basic
monitors:
  resource:
  - module: docker
    options:
      interval: 5 
      containers:
      - all


配置host文件

vim /etc/hosts

#加入以下域名解析
127.0.0.1 peer0.org1.example.com
127.0.0.1 peer0.org2.example.com
127.0.0.1 peer1.org1.example.com
127.0.0.1 peer1.org2.example.com
127.0.0.1 orderer.example.com


运行caplier进行性能测试

npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/networkConfig.json --caliper-benchconfig benchmarks/myAssetBenchmark.yaml --caliper-flow-only-test --caliper-fabric-gateway-enabled

运行完成之后会在目录下生成一个report.html文件
hyperledger caliper可以测量系统延迟吗,fabric,区块链,运维
下按在这个report文件即可。文章来源地址https://www.toymoban.com/news/detail-782858.html

到了这里,关于Fabric上搭建Hyperledger caliper进行性能测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hyperledger Caliper0.5.0安装并对fabric2.4.3进行压力测试

    fabric2.4.3环境搭建见: 超详细的Hyperledger Fabric2.4.3环境搭建 将如下内容添加到文件末尾 保存退出 执行命令: 查看nvm版本: 执行命令: 打开.bashrc文件 在末尾加入: 然后执行 这一步要让自己处于fabric-sample的上层目录中,一定要在这个地方进行操作,不然跑benchmark时会找不到

    2024年01月17日
    浏览(40)
  • Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念

    2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。 Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。 Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同

    2023年04月08日
    浏览(50)
  • Hyperledger Fabric 环境搭建

    以 fabric:2.2.0 ; ca:1.4.7 为例 官网下载go Downloads - The Go Programming Language (google.cn) 没有问题就完成啦 官方安装脚本(修改过了): 两个简单脚本直接开启/关闭测试区块链: 开启: 关闭:

    2024年02月11日
    浏览(43)
  • Hyperledger Fabric环境搭建(Linux)

    fabric二进制文件对linux只支持amd64的,我arm64搞了半天一直不行( 老天爷救救我 ),最后重装系统是不可能重装的,用CSDN的认证优惠免费搞了台一个月的。 如果你用wget从git下载很慢,可以配置一下/etc/hosts,我也把相关包上传至了网盘,也可以直接上传后解压缩。 百度网盘:

    2023年04月08日
    浏览(43)
  • 搭建 Hyperledger Fabric区块链网络

    这里以下载最新版为例,得益于官网文档;网址为:教程 或者使用该命令下载指定版本  wget https://studygolang.com/dl/golang/go1.19.linux-amd64.tar.gz 之后解压到指定文件,一般为 /usr/local/下 ,需要配置环境变量

    2024年01月20日
    浏览(59)
  • Hyperledger Fabric项目搭建区块链浏览器Hyperledger-blockchain-explorer

    区块链浏览器官网:https://github.com/hyperledger/blockchain-explorer 如果虚拟机没有联网,导致下载不下来,也可以前往Fabric-explorer附件下载进行下载,之后在本地根据需要修改,修改后上传到虚拟机 此时目录结构如下图所示 3.1修改test-network.json—— 网络配置文件,包含身份的指定

    2024年02月08日
    浏览(50)
  • Hyperledger Fabric explorer区块链浏览器搭建

    https://github.com/hyperledger-labs/blockchain-explorer 官方浏览器的github地址 根据文档,采用docker容器的方法搭建explorer。 根据官方提供的文件,需要创建的目录结构如下: 这是官网提供的模板 这里的organizations就是你搭建区块链网络的证书配置文件crypto-config文件,因为之前的网络创建

    2024年02月11日
    浏览(51)
  • hyperledger fabric2.4.0基础搭建到区块链浏览器搭建

    基础环境借鉴  如下博客地址安装成功Ubuntu20.04下安装fabric2.4环境 从零开始超详细步骤【亲测有效】及Hyperledger Explorer安装_小草cys的博客-CSDN博客_ubuntu安装fabricq 区块链浏览器借鉴如下博客配置成功 2021-05-02-fabric浏览器搭建_Soulmate_666的博客-CSDN博客_搭建fabric浏览器 config.json

    2024年02月11日
    浏览(42)
  • Fabric 超级账本学习【5】Fabric2.4网络环境下——搭建Hyperledger Fabric区块链浏览器

    博主最近在搭建Hyperledger Fabric区块链浏览器过程中也学习了很多博主的搭建流程,踩了很多雷,踩了很多 坑,现将成功搭建好的Hyperledger Fabric区块链浏览器详细流程分享如下,帮助大家避雷闭坑 Hyperledger Explorer 是一个简单,强大,易于使用,维护良好的开源实用程序,可浏

    2023年04月23日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包