今天看了官方文档和FISCO BCOS核心开发者石翔的文章有了想法,就写了这一篇文章,其实压测也挺好玩的,而且精彩。
caliper压测是什么首先我们要讲一下caliper是什么,他们的文章里面都写得非常清楚了,我来简单的总结一下
压测无非就是说一个区块链网络中最大的阈值,那么为什么要压测呢?如果你是简单的进行一个单机四节点哈哈哈哈哈那么我劝你就别搞个压测了,但是如果你要进行开发,要把它做出来让大家同时使用,那么我劝你最好还是压测一下。
区块链网络就如同我们的服务器一般,那么了解一点的朋友可以想一下,假如你服务器最大可以接受1000次点击,这时候你不知道,你将它推送到了,一万人的场景,这时候你的服务器会怎么样呢?绝对是服务器崩溃,可能在九百多次的时候就已经XiBia(重庆话:死亡)了,所以压测的重要性理解到了吗?
如果还没有那么我们再举个例子,比如我们一个联盟链中,现在做出了完整的DAPP出来,之后我们要将这个DAPP,用于赚钱钱嘻嘻,那么我们这个东西一定要做到超级超级好用是不,那么这个时候,我们就举例现在最大的电商平台12306,大家都有做过动车和火车吧,不管从哪个平台,比如携程旅行这类的,最终都要经过12306的后台,那么这个时候赚钱就要依靠什么?依靠强大的稳定性,那么这个稳定性就源于强大的后台以及测试,对吧?那么这个联盟链做出来,你就看看他的稳定性该怎么办,你直接拿出去给我们亲爱的用户用?沦游戏来看是不是还要说是有内测,公测,不删档测试,对吧。所以说大家现在理解了,压测的意义了吗?
哦!耶斯耶斯,我们直接开始下一步的实操吧。
实操验证python,make,g++,gcc,git版本
sudo apt install -y python2.7
sudo apt install -y pip
sudo apt install -y make
sudo apt install -y g++
sudo apt install -y git
sudo apt install -y gcc
这里官方文档推荐的是使用nvm安装nodejs
建议使用nvm(Node Version Manager)安装,nvm的安装方式如下:
# 安装nvm
curl -o- https://gitee.com/mirrors/nvm/raw/v0.33.2/install.sh | bash
# 加载nvm配置
source ~/.$(basename $SHELL)rc
# 安装Node.js 8
nvm install 8
# 使用Node.js 8
nvm use 8
安装docker
# 更新包索引
sudo apt-get update
# 安装基础依赖库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加docker仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 更新包索引
sudo apt-get update
# 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 安装docker compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Caliper提供了方便易用的命令行界面工具caliper-cli
,推荐在本地进行局部安装:
mkdir benchmarks && cd benchmarks
对NPM项目进行初始化
npm init
这一步主要是为在工作目录下创建package.json文件以方便后续依赖项的安装,如果不需要填写项目信息的话可以直接执行npm init -y
。
我一般就是一直回车
caliper-cli
npm install --only=prod @hyperledger/caliper-cli@0.2.0
由于Caliper所有依赖项的安装较为耗时,因此使用--only=prod
选项用于指定NPM只安装Caliper的核心组件,而不安装其他的依赖项(如各个区块链平台针对Caliper的适配器)。在部署完成后,可以通过caliper-cli
显式绑定需要测试的区块链平台及相应的适配器。
caliper-cli
安装成功
npx caliper --version
因为这个caliper他是一个安装非常快的,压测装置所以,我们需要的基础操作就会很多,反之如果一个比较重的压测装置,他就会自动获取很多东西。
我们可以使用help来获取使用方法
Usage:
caliper bind --caliper-bind-sut fabric --caliper-bind-sdk 1.4.1 --caliper-bind-cwd ./ --caliper-bind-args="-g"
Options:
--help Show help [boolean]
-v, --version Show version number [boolean]
--caliper-bind-sut The name of the platform to bind to [string]
--caliper-bind-sdk Version of the platform SDK to bind to [string]
--caliper-bind-cwd The working directory for performing the SDK install [string]
--caliper-bind-args Additional arguments to pass to "npm install". Use the "=" notation when setting this parameter [string]
- caliper-bind-sut :用于指定需要测试的区块链平台,即受测系统(***S***ystem ***u***nder ***T***est);
- caliper-bind-sdk:用于指定适配器版本;
- caliper-bind-cwd:用于绑定
caliper-cli
的工作目录,caliper-cli
在加载配置文件等场合时均是使用相对于工作目录的相对路径; - caliper-bind-args:用于指定
caliper-cli
在安装依赖项时传递给npm
的参数,如用于全局安装的-g
。
这里使用FISCO-BCOS作为示例绑定的命令就是
npx caliper bind --caliper-bind-sut fisco-bcos --caliper-bind-sdk latest
如果遇到报错error [caliper] [bind] Failed to execute “npm“ with return code 1.Command failed就去这篇文章看一下文章在这里
快速体验拉取一波他写好的代码我们执行流程就可以了
git clone https://gitee.com/vita-dounai/caliper-benchmarks.git
执行万能的hello world
不需要进入我们下载的这个里面去哦
npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json
慢慢准备就好了