400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

区块链性能测试工具caliper-创新互联

Caliper是一个区块链性能测试框架,可用于测试不同的区块链实现。支持

创新互联主营东辽网站建设的网络公司,主营网站建设方案,手机APP定制开发,东辽h5小程序定制开发搭建,东辽网站营销推广欢迎东辽等地区企业咨询

测试内容指标包括:

感受一下先

准备

先安装NodeJS 8.X、node-gyp、Docker、Docker-compose。

git clone https://github.com/hyperledger/caliper.git
cd caliper
npm install

安装区块链SDK(以fabric为例)

# caliper项目目录下
npm install grpc@1.10.1 fabric-ca-client fabric-client

跑个测试

性能测试示例在benchmark目录下,用法如下:

node benchmark/simple/main.js -c yourconfig.json -n yournetwork.json

跑一个smallbank的例子:

node benchmark/smallbank/main.js

生成的报告长这样(部分):

区块链性能测试工具caliper

架构

在这个标准框架核心,是可以译解信息的“适配层”,让Caliper可以安装智能合约,触发合约,或者查询各种分布式账本的状态,从而更好地测量其有效性。

区块链性能测试工具caliper

适配层 Adaptation Layer

适配层用于将现有的区块链系统与Caliper框架集成。适配器使用了相应的链SDK和API实现了Caliper Blockchain NBIs。

接口&核心层

应用层

区块链引擎

区块链性能测试工具caliper

配置文件

benchmark/simple/config.json为例:

{
  "blockchain": {
    "type": "fabric",
    "config": "benchmark/simple/fabric.json"
  },
  "command" : {
    "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d",
    "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)"
  },
  "test": {
    "name": "simple",
    "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions",
    "clients": {
      "type": "local",
      "number": 5
    },
    "rounds": [{
        "label" : "open",
        "txNumber" : [1000, 1000, 1000],
        "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}, {"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 150}}],
        "arguments": { "money": 10000 },
        "callback" : "benchmark/simple/open.js"
      },
      {
        "label" : "query",
        "txNumber" : [5000, 5000],
        "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 200}}],
        "callback" : "benchmark/simple/query.js"
      }]
  },
  "monitor": {
    "type": ["docker", "process"],
    "docker":{
      "name": ["all"]
    },
    "process": [
      {
        "command" : "node",
        "arguments" : "local-client.js",
        "multiOutput" : "avg"
      }
    ],
    "interval": 1
  }
}

Master

master实现的测试流包含三个阶段:

Local client

由于Node.js天生时单线程的,因此会fork多个local client子进程来充分利用多核,提高测试效率。每个子进程都运行有一个区块链客户端。

Zookeeper client

多个zoookeeper client是独立启动的,启动后会注册自己并待命测试任务,测试后会创建一个包含结果数据的znode。也是会fork多个子进程(local client)。

用户自定义的测试模块

其中定义有生成和提交交易的function(返回值都是promise):

撸一下源码

还是基于上边的架构图,这次从上往下捋。

首先是Benchmark Layer

从测试命令入手,以smallbank为例:

node benchmark/smallbank/main.js

测试用例位于benchmark/目录下。由测试人员编写,并配置到-c指定的配置文件的test.rounds[.callback]中。

main.js中主要是加载两个配置文件,然后调用src/comm/bench-flow.jsrun方法,将两个配置文件传进去:

const framework = require('../../src/comm/bench-flow.js');
    framework.run(absConfigFile, absNetworkFile);

bench-flow.js可以认为是测试引擎,run方法定义了完整的测试流程。

下边是接口和核心层

接口即Blockchain NBIs,位于src/comm/blockchain-interface.js中的,其中的BlockchainInterface定义了区块链的基本操作:

区块链性能测试工具caliper

为了生成测试报告,首先必须有监控来收集数据,主要侧重于对Docker和Process的监控,代码文件包括monitor-interface.jsmonitor-docker.jsmonitor-process.js。从名字可以看出是接口和两个具体实现,看一下接口定义了些啥:

区块链性能测试工具caliper

除了启停操作,主要侧重于对CPU、内存和网络的监控。

数据统计和报告生成功能位于src/comm/report.js

区块链性能测试工具caliper

适配层

caliper支持对Fabric、Sawtooth等的测试,看架构图上还想对以太坊进行支持,但是目前还没有。

具体的适配代码分别位于src/fabricsrc/sawtoothsrc/iroha等目录下,比如fabric.js中的Fabric类就继承自BlockchainInterface,实现了初始化、安装/执行智能合约等功能。

区块链性能测试工具caliper

这些功能内部自然就是调用了fabric-client,所以测试前需要先进行安装:

npm install grpc@1.10.1 fabric-ca-client fabric-client

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:区块链性能测试工具caliper-创新互联
标题路径:http://www.bluegullmedia.com/article/hoghh.html

其他资讯

让你的专属顾问为你服务

0.0592s