前言

区块链行业的发展如火如荼,已经渗透到金融、政务、司法、民生等各个领域,区块链技术也日益受到人们的关注。然而,当你想选择某一区块链平台的时候,是否会遇到以下问题 :
1)给业务问题输出解决方案时,区块链选型焦头烂额 ?
2)选型区块链时,官方测评宣传性能猛如虎,实际一测猛虎看了都流泪…
3)钱都花了,怎么办 ?

区块链开源性能测评工具HyperBench,解决你的问题。图片图片图片
https://github.com/meshplus/HyperBench

原文链接:https://mp.weixin.qq.com/s/TdXMpXqget2Oz6eL0Iq_mw
关注公众号:QTech 解锁更多区块链技术干货!

HyperBench 值得拥有的开源测评工具

从产品定位来说,HyperBench是一个高效的区块链平台性能测试工具,具备通用、易用、可伸缩等核心优势。

通用化:可以适配Hyperchain、Xuperchain、CITA、Fabric、以太坊等多种不同的区块链主流平台,后续将持续扩展,期望最终可以达到区块链全平台的支持;

高易用:配置操作方便、测试脚本定制简单(基于统一标准库)、可快速构建平台测试,测试指标多样,支持可视化工具进行数据渲染,最终实现数据可视化统计分析;

可伸缩:HyperBench 具备良好的伸缩弹性,采用分布式集群方案进行压力调度,使其具备良好的伸缩延展性,同时还会最大化的优化单机性能,可以有效避免单一机器生成的压测负载量很快就会达到机器的资源上限问题,具备良好的压力输出能力。

轻松一用,高效测评

HyperBench在AWS c5d.2xlarge规格的云服务器上,测试轻客户端的区块链平台Hyperchain时,单机能够达到8000并发20000QPS的压力输出。

只需一条命令即可启动远程压测节点,简单配置就可以实现分布式压测。

^C
[hyperchain@CentOS-7 ddl]$ ./hyperbench-2 worker -p 8886^C
-bash-4.2$ ./hyperbench-2 worker -p 9081^C[hyperchain@CentOS-7 ddl]$ ./hyperbench-2 worker -p 8886^C-bash-4.2$ ./hyperbench-2 worker -p 9081

配置压测节点ip

启动压测服务

在测试过程中,HyperBench封装了区块链接口,用户只需要简单的lua操作就能实现特定的转账功能和合约操作,做到真正的易用,为测试人员排除后顾之忧。

转账功能示例,HyperBench的优势立显。

封装后:

合约操作示例-HyperBench的优势扩大。
无独有偶,合约操作示例更加简单,封装了底层接口的实现,用户只需要关注调用的方法和传参就可以实现自定义合约场景的压测。

封装前:

封装后:

为什么选择HyperBench

设计理念

在区块链领域实现通用区块链基准测试工具面临的主要难题有两方面:

一方面是现在并没有统一的区块链系统功能要求,各区块链系统所提供的功能各不相同,如何整合、适配主流的区块链系统是一个值得思考的问题;

另一方面是现在没有区块链系统统一的基准测试规范,大多是由系统研发公司与研究机构自行提出的,因此测试用例会随着时间不断变化,如何快速、灵活地根据变化的测试用例搭建测试环境同样是一个需要考虑的问题;

HyperBench对上述两个问题的解答是:从实际区块链系统使用者的视角出发,将区块链操作接口抽象成统一的合约部署、调用、查询等接口,借此来解决统一适配的问题;测试逻辑以脚本的形式构造,允许测试人员基于统一的区块链操作接口和测试引擎所暴露的钩子函数自由灵活地制定测试用例,以此来解决快速搭建测试环境的问题。

设计思路
总的来说,在架构上,HyperBench基于通用的测试引擎,通过将测试用例和被测区块链平台的接口分层抽象成易于扩展的基准层和适配层,使测试人员能够根据测试用例快速构建出不同区块链平台的测试用例,测评区块链系统在特定测试用例下的交易吞吐量与成功率。

HyperBench作为分布式高性能基准测试工具,其整体架构分为五个部分:

