东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

Hyperledger Caliper:测量区块链性能的工具

  • 2018-10-20
  • 本文字数:5324 字

    阅读完需:约 17 分钟

导读:作者 Ashish,喜欢研究区块链、密码学和计算机网络。这次他给我们介绍了测量区块链性能的工具:Hyperleder Caliper。Caliper 项目最初于 2017 年 5 月启动,全球信息与通信技术公司华为积极参与了该项目的设计和开发。Hyperledger Caliper 是一个区块链基准测试工具,让项目可以不间断地跟踪不同区块链实现的性能特性。Hyperledger Caliper 初始版本的重点是每秒事务数(TPS)、延迟和资源利用率。

区块链技术日益受到人们的关注,但是,你在为业务问题创建解决方案之前,却无法测试各种可用区块链平台的性能。为了解决这一痛点,Hyperledger 社区提供了一个名为“Hyperledger Caliper”的工具,可用来测试区块链平台的性能。

Hyperledger Caliper

Caliper 是一个区块链性能基准测试框架,它允许用户使用预定义的用例测试不同的区块链解决方案,并获得一组性能测试结果。

目前支持的性能指标:

  • 成功率
  • 事务吞吐量
  • 事务延迟(最小值、最大值、平均值、百分比)
  • 资源消耗(CPU、内存、网络 IO 等)

架构

适配层

使用适配层将现有的区块链系统集成到 Caliper 框架中。每个适配器通过使用相应的区块链的原生 SDK 或 RESTful API 来实现区块链的 Caliper NBI。

接口和核心层

接口和核心层实现核心功能,并为上行应用程序(up-applications)提供了北向接口,共四种 NBI:

  1. 区块链操作接口:包含在后端区块链上部署智能合约、调用合约、从分类账查询状态等操作。
  2. 资源监控器:包含启动、停止监控器和获取后端区块链系统的资源消耗状态的操作,包括 CPU、内存、网络 IO 等。目前提供了两种监控器,一种是监控本地和远程 docker 容器,另一种是监控本地进程。
  3. 性能分析器:包含读取预定义性能统计数据(包括 TPS、延迟、成功率等)和打印基准测试结果的操作。在调用区块链 NBI 时记录关键指标,例如事务的创建时间和提交时间、事务结果等。
  4. 报告生成器:包含用于生成 HTML 格式测试报告的操作。

应用层

应用层包含针对典型区块链场景实现的测试。每个测试都有一个配置文件,用于定义后端区块链网络和测试参数。

内置了一个默认基准测试引擎,用来帮助开发人员理解框架,并快速实现自己的测试。开发人员可以在没有框架的情况下直接使用 NBI 来实现他们的测试。

基准测试引擎:

Master:

Master 实现了一个包含三个阶段的默认测试流:

  1. 准备阶段:在此阶段,Master 使用区块链配置文件创建并初始化内部区块链对象,按照配置中指定的方式部署智能合约,并启动监控器对象来监控后端区块链系统的资源消耗。
  2. 测试阶段: Master 根据基准测试配置文件启动一个循环测试、来执行测试。任务将根据定义的工作负载生成并分配给 Client。将存储客户的性能统计返回,以供以后分析。
  3. 报告阶段:分析每一轮测试的所有客户端统计数据,并自动生成 HTML 格式报告。

Client:

Local Client:

在这种模式下,Master 使用 Node.js 集群模块分叉多个 Local Client 来进行实际的测试工作。

Zookeeper Client:

在这种模式下,多个 Zookeeper Client 独立启动。Zookeeper 客户端将在启动后注册并监控测试任务。测试之后,将创建一个包含性能统计结果的 znode。

Caliper 示例报表格式:

配置文件:

使用两种配置文件。一个是基准测试配置文件,它定义了类似工作负载的基准测试。

另一个是区块链配置文件,它指定了有助与 SUT 交互的必要信息。

下面是一个基准测试配置文件示例:

先决条件:

  • 确保已经安装下列工具:
    • NodeJS 8.X
    • node-gyp
    • Docker
    • Docker-compose

