写在前面

为了解决项目中的某些问题,需要使用区块链作为平台,将符合需求的代码予以实现,并得到相关性能测试结果。故将平台搭建过程记录如下。
本文主要解决以下问题:
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重启后会无法进入图形界面,故在此处换了阿里源。

  1. Git
apt-get install git
  1. cURL
apt-get install curl
  1. 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> 替换为用户名
  1. 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下进行相同配置

  1. JQ (optional)
apt install jq
  1. 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]

返回如图
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