基准层主要由测试用例构成,每个测试用例又分成了两个部分,用来配置测试引擎的测试参数配置及基于测试引擎所暴露出来的钩子函数制定测试逻辑的Lua测试脚本。

引擎层主要是由五个通用的控制测试行为的组件构成。分布式控制器负责主从模式的分布式控制,主要是进行测试上下文和测试任务的分发。压力调度器主要负责根据参数向受测区块链系统输出压力。虚拟机池负责管理模拟用户行为所使用的Lua虚拟机。数据统计负责采集基准测试数据。可视化工具负责将采集到的数据进行渲染。

虚拟机层主要由若干Lua虚拟机组成。虚拟机由引擎层的虚拟机池管理,拥有独立的上下文,因此可以用来模拟用户操作逻辑。压力调度器通过并发调用虚拟机暴露出的钩子函数来实现压力输出。分布式控制器同样通过调用虚拟机暴露出的钩子函数来进行运行时的虚拟机上下文同步,同步内容包括智能合约地址、调用的ABI等。虚拟机所执行的逻辑中,一部分钩子函数的脚本代码是由基准层的Lua测试脚本编写的,还有一部分是HyperBench系统本身内置的。

适配层是将对区块链平台的操作统一抽象成合约部署、调用、查询、转账等区块链客户端接口,屏蔽区块链系统的功能细节。受测区块链系统使用各自的SDK实现客户端接口以进行适配。通过这种方式,为编写测试提供一个统一视角,方便形成统一的基准测试规范。

性能扩展层主要是为了加速Lua虚拟机执行测试逻辑的效率而增加的。使用Go实现Lua5.1的标准库,并且将一些测试中常用的工具方法,如长随机字符串生成等方法,内置到虚拟机中供测试人员使用,通过这种方式来尽量减小在系统中引入虚拟机和脚本带来的性能损失,提高测试工具性能。

设计对比

相较于当下流行的性能测评工具Caliper,HyperBench在易用性和扩展性上具备一定优势。

Caliper通过Node.js的线程与Promise机制来实现并发的压力输出。这种架构下的Caliper对于测试人员,在线程与Promise的模型下,较难在运行时缓存测试上下文,从而构造比较复杂的连续区块链操作用例。另外,由于Node.js的限制,如果不使用C/C++进行扩展的话,性能是比较差的。

HyperBench配置操作方便,脚本定制简单,可以快速构建区块链平台性能测试。HyperBench拥有强大的智能调度引擎,通过分布式控制器调节多台压力机,能够对压力数据运行时上下文进行分发、调控、汇总及可视化分析,同时又能保证单台压力机具有良好的压力输出能力,强大而又全面

总结

HyperBench 作为通用的性能基准测试框架,期望成为区块链行业人人都在用的通用性能测试工具,意在赋能区块链行业三大价值:技术价值、业务价值、生态价值。

技术价值

攻克区块链平台性能测试的痛点问题,提供灵活易用的测试引擎,提供能对接多种区块链平台的适配器,提供具备高拓展性的分布式控制器,提升区块链测试平台的易用性、通用性和可伸缩性。

业务价值

助力区块链性能测试标准化、易用化,促进区块链技术发展,更好赋能区块链业务。

生态价值

目前开源的区块链性能测试工具较少,趣链HyperBench平台支持多种主流区块链平台适配,并具备高易用、高通用、可伸缩的特点,贡献开放原子开源基金会有助于区块链开源生态体系的丰富和完善,促进相关标准的建设,整体促进区块链技术开源生态繁荣。

HyperBench可以在以下的场景中,助你一臂之力。

还等什么,Pick it !

