区块链性能测试工具caliper

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

  • fabric v1.0+
  • sawtooth 1.0+
  • Iroha 1.0

测试内容指标包括:

  • 交易成功率
  • 交易吞吐量TPS
  • 交易延迟
  • 资源消耗

感受一下先

准备

先安装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 [email protected] fabric-ca-client fabric-client

跑个测试

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

node benchmark/simple/main.js -c yourconfig.json -n yournetwork.json
  • -c用于指定区块链的配置文件,不指定的话默认为config.json
  • -n用于指定区块链网络配置文件,不指定的话由-c指定的配置文件定义。

跑一个smallbank的例子:

node benchmark/smallbank/main.js

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

架构

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

适配层 Adaptation Layer

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

接口&核心层

  • 区块链操作接口:包含部署合约、调用合约、查询账本状态等操作;
  • 资源监控:对docker容器、本地进程进行监控,包括CPU、内存、网络IO等的状态;
  • 性能分析:读取预定义的性能数据(如TPS、延迟、成功率等)并打印报告。这些数据在调用NBI的时候会记录(如创建时间,交易提交时间,交易结果等);
  • 生成HTML报告。

应用层

  • 应用层来运行区块链测试场景。每一个测试场景由一个配置文件来定义,包含底层区块链网络的配置和测试参数。
  • 项目内置一个默认的区块链引擎,当然开发人员也可以基于NBI来定义自己的区块链引擎。

区块链引擎

配置文件

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
  }
}
  • blockchain定义被测试区块链类型,并给出具体配置文件;
  • command定义了测试开始和结束时的命令;
  • test定义了测试相关的信息;
  • monitor定义了对资源对象如何进行监控。

Master

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

  • 准备阶段:创建和初始化区块链,部署智能合约,并启动监控;
  • 测试阶段:启动一个循环测试,测试任务会被安排给client去执行,client会返回性能测试数据;
  • 报告阶段:分析测试数据,并生成HTML格式的报告。
    Order

    Client

Local client

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

Zookeeper client

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

用户自定义的测试模块

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

  • init:会在每轮测试前被client调用;
  • run:定义如何执行交易。client会根据workload定义循环调用它;
  • end:每轮测试后被调用,通常定义一些清理工作。

撸一下源码

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

首先是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定义了区块链的基本操作:

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

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

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

适配层

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

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

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

npm install [email protected] fabric-ca-client fabric-client

原文地址:http://blog.51cto.com/liukang/2143275

时间: 2024-10-09 18:09:09

区块链性能测试工具caliper的相关文章

华为云首批通过可信区块链评测

华为云首批通过可信区块链评测来源:互联网近年来,区块链技术正在被各行各业所认可,具有"降成本.提效率.优化产业诚信环境"的作用.基于区块链系统,数据可以被有效地确权,通过"可信数字化"的数据上链过程,有效地保障数据的真实性,实事求是地为产业解决过往难以解决的问题,从"降成本"和"提效率"两个方面推动各行业的转型升级. 日前,在2019华为中国生态合作伙伴大会上,华为云就发布了区块链+政务.区块链+公司间交易.区块链+供应链物流

区块链商城开发的价值在哪里

区块链系统讲解,区块链商城定制,区块链软件分析,区块链平台讨论,区块链模式,区块链APP搭建,区块链商城,区块链系统. 互联网设备需要因应现场变化做出实时反应,若一切数据都交由后端负责,网络数据的传送往返加上处理器的运算时间,有可能会带来重大损失,这时若终端设备具有足够的运算能力,就可处理简易但高实时需求的指令. 商业是每一个市场主体共同努力的结果,同时也是区块链的参与者,每个参与者都可以在区块链中找到属于自己的位置,贡献出一技之长,并且获得相应的报酬实现自身价值. 区块链商城系统有什么好处?现

区块链与Git版本工具的比较

