Hyperledger fabric 2.4.9搭建与caliper性能测试
为了解决项目中的某些问题,需要使用区块链作为平台,将符合需求的代码予以实现,并得到相关性能测试结果。故将平台搭建过程记录如下。本文主要解决以下问题:1、hyperledger fabric的搭建,以能够正确使用fabcar及各脚本文件(follow官方文档及tutorial)
Hyperledger fabric 2.4.9搭建与caliper测试
写在前面
为了解决项目中的某些问题,需要使用区块链作为平台,将符合需求的代码予以实现,并得到相关性能测试结果。故将平台搭建过程记录如下。
本文主要解决以下问题:
1、hyperledger fabric的搭建,以能够正确使用fabcar及各脚本文件(follow官方文档及tutorial)
2、配置caliper,实现对fabric的性能测试,包括Success Rate(成功率)、Transaction & Read Throughput(吞吐量)、Transaction & Read Latency(延迟)、Resource consumption(资源开销)四种数据的检测。
本文行文顺序:按照笔者配置的过程,附以部分说明,并把配置过程中遇到过的问题尽可能详尽地写出来。初次写文档多有不足之处,欢迎大家讨论指正!
本文的部署环境:
虚拟机:VMWare Workstation 16 PRO
系统:Linux Ubuntu 20.04
Hyperledger Fabric version: 2.4.9
Caliper version: 0.5.0
当前版写于:2023年12月22日
一、prerequisites
本部分介绍在搭建之前需要进行的系统配置,包括需要的软件包、网络环境配置等
本部分参考文档:https://hyperledger-fabric.readthedocs.io/en/release-2.4/prereqs.html#linux
1、软件包
请使用英文版本ubuntu,尽量在root下配置。另外笔者使用清华镜像下载docker后,安装docker重启后会无法进入图形界面,故在此处换了阿里源。
- Git
apt-get install git
- cURL
apt-get install curl
- Docker & Docker compose
apt-get -y install docker-compose
查看安装是否成功:
docker --version
//返回:Docker version 24.0.5, build 24.0.5-0ubuntu1~20.04.1
docker-compose --version
//返回:docker-compose version 1.25.0, build unknown
设置 docker daemon 及 docker 开机启动
systemctl start docker
systemctl enable docker
添加user至docker group
sudo usermod -a -G docker <username> //<username> 替换为用户名
- Go
参考文档:https://go.dev/doc/install,以安装1.18版本为例
使用cURL下载
curl https://go.dev/dl/go1.18.linux-amd64.tar.gz
或者从上方链接进入官网手动下载相应版本,解压到 /usr/local/go 目录下
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz
编辑配置脚本文件
gedit /etc/profile
复制下方内容至文件末尾,并保存关闭:
export PATH=$PATH:/usr/local/go/bin
使配置内容生效
source /etc/profile
gedit ~/.bashrc
source /etc/profile
查看版本
go version
//返回:go version go1.18 linux/amd64
同样的,在user下进行相同配置
- JQ (optional)
apt install jq
- NVM (optional)
//不能访问github的话, 可以用下面这条
curl -o- https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh | bash
//然后执行下面的两条命令即可
chmod +x ~/.nvm/nvm.sh
source ~/.bashrc
//安装nodejs(以v19.9.0为例)
nvm install v19.9.0
//查看nodejs版本
node -v
//查看npm版本
npm -v
2、网络环境配置
为什么要进行网络环境配置?
在参考官方文档搭建fabric的过程中,我们需要使用cURL拉取fabric samples等文件;且在部署链码时,我们也需要拉取相应的库,不可避免的会使用到,虽然搭建过程中可以使用某些方法规避,但推荐尽早部署配置。
本部分参考文档:
https://www.hengy1.top/article/3dadfa74.html
https://blog.51cto.com/u_3826358/3832035
二、Hyperledger fabric 搭建
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
本部分参考文档:
https://hyperledger-fabric.readthedocs.io/en/release-2.4/install.html
1. 使用cURL命令下载
我们要做的是Download fabric-samples to the $HOME/go/src/github.com/<your_github_userid> directory.
mkdir -p $HOME/go/src/github.com/<your_github_userid>
cd $HOME/go/src/github.com/<your_github_userid>
使用 curl 下载fabric samples, docker images and binaries(默认下载最新版本)
curl -sSL https://bit.ly/2ysbOFE | bash -s
如果要下载特定版本,则使用以下:
curl -sSL https://bit.ly/2ysbOFE | bash -s -- <fabric_version> <fabric-ca_version> //要下载的版本,例如: curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.4.9 1.5.5
2. 使用创建脚本下载
上述1.的下载方式可能会出现失败的情况,可以多试几次,如果还是失败,可使用下面的步骤安装。
前往https://github.com/hyperledger/fabric/blob/main/scripts/bootstrap.sh,该页面显示的最新版本的fabric与fabric samples的安装脚本,如果要安装特定版本,点击右侧的history,查看你想要下载的版本
创建与1、相同的目录:
mkdir -p $HOME/go/src/github.com/<your_github_userid>
cd $HOME/go/src/github.com/<your_github_userid>
创建脚本:
touch bootstrap.sh
gedit bootstrap.sh
把网页中的脚本内容复制到bootstrap.sh中,保存关闭,授予权限:
chmod u+x bootstrap.sh
运行,开始执行脚本:
./bootstrap.sh
这里可能会出现binaries拉取失败的情况,可以多试几次,如果还是失败,则将bootstrap.sh中的 binaries=true 改成binaries=false然后手动下载binaries
浏览器前往下方两个地址下载binaries文件:
https://github.com/hyperledger/fabric/releases/download/v2.4.9/hyperledger-fabric-linux-amd64-2.4.9.tar.gz #版本号改成自己需要的
https://github.com/hyperledger/fabric-ca/releases/download/v1.5.5/hyperledger-fabric-ca-linux-amd64-1.5.5.tar.gz #该版本号参考bootstrap.sh里的版本,保持一致
tar -xzvf 压缩包名 -C 目的地 //(目的地最上层目录是/fabric-samples,如../hyperledger/fabric-samples)
解压完成后,前往fabric-samples进行ls可以看到bin和config,则说明我们成功下载了binaries
3. 运行和使用fabric
fabric之后的步骤请参考hyperledger fabric官方文档进行
三、Caliper 搭建
1. 下载caliper-benchmarks文件
下载链接:https://pan.baidu.com/s/1ksJy5pgL7xvYm9-r7JCMaw
提取码:6BK2
移动到与fabric-samples同级目录下并解压
cp caliper-benchmarks-main.zip <pwd to /github.com/hyperledger>
cd <pwd to /github.com/hyperledger>
unzip caliper-benchmarks-main.zip
cd caliper-benchmarks-main
npm init -y
2. 安装caliper-cli
npm install --only=prod @hyperledger/caliper-cli@0.5.0
如遇权限问题:
su <username>
sudo npm config set user 0
sudo npm config set unsafe-perm true
3. 绑定 fanric SDK
npx caliper bind --caliper-bind-sut fabric:2.4
4. 启动测试网络验证caliper安装
./network.sh up createChannel
部署链码(利用caliper内的fabric的fabcar样例)
./network.sh deployCC -ccn fabcar -ccp ../../caliper-benchmarks-main/src/fabric/samples/fabcar/go -ccl go
使用caliper测试一下
npx caliper launch manager --caliper-workspace ./ --caliper-networkconfig networks/fabric/test-network.yaml --caliper-benchconfig benchmarks/samples/fabric/fabcar/config.yaml --caliper-flow-only-test --caliper-fabric-gateway-enabled
返回如图,包括成功率、吞吐量、时延
5. 设置资源消耗测试输出
打开config文件,添加内容:
gedit config.yaml
monitors:
resource:
- module: docker
options:
interval: 5
containers:
- all
charting:
bar:
metrics: [Memory(avg), CPU%(avg)]
polar:
metrics: [all]
返回如图
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)