区块链性能测试工具Hyperbench详解相关推荐

  1. 15种区块链共识算法全面详解

    1,摘要 本文尽可能列出所有主要的共识算法,评估各自的优劣之处.共识算法是区块链的核心技术,本文会跟随作者的理解,持续更新.如果读者发现有所遗漏,或是存在错误,希望能通过评论指出. 2,区块链共识算法 ...

  2. 区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-熊丽兵-专题视频课程...

    区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-103人已学习 课程介绍         区块链开发技术进阶-深入详解以太坊智能合约语言 solidity视频培训教程:本课程是 ...

  3. 以太坊和区块链实战技术分析详解

    想知道更多关于区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答!!以太坊和区块链 一.    以太坊和区块链的关系      从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技 ...

  4. WebPagetest H5性能测试工具入门详解

    总结下H5性能测试工具WebPagetest,非常赞的工具 WebPagetest的核心是用于测量和分析网页的性能.有很多选项,看着很吓人,但其实做快速测试是很简单的. 本指南将引导你提交测试和结果解 ...

  5. Redis-benchmark性能测试工具使用详解

    一.说明 Redis客户端源码包含一个名为redis-benchmark的性能测试工具,它可以模拟N个客户端同时向Redis发送M条查询命令的应用场景. 下载并安装了redis的安装目录就默认有: 二 ...

  6. EKT多链技术丨区块链新技术必读!详解EKT“多链多共识”

    首先为大家介绍一下--EKT多链技术 官网:http://ekt8.io EKT技术白皮书: https://github.com/EducationEKT/EKT/blob/master/docs/ ...

  7. iperf java_网络性能测试工具iperf详解

    Iperf有两种版本,windows版和linux版本.linux版本更新快,最新版本为iperf 3.0,下载地址为http://code.google.com/p/iperf/downloads/ ...

  8. linux中top工具,Linux命令工具 top详解

    Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...

  9. 收藏贴 :2019年必备43种区块链开发工具

    2019独角兽企业重金招聘Python工程师标准>>> 本文列出2019年最新整理的用于区块链开发的43种流行的开发库.开发工具与开发框架. 原文:43个区块链开发工具 - 汇智网 ...

  10. 工具--Typora详解

    工具–Typora详解 零.文章目录 一.MarkDown 1.MarkDown是什么 Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. Markdown 语言在 ...

最新文章

  1. 成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...
  2. wpf 加载本地html文件,c# – Wpf WebBrowser加载javascript
  3. OpenWrt-DreamBox 20120201下设置二级路由
  4. 【转】错误: ORA-01591: 锁被未决分布式事务处理 7.2.428982 持有--解决方案
  5. numpy.ndarray.view()(懵逼,看不太懂???)(view不会开辟新的内存空间)
  6. IDEA中找不到maven插件Plugin ‘org.apache.tomcat.maven:tomcat7-maven-plugin:2.2‘ not found
  7. 开始你的api:NetApiStarter
  8. 计算机编程语言的分类与python语言快速度认识
  9. 95-240-065-源码-state-托管算子状态
  10. C语言实现2048游戏(Windows版)
  11. Flex 加载pdf
  12. 如何使用.NET清除IE的缓存(Temporary Internet Files)
  13. msfconsole 控制台简介
  14. 【uniapp】 判断浏览器环境
  15. 【无标题】电商SaaS之觞
  16. 怎样用python计算π的值_Python 计算 π 值的简单示例
  17. 华为任正非最新发声:活下来!
  18. 一头扎进Shiro 笔记 实现role permission验证
  19. SQL Server 2000服务无法启动,提示“系统找不到指定的文件”解决方法及sp4安装不上...
  20. LeetCode·每日一题·782.变为棋盘·数学

热门文章

  1. WHYZOJ-#116[NOIP模拟] czy把妹(区间DP)
  2. 计算机如何写上大于符号,电脑大于等于号怎么打出来
  3. 标准差SD、相对标准偏差RSD学习和python实现
  4. 苹果在新西兰的所得税都缴纳给了澳大利亚
  5. 小程序赋值联动的解决办法
  6. OpenJudge NOI 2.1 1813:熄灯问题
  7. 【校招Verilog快速入门】组合逻辑篇:VL12、4bit超前进位加法器电路
  8. codeblocks编译器报错Id returned 1 exit status
  9. WIFI限制敏感网页_秒杀同类“付费投屏”软件,完全免费无限制
  10. 10月24日,咱们自己的节日来了!