git clone https://github.com/hyperledger/caliper.git

要在本地安装依赖项,请在 caliper 文件夹中运行 npm install。

安装区块链 SDK:

Fabic

在根文件夹中运行:

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

Sawtooth

安装依赖项:

npm install protocol-buffers

使用存储库安装 sawtooth JavaScript SDK。

run npm install sawtooth-sdk in the root folder

在根文件夹中运行:

npm install sawtooth-sdk

Iroha

安装 Iroha 库

在 Caliper 的根文件夹中运行:

npm install -no-save iroha-lib@0.1.7

Composer

安装依赖项:

更新主 package.json 文件,包含所需的 Composer 和 Fabic 模块,然后运行 npm install 来安装。

运行基准测试:

在基准测试文件夹中,可以找到所有预定义的基准测试。

要开始基准测试,只需在根文件夹中运行它即可:

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

参数 -c:指定基准测试的配置文件。如果不指定此参数,则 config.json 将用作默认值。

参数 -n:指定被测区块链网络的配置文件。如果不指定此参数,则在基准测试配置文件中指定文件地址。

注意:

  • 你还可以使用 npm 脚本来运行基准测试。

npm 运行列表:

复制代码
> caliper@0.1.0 list /home/hurf/caliper
> node ./scripts/list.js

可用基准测试:

复制代码
drm
simple

使用特定配置文件来运行基准测试:

npm test — — simple -c ./benchmark/simple/config.json -n ./benchmark/simple/fabric.json

复制代码
> caliper@0.1.0 test /home/hurf/caliper
> node ./scripts/test.js "simple" "-c" "./benchmark/simple/config.json" "-n" "./benchmark/simple/fabric.json"
......

使用去中心化 Client 进行基准测试:

1. 启动 ZooKeeper 服务;

2. 通过运行节点./src/comm/client/zoo-client.js zookeeper-server 或 npm run startclient — — zookeeper-server 分别在目标计算机上启动 Client。

例如:

$ npm run startclient — 10.229.42.159:2181

复制代码
> caliper@0.1.0 startclient /home/hurf/caliper
> node ./src/comm/client/zoo-client.js "10.229.42.159:2181"
Connected to ZooKeeper
Created client node:/caliper/clients/client_1514532063571_0000000006
Created receiving queue at:/caliper/client_1514532063571_0000000006_in
Created sending queue at:/caliper/client_1514532063571_0000000006_out
Waiting for messages at:/caliper/client_1514532063571_0000000006_in......

3. 将配置文件中的 Client 类型设置修改为 zookeeper。

例如: 

复制代码
"clients": {
"type": "zookeeper",
"zoo" : {
"server": "10.229.42.159:2181",
"clientsPerHost": 5
}
}

4. 像往常一样,在任何机器上启动基准测试。

注意:

  • Zookeeper 用于注册 Client 和交换信息。启动的 Client 将在 /caliper/clients/ 下添加新的 znode。基准测试检查目录以了解有多少 Client,并根据工作负载为每个 Client 分配任务。
  • Client 之间没有自动时间同步。你应该手动同步目标计算机之间的时间,例如使用“ntpdate”命令。
  • 区块链配置文件必须存在于运行 Client 的计算机上,且文件的相对路径(相对于 caliper 文件夹)必须相同。配置中的所有引用文件也必须存在。

编写你自己的基准测试

Caliper 提供了一组 nodejs NBI(北向接口),供应用程序与后端区块链系统交互。查看src/comm/blockchain.js来了解 NBI。多重适配器实现将 NBI 转换为不同的区块链协议。因此,开发人员可以编写一次基准测试,并在不同的区块链系统中运行它。

一般来说,要编写一个新的 caliper 基准测试,你需要:

  • 为想要测试的系统编写智能合约
  • 使用 caliper NBI 编写一个测试流。Caliper 提供了一个默认的基准测试引擎,它可以插拔并可配置,可以轻松地集成新的测试。有关更多的详细信息,请参阅基准测试引擎。
  • 编写配置文件来定义后端网络和基准测试参数。

