一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种区块链平台的负载测试方法和装置与流程

2022-06-22 14:04:53 来源:中国专利 TAG:


1.本发明涉及区块链领域,特别是涉及一种区块链平台的负载测试方法和装置。


背景技术:

2.随着科技的发展,区块链出现在人们的视野中。区块链(blockchain或block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。
3.随着区块链应用广泛程度的提升,对于区块链平台的负载测试和性能测试逐渐受到人们的关注。


技术实现要素:

4.有鉴于此,本技术提供一种区块链平台的负载测试方法和装置,用以对区块链平台进行负载测试和性能测试。
5.第一方面,本技术提供一种区块链平台的负载测试方法,方法包括:
6.监控模块发送测试指令至测试模块;
7.测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块;
8.基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块;
9.fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使hyperledger fabric进行节点打包;
10.fabric node sdk模块获取hyperledger fabric返回的响应,并根据返回的响应确定测试结果。
11.在一种可能的实施方式中,区块链平台包括基于hyperledger fabric 1.3版本部署的联盟链。
12.在一种可能的实施方式中,方法还包括:
13.hyperledger fabric 1.3测试环境联盟链参数化配置,其中,参数化配置包括配置区块大小。
14.在一种可能的实施方式中,测试指令还包含一次写入或者查询的数据的条数。
15.第二方面,本技术提供一种区块链平台的负载测试装置,装置包括监控模块、测试模块、基础交易模块和fabric node sdk模块,其中:
16.监控模块用于发送测试指令至测试模块;
17.测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块;
18.基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块;
19.fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使hyperledger fabric进行节点打包;
20.fabric node sdk模块获取hyperledger fabric返回的响应,并根据返回的响应
确定测试结果。
21.在一种可能的实施方式中,区块链平台包括基于hyperledger fabric 1.3版本部署的联盟链。
22.在一种可能的实施方式中,装置还包括参数配置模块,其中,参数配置模块用于对hyperledger fabric 1.3测试环境进行联盟链参数化配置,其中,参数化配置包括配置区块大小。
23.在一种可能的实施方式中,测试指令还包含一次写入或者查询的数据的条数。
24.第三方面,本技术提供一种电子设备,电子装置包括处理器和存储器,其中,存储器存储有代码,处理器用于调用存储器中存储的代码,实现以下功能:
25.监控模块发送测试指令至测试模块;
26.测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块;
27.基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块;
28.fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使hyperledger fabric进行节点打包;
29.fabric node sdk模块获取hyperledger fabric返回的响应,并根据返回的响应确定测试结果。
30.第四方面,本技术提供一种计算机可读存储介质,其特征在于,计算机可读存储介质用于存储计算机程序,计算机程序用于执行如上述任一项的方法。
31.采用本技术的技术方案,通过监控模块可以施加不同类型的区块链交易请求(invoke请求或query请求),通过内嵌的nodejs异步编程的负载发生器,可以参数化设置的请求速率施加负载,根据hyperledger fabric返回的响应,确定测试结果。例如。通过节点对交易进行排序和出块,并统计出块时间,设置不同的区块大小,有效分析不同的区块大小对交易的读写性能的影响,为生产上根据并发量设置区块大小提供有效依据。
附图说明
32.图1为本技术实施例提供的一种区块链平台的负载测试方法的流程图;
33.图2为本技术实施例提供的一种区块链平台的负载测试装置的结构示意图。
具体实施方式
34.为了便于理解本技术实施例提供的技术方案,首先对本技术实施例中的术语进行介绍。
35.区块链:可以理解为一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“公开透明”“集体维护”等特征。基于这些特征,区块链技术能够奠定坚持的“信任”基础、创造可靠的“合作”机制,因而具有广阔的运用前景。
36.区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链网络的核心是一个分布式账本,用于记录网络中发生的每一笔交易。
37.区块链账本通常被描述为去中心化的,这是因为它被网络中的众多节点复制,每一个节点协作维护这个账本。我们将看到去中心和协作是的强大作用在于将真实世界的商
品和服务交易映射到数字世界。
38.除了去中心化和协作以外,记录在区块链里的信息是只能添加的,使用加密技术保证一旦交易被添加到账本里就不能被修改了。这个不可逆的特性使它能轻松追溯到信息的来源。因此是区块链有时被成为证明系统。
39.联盟链:联盟区块链,只针对某个特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定。联盟链是一种需要注册许可的区块链,仅限于联盟成员参与。区块链上的读写权限、参与记账权限按照联盟规则来制定。
40.hyperledger fabric:私有区块链,像其他区块链技术一样,它有一个账本,使用智能合约,是一个由参与者共同管理他们的交易的系统。
41.hyperledger caliper:用来测试区块链平台性能的框架,通常得到的测试结果可以生成报告,测试的内容比较全面。
42.出块:区块链的节点都具备投票的权利。每次要出块的时候,所有的节点都会参与投票,按照不同的投票规则(共识机制)进行投票,从而选出一个节点,所有节点通过共识机制就达成了共识。本轮投票以选中的这个节点出的块为准,其他节点出的块不作数。
43.随着区块链应用广泛程度的提升,对于区块链平台的负载测试和性能测试逐渐受到人们的关注。
44.基于此,在发明人提供的本技术的实施例中,监控模块发送测试指令至测试模块;测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块;基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块;fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使hyperledger fabric进行节点打包;fabric node sdk模块获取hyperledger fabric返回的响应,并根据返回的响应确定测试结果。
45.采用本技术的技术方案,通过监控模块可以施加不同类型的区块链交易请求(invoke请求或query请求),通过内嵌的nodejs异步编程的负载发生器,可以参数化设置的请求速率施加负载,根据hyperledger fabric返回的响应,确定测试结果。例如。通过节点对交易进行排序和出块,并统计出块时间,设置不同的区块大小,有效分析不同的区块大小对交易的读写性能的影响,为生产上根据并发量设置区块大小提供有效依据。
46.需要说明的是,本发明提供的一种区块链平台的负载测试方法和装置,可用于区块链领域。上述仅为示例,并不对本发明提供的一种区块链平台的负载测试方法和装置的应用领域进行限定。
47.为了便于理解本技术实施例提供的技术方案,首先对本技术实施例常见的应用场景进行介绍。
48.银行的区块链平台通常是联盟链,基于hyperledger fabric 1.3版本部署。
49.银行的联盟链平台系统通常具有用户基数大、交易吞吐率高,以及交易请求响应时间短的特点。因此,客户端的负载压力测试和性能测试成为系统测试是重要关切点,例如,基于hyperledger fabric 1.3版本的客户端的测试。
50.目前已有的hyperledger caliper测试工具只支持1.1版本的hyperledger fabric,且不支持测试数据的本地保存和后期二次分析。因此,普遍缺乏一种支持基于
hyperledger fabrac 1.3版本的交易性能的方便的测试方案和设计工具。
51.本技术实施例的技术方案,得到一个负载测试工具作为fabric 1.3网络的node sdk客户端测试工具,该工具支持一般银行使用的1.3稳定fabric版本。
52.采用本技术实施例的技术方案,基于node sdk客户端连接hyperledger fabric 1.3的客户端负载测试,有效解决目前的hyperledger caliper版本适用性问题,以及二次扩展分析问题。
53.为了便于理解本技术实施例提供的技术方案,下面结合附图对本技术实施例提供的区块链平台的负载测试方法和装置进行说明。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。基于本技术中的实施例,本领域技术人员在没有作出创造性贡献前提下所获得的其他实施例,都属于本技术的保护范围。
54.在本技术的权利要求书和说明书以及说明书附图中,术语“包括”和“具有”以及它们的任何变形,目的在于覆盖不排他的包含。
55.本技术提供了一种区块链平台的负载测试方法。
56.请参阅图1,图1是本技术实施例提供的一种区块链平台的负载测试方法的流程图。如图1所示,本技术实施例中区块链平台的负载测试方法包括s101-s105。
57.s101、监控模块发送测试指令至测试模块。
58.测试指令中包含交易类型、并发次数,以及区块大小。
59.fabric联盟区块链中的交易通常分为三种:deploy,invoke和query。deploy指将chaincode链码安装到chain上;invoke为数据移动的交易请求,也即写入;query为查询的交易请求。
60.例如,测试指令用于指示交易请求的类型为invoke;测试指令用于指示交易类型为query。
61.并发次数,指的是同时发起交易请求的数量。
62.区块大小,指的是每个区块包含最大的交易数量maxmessagecount。
63.s102、测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块。
64.测试模块根据接收到的测试指令,执行负载请求到基础交易模块。
65.测试模块通过nodejs异步编程,并发执行交易请求施加负载。
66.测试模块具有nodejs模块通过异步编程,实现并发模拟区块链客户端交易请求的功能。
67.通过nodejs的异步非阻塞i/o的特点,根据监控模块的测试指令模拟交易负载,实现并发请求;以及调整并发次数,通过改变并发数施加不同的负载。
68.s103、基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块。
69.测试模块接收监控模块发送的测试指令,并按照测试指令执行负载请求到基础交易模块。
70.基础交易模块包含invoke写入功能和deploy查询功能。
71.s104、fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使区块链进行节点打包。
72.fabric node sdk模块作为客户端连接到hyperledger fabric联盟链网络。
73.测试模块和基础交易模块通过fabric node sdk模块连接到hyperledger fabric联盟链网络。
74.根据配置batchtimeout参数和maxmessagecount参数将交易分成区块。当交易数量到达maxmessagecount数量时将交易分成区块,或者当数量不足maxmessagecount但是时间超过batchtimeout参数设置的时间,也将交易打包成区块。
75.s105、fabric node sdk模块获取hyperledger fabric返回的响应,并根据返回的响应确定测试结果。
76.测试结果包括写入速度和/或查询速度。
77.采用本技术的技术方案,通过监控模块可以施加不同类型的区块链交易请求(invoke请求或query请求),通过内嵌的nodejs异步编程的负载发生器,可以参数化设置的请求速率施加负载,根据hyperledger fabric返回的响应,确定测试结果。例如。通过节点对交易进行排序和出块,并统计出块时间,设置不同的区块大小,有效分析不同的区块大小对交易的读写性能的影响,为生产上根据并发量设置区块大小提供有效依据。
78.下面结合具体的实现方式进行说明。
79.本技术实施例还提供了另一种区块链平台的负载测试方法。在本技术实施例中,以基于hyperledger fabric 1.3版本部署的联盟链为例,对区块链平台的负载测试方法进行说明。
80.本实施例的区块链平台的负载测试方法包括s201-s207,该方法应用于对基于hyperledger fabric 1.3版本部署的联盟链进行负载测试。
81.s201、硬件与软件环境搭建。
82.具体地,硬件与软件环境搭建可以包括:node.js依赖、nmp(node package manager)依赖、go语言相关依赖、docker容器等
83.node.js是一个基于chrome v8引擎的javascript运行环境。node.js使用一个事件驱动、非阻塞式i/o模型,让javascript运行在服务端的开发平台。nmp(node package manager)是包含在node.js里面的一个包管理工具,npm会随着node.js一起安装。
84.go语言(golang):一种静态强类型、编译型语言语法与c相近,具有内存安全、gc(垃圾回收)、结构形态以及csp-style并发计算的功能。
85.docker容器:一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括linux机器、windows机器),也可以实现虚拟化。
86.s202、hyperledger fabric 1.3测试环境联盟链参数化配置。
87.具体地,参数可以包括:peers参数、隔离信道channel参数、背书策略、区块的发布等待时间(batchtimeout)、每个区块包含最大的交易数量(maxmessagecount,也即区块大小)。
88.peers:区块链网络主要由一组peers节点组成。peers是网络的基本要素,因为他们主持分类账和智能合约。
89.本实施例提供一种参数化配置的方式:配置peers参数为2个机构,也即每机构2个;隔离信道channel参数为1个;背书策略为多peer节点背书确认;区块的发布等待时间
batchtimeout为1s;每个区块包含最大的交易数量maxmessagecount为不固定,也即区块大小不固定。
90.s203、监控模块发送测试指令至测试模块。
91.测试指令中包含交易类型、并发次数,以及区块大小。
92.在一些可能的实现方式中,测试指令还用于指示一次写入/查询数据的条数。通过调整一次写入/查询数据的条数,影响出块的速度,从而得到不同的写入/查询速度,得到不同的测试结果。
93.s204、测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块。
94.具体地,测试模块可以集成负载发生器,以模拟并发请求。
95.测试模块根据接收到的测试指令,执行负载请求到基础交易模块。
96.测试模块通过nodejs异步编程,并发执行交易请求施加负载。
97.测试模块具有nodejs模块通过异步编程,实现并发模拟区块链客户端交易请求的功能。
98.通过nodejs的异步非阻塞i/o的特点,根据监控模块的测试指令模拟交易负载,实现并发请求;以及调整并发次数,通过改变并发数施加不同的负载。
99.在一些实现方式中,测试模块用于采集并记录来自监控模块的测试指令。
100.在一些可能的实现方式中,可以将测试数据本地保存到例如excel格式的文件中,为后期二次分析提供数据。
101.测试模块还可以用于测试数据的本地存储,便于研究吞吐率、交易平均响应时间、最大最小响应时间、不同区块大小对应的最大并发请求数等性能参数,为后期生产环境的参数设置提供有效的参照依据。
102.s205、基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块。
103.测试模块接收监控模块发送的测试指令,并按照测试指令执行负载请求到基础交易模块。
104.基础交易模块包含invoke写入功能和deploy查询功能。
105.s206、fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使联盟链进行节点打包。
106.fabric node sdk模块作为客户端连接到hyperledger fabric联盟链网络。
107.测试模块和基础交易模块通过fabric node sdk模块连接到hyperledger fabric联盟链网络。
108.hyperledger fabric 1.3支持使用cli和node sdk来访问联盟链的网络,其中的fabric sdk node的异步非阻塞的特点作为fabric的客户端来访问fabric 1.3的区块链网络测试环境,由于nodejs基于事件驱动和非阻塞io模型,实现是基于libuv库,由于libuv的多线程的特点,因此,适合作为发起区块链invoke和query交易模拟的负载请求。
109.根据配置batchtimeout参数和maxmessagecount参数将交易分成区块。当交易数量到达maxmessagecount数量时将交易分成区块,或者当数量不足maxmessagecount但是时间超过batchtimeout参数设置的时间,也将交易打包成区块。
110.s207、fabric node sdk模块获取hyperledger fabric返回的响应,并根据返回的
响应确定测试结果。
111.hyperledger fabric返回的响应包括一笔交易成功,或者一笔交易失败。
112.在一些可能的情况中,根据hyperledger fabric返回的响应,能够确定平均响应时间。平均响应时间,也即从测试模块发起交易的时间,到hyperledger fabric返回响应的时间。由于并发交易有多笔,因此,平均响应时间可以为多笔相同类型的交易的响应时间的平均值。
113.在一些可能的情况中,根据hyperledger fabric返回的响应,能够确定hyperledger fabric的吞吐率。吞吐率指的是联盟链在单位时间内完成的交易数。
114.在一些可能的情况中,根据hyperledger fabric返回的响应,能够确定交易成功的比例,或交易失败的比例。
115.在一些可能的情况中,监控模块可以为单独的监控端;监控模块也可以和测试模块、基础交易模块和fabric node sdk位于相同的设备上。
116.在本技术实施例中,通过监控模块可以施加不同类型的区块链交易请求(invoke请求或query请求),通过内嵌的nodejs异步编程的负载发生器,可以参数化设置的请求速率施加负载,并采集分析数据,通过orderer节点对交易进行排序和出块,并统计出块时间,设置不同的区块大小,有效分析不同的区块大小对交易的读写性能的影响,为生产上根据并发量设置区块大小提供有效依据。
117.本技术实施例还提供了一种区块链平台的负载测试装置。
118.参见图2,图2为本技术实施例提供的一种区块链平台的负载测试装置的示意图。
119.如图2所示,本实施例中的区块链平台的负载测试装置200包括监控模块201、测试模块202、基础交易模块203和fabric node sdk模块204。
120.监控模块201用于发送测试指令至测试模块。
121.测试模块202根据测试指令模拟并发请求,并执行并发请求至基础交易模块203。
122.基础交易模块203根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块204。
123.fabric node sdk模块204提交签名交易请求至hyperledger fabric的节点,以使hyperledger fabric进行节点打包。
124.fabric node sdk模块204获取hyperledger fabric返回的数据,并根据返回的数据确定测试结果。
125.在一些可能的实现方式中,区块链平台包括基于hyperledger fabric 1.3版本部署的联盟链。
126.在一些可能的实现方式中,区块链平台的负载测试装置200还包括参数配置模块,其中,参数配置模块用于对hyperledger fabric 1.3测试环境进行联盟链参数化配置,其中,参数化配置包括配置区块大小。
127.在一些可能的实现方式中,测试指令还包含一次写入或者查询的数据的条数。
128.上述装置所包括的单元以及各单元之间的连接关系,能够达到和上述方法相同的技术效果,为避免重复,这里不再赘述。
129.本技术实施例还提供了一种电子设备。
130.实施例中的电子装置包括处理器和存储器,其中,存储器存储有代码,处理器用于
调用存储器中存储的代码,实现以下功能:
131.监控模块发送测试指令至测试模块;
132.测试模块根据测试指令模拟并发请求,并执行并发请求至基础交易模块;
133.基础交易模块根据接收到的并发请求,发送指定的交易类型给fabric node sdk模块;
134.fabric node sdk模块提交签名交易请求至hyperledger fabric的节点,以使hyperledger fabric进行节点打包;
135.fabric node sdk模块获取hyperledger fabric返回的数据,并根据返回的数据确定测试结果。
136.上述装置所包括的单元以及各单元之间的连接关系,能够达到和上述方法相同的技术效果,为避免重复,这里不再赘述。
137.在本技术的实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述区块链平台的负载测试方法,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献