区块链与Git版本工具的比较 来源:http://www.jianshu.com/p/b96b98983df6 作者: 梁波林 相同点: 1. 分布式存储方案 2. 链式数据 3. 去中心化 4. 支持离线访问 5. 交易量较小 6. 参与方多,网络规模大 不同: 1. 数据内容 Git: 文件版本 BC: 账本 2.一致性 Git: 不追求强一致性,人工合并冲突 BC: 要求较强的一致性,冲突时自动根据多数决定,根据链的长度决定,自动废弃分支 3. 管理单元 Git: Commit,Proje

Hyperledger Fabric区块链工具configtxgen配置configtx.yaml

configtx.yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件,configtx.yaml的内容直接决定了所生成的创世区块的内容.本文将给出configtx.yaml的详细中文说明. 如果需要快速掌握Fabric区块链的链码与应用开发,推荐访问汇智网的在线互动教程: Fabric区块链Java开发详解 Fabric区块链NodeJS开发详解 Capabilities / 通道能力配置 Capabilities段用来定

【免费下载】全套最新 05区块链拍卖系统 视频教程+教学资料+学习课件+源代码+软件开发工具

05区块链拍卖系统视频教程 网盘地址: 链接:https://pan.baidu.com/s/1YnMrm1qprZtUla2V10Ojvg 提取码:lqnt 加公众号 获取更多新教程 教程目录大纲 ./05区块链拍卖系统 ├── 拍卖系统资料.zip └── 视频 ├── 110_拍卖系统_业务背景和整体架构(上).avi ├── 111_拍卖系统_业务背景和整体架构(下).avi ├── 112_拍卖系统_合约编写(一)上架商品.avi ├── 113_拍卖系统_合约编写(二)拍卖逻辑.av

【免费下载】全套最新 04区块链投票系统 视频教程+教学资料+学习课件+源代码+软件开发工具

04区块链投票系统视频教程 网盘地址: 链接:https://pan.baidu.com/s/10f26Ev\_PA3X\_grQmasd1ww 提取码:6uer 加公众号 获取更多新教程 教程目录大纲 ./04区块链投票系统 ├── 视频 │?? ├── 投票系统 (10).avi │?? ├── 投票系统 (11).avi │?? ├── 投票系统 (12).avi │?? ├── 投票系统 (13).avi │?? ├── 投票系统 (14).avi │?? ├── 投票系统 (15).a

【免费下载】全套最新 03区块链以太坊理论 视频教程+教学资料+学习课件+源代码+软件开发工具

03区块链以太坊理论视频教程 网盘地址: 链接:https://pan.baidu.com/s/1Lf9QB2dl2Zk4FeWOvaup\_A 提取码:ug7u 加公众号 获取更多新教程 教程目录大纲 ./03区块链以太坊理论 ├── 视频 │?? ├── 001_以太坊课程简介.mp4 │?? ├── 002_以太坊简介(一).avi │?? ├── 003_以太坊简介(二).avi │?? ├── 004_以太坊简介(三).avi │?? ├── 005_以太坊简介(四).avi │??

颠覆ICO的区块链金融市场新工具——STO

继2018年ICO持续破发,区块链技术神话被打破,无资产.无信用.割韭菜.资金盘.跑路等事件的持续不断发生,币圈开始衍生出一种新型的以资产和价值作为基础的模式. 它在本质上如同传统金融行业市场中的股票,也类似古老流传至今具有增值和保值价值的黄金. 它简称STO,即Security Token Offering,我们用拆分法来看「Security」表明它是证券,必须接受监管,走向合规:「Offering」表明它以更广泛的筹集资金为目的,是一种融资方式:「Token」表明它是区块链技术的产物,意图改

区块链技术系列(3)- Fabric基础架构原理

前言 对于区块链方面多技术,我还是建议大家多看英文文档,多利用Google来搜索技术文章. 怎么搭建自己专属V-P-N来访问Google,请看我之前发的文章: 新人如何快速搭建自己的个人网站以及自己专属V-P-N代理 Linux基金会于2015年12月启动了名为"超级账本"(Hyperledger)的开源项目,旨在推动各方协作,共同打造基于区块链的企业级分布式账本底层技术,用于构建支撑业务的行业应用和平台. 超级账本里包括10个项目(project),其中区块链框架类项目5个:Fabr