参考: https://github.com/hyperledger/caliper

原文链接: https://medium.com/@kotsbtechcdac/tool-to-measure-blockchain-performance-hyperledger-caliper-f192adfba52

感谢杜小芳对本文的审校。

2018-10-20 15:5012110
用户头像

发布了 368 篇内容, 共 170.1 次阅读, 收获喜欢 939 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

不会用“函数选项模式”的朋友看过来,这么写很优雅

王中阳Go

Go golang 高效工作 学习方法 后端

拥抱下一代前端工具链-Vue老项目迁移Vite探索

京东科技开发者

前端 vite 迁移 Vue 3 企业号 2 月 PK 榜

InstructPix2Pix:指挥机器修改图像

Zilliz

webpack热更新原理(面试大概率会问)

Geek_02d948

JavaScript 前端

如何整理自己的前端面试题库

Geek_02d948

JavaScript 前端

NGINX Ingress Controller 在动态 Kubernetes 云环境中的性能测试

NGINX开源社区

nginx NGINX Ingress Controller 企业号 2 月 PK 榜

滴滴前端常考vue面试题

yyds2026

Vue 前端

NGINX QUIC & HTTP/3 最新进展

NGINX开源社区

nginx HTTP 企业号 2 月 PK 榜

2022年度中国一级市场融资事件数量下降52% ;红杉中国、腾讯投资最活跃|2022年全球投融资年报

创业邦

堡垒机采购注意事项说明-行云管家

行云管家

网络安全 数据安全 堡垒机

阿里云物联网平台业务Topic规划最佳实践——实践类

阿里云AIoT

小程序 物联网 存储 智能硬件 数据格式

Kyligence 出席全球人工智能开发者先锋大会并成功主办分论坛

Kyligence

数据服务 人工智能大会

京东前端二面常见vue面试题及答案

yyds2026

Vue 前端

webpack配置优化,让你的构建速度飞起

Geek_02d948

行云管家免费吗?安全吗?好用吗?

行云管家

安全 行云管家 行云管家堡垒机

[触觉智能RK3568]指定单个OpenHarmony镜像进行独立编译

离北况归

OpenHarmony

vue中的几个高级概念

yyds2026

Vue 前端

分布式锁实现原理与最佳实践

阿里技术

分布式锁

koa实战

coder2028

JavaScript 前端

中创中间件:基于鲲鹏DevKit开发统一监管平台,性能提升55%

Geek_2d6073

大家一起来找茬,新手第一次layout到底能挑出多少毛病?

华秋PCB

工具 PCB 电路板 layout PCB设计

通用信息抽取技术UIE产业案例解析,Prompt范式落地经验分享!

飞桨PaddlePaddle

nlp 模型 情感分析 飞桨 PaddlePaddle

如何应对突发的流量激增和服务器过载问题

NGINX开源社区

nginx 流量 应用交付 企业号 2 月 PK 榜

利用规则引擎的M2M实现设备之间联动——实践类

阿里云AIoT

小程序 物联网 智能硬件 网络性能优化

vue3实战-完全掌握ref、reactive

yyds2026

Vue 前端

跬智信息全新推出云原生数据底座玄武,助力国产化数据服务再次升级

Kyligence

云原生 大数据分析

软件测试 | 持续集成的开源方案攻略(二)jenkins pipeline

测吧(北京)科技有限公司

测试

碎片化NFT系统开发模式定制智能合约部署详情

开发微hkkf5566

Memblaze 联合 OpenCloudOS 完成技术兼容互认证

OpenCloudOS

Linux SSD

SREWorks v1.1 版本发布 | 组件插拔场景化部署能力

阿里云大数据AI技术

大数据 运维 存储 企业号 2 月 PK 榜

植根中国,开放合作,英特尔中国开源技术委员会成立

科技之家

Hyperledger Caliper:测量区块链性能的工具_语言 & 开发_Ashish_InfoQ精选文章