区块链网络的压力测试方法及装置、系统与流程

    专利2022-07-08  72


    本说明书一个或多个实施例涉及区块链
    技术领域
    ,尤其涉及一种区块链网络的压力测试方法及装置、系统。
    背景技术
    :区块链技术(也被称之为,分布式账本技术)是一种去中心化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。通过向区块链网络导入压力测试流量,可以获知区块链网络的负载能力、数据吞吐量上限等各项性能指标,从而据此维护区块链网络的正常运行,或者针对区块链网络进行优化。技术实现要素:有鉴于此,本说明书一个或多个实施例提供一种区块链网络的压力测试方法及装置、系统。为实现上述目的,本说明书一个或多个实施例提供技术方案如下:根据本说明书一个或多个实施例的第一方面,提出了一种区块链网络的压力测试系统,包括:业务端,向处于生产状态的业务区块链网络发起区块链交易;业务区块链网络,所述业务区块链网络中的业务区块链节点在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易,在所述区块链交易为业务交易的情况下,执行所述业务交易;压测区块链网络,所述压测区块链网络中的压测区块链节点执行所述压测交易。根据本说明书一个或多个实施例的第二方面,提出了一种区块链网络的压力测试方法,应用于处于生产状态的业务区块链网络中的业务区块链节点,所述方法包括:识别业务端发起的区块链交易的交易类型;在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易;在所述区块链交易为业务交易的情况下,执行所述业务交易。根据本说明书一个或多个实施例的第三方面,提出了一种区块链网络的压力测试方法,应用于与处于生产状态的业务区块链网络对等的压测区块链网络中的压测区块链节点,所述方法包括:接收所述业务区块链网络中的业务区块链节点转发的压测交易,所述压测交易由所述业务区块链节点在业务端发起的区块链交易为压测交易的情况下转发;执行所述压测交易;其中,在所述区块链交易为业务交易的情况下,所述业务交易被所述业务区块链节点执行。根据本说明书一个或多个实施例的第四方面,提出了一种区块链网络的压力测试装置,应用于处于生产状态的业务区块链网络中的业务区块链节点,所述装置包括:识别单元,识别业务端发起的区块链交易的交易类型;转发单元,在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易;执行单元,在所述区块链交易为业务交易的情况下,执行所述业务交易。根据本说明书一个或多个实施例的第五方面,提出了一种区块链网络的压力测试装置,应用于与处于生产状态的业务区块链网络对等的压测区块链网络中的压测区块链节点,所述装置包括:接收单元,接收所述业务区块链网络中的业务区块链节点转发的压测交易,所述压测交易由所述业务区块链节点在业务端发起的区块链交易为压测交易的情况下转发;执行单元,执行所述压测交易;其中,在所述区块链交易为业务交易的情况下,所述业务交易被所述业务区块链节点执行。根据本说明书一个或多个实施例的第六方面,提出了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如上述实施例中任一所述的方法。根据本说明书一个或多个实施例的第七方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述实施例中任一所述方法的步骤。附图说明图1是一示例性实施例提供的一种网络架构的示意图。图2是一示例性实施例提供的一种区块链网络的压力测试方法的流程图。图3是一示例性实施例提供的一种区块链网络的压力测试系统的示意图。图4是一示例性实施例提供的另一种区块链网络的压力测试系统的示意图。图5是一示例性实施例提供的一种设备的结构示意图。图6是一示例性实施例提供的一种区块链网络的压力测试装置的框图。图7是一示例性实施例提供的另一种区块链网络的压力测试装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。图1是一示例性实施例提供的一种网络架构的示意图。如图1所示,业务端11产生处理请求后,将该处理请求发送至区块链网关12,由区块链网关12针对该处理请求创建区块链交易,并将区块链交易提交至区块链网络13,使得区块链网络13上的区块链节点执行该区块链交易。当针对区块链网络13存在压力测试(简称“压测”)需求时,业务端11可以生成压测请求类型的处理请求(包含用于压力测试的数据),而区块链网关12可以针对这些压测请求创建相应的区块链交易,并由区块链网络13执行这些区块链交易以对区块链网络13进行压力测试;以及,区块链网关12将区块链网络13执行区块链交易而产生的交易回执反馈至业务端11,以由业务端11对交易回执进行分析后,确定区块链网络13的压测结果。而在生产环境下,业务端11、区块链网关12和区块链网络13之间的交互过程,与上述的压测过程类似:业务端11生成业务请求类型的处理请求,区块链网关12针对这些业务请求创建相应的区块链交易,并由区块链网络13执行这些区块链交易;以及,区块链网关12将区块链网络13执行区块链交易而产生的交易回执反馈至业务端11。在全链路压测场景下,涉及到生产环境中的压力测试。为了避免上述的压测请求与业务请求之间产生相互干扰,业务端11可以在业务请求中添加压测标签以区分于业务请求;当然,也可以在业务请求中添加业务标签以区分于压测请求。但是,区块链网关12在创建区块链交易时,由于需要遵守现有的交易格式等相关规定,因而无法针对不同处理请求对应的区块链交易予以区分,即无法将上述的压测标签或业务标签等特征标签带入到区块链网络13中,造成区块链网络13产生的交易回执同样无法携带上述的特征标签,使得业务端11无法有效区分交易回执的来源,无法据此准确获知区块链网络13的压测结果。下面结合实施例对本说明书的压力测试方案进行描述。在本说明书的区块链网络的压力测试系统中,包括业务端、业务区块链网络和压测区块链网络。其中,业务端向处于生产状态的业务区块链网络发起区块链交易;业务区块链网络中的业务区块链节点在该区块链交易为压测交易的情况下,向与业务区块链网络对等的压测区块链网络转发该压测交易,在区块链交易为业务交易的情况下,执行该业务交易;压测区块链网络中的压测区块链节点执行业务区块链节点转发的压测交易。下面对区块链网络的压力测试系统中各方执行的操作进行详细说明。请参见图2,图2是一示例性实施例提供的一种区块链网络的压力测试方法的流程图。如图2所示,该方法应用于处于生产状态的业务区块链网络中的业务区块链节点,可以包括以下步骤:步骤202,识别业务端发起的区块链交易的交易类型。在本实施例中,区块链客户端用于创建区块链交易,并向业务区块链网络提交创建的区块链交易。因此,业务端可通过区块链客户端向业务区块链网络发起区块链交易。在一种情况下,区块链客户端可部署于业务端上,由业务端通过区块链客户端直接与业务区块链网络进行交互,创建相应的区块链交易提交至业务区块链网络来满足实际需求。当针对业务区块链网络存在压测需求时,业务端可通过区块链客户端创建压测类型的区块链交易(即压测交易,包含用于压力测试的数据),当针对业务区块链网络存在业务需求时,业务端可通过区块链客户端创建业务类型的区块链交易(即业务交易,包含用于实现业务的数据)。作为一示例性实施例,可通过在区块链交易中添加类型标识的方式来对压测交易和业务交易进行区分。比如,可在压测交易中添加第一类型标识,在业务交易中添加第二类型标识。那么,业务区块链网络中的业务区块链节点在接收到业务端提交的区块链交易后,可读取接收到的区块链交易包含的类型标识。在该类型标识为第一类型标识的情况下,将接收到的区块链交易判定为压测交易,在该类型标识为第二类型标识的情况下,将接收到的区块链交易判定为业务交易。相应的,在执行压测交易生成第一交易回执时,可在第一交易回执中添加第一类型标识,以用于表明第一交易回执与压测交易相对应。类似的,在执行业务交易生成第二交易回执时,可在第二交易回执中添加第二类型标识,以用于表明第二交易回执与业务交易相对应。也即,对应于压测交易的第一交易回执中包含第一类型标识,对应于业务交易的第二交易回执中包含第二类型标识。那么,业务端在获取到返回的交易回执后,可根据交易回执中的类型标识来识别交易回执的类型,进而将第一交易回执存储至压测数据库,将第二交易回执存储至业务数据库,便于后续进行分析。可见,通过上述改进创建区块链交易的方式,使得压测标签和业务标签等特征标签可带入到区块链网络中,从而实现压测属性在区块链网络中的传递。而对于添加类型标识的方式,在一种情况下,可在区块链交易中添加type字段(或者其他任意字段),用于标记区块链交易为业务交易或压测交易。比如,当任一区块链交易type字段的取值为第一取值时,表明该区块链交易属于业务交易,当任一区块链交易type字段的取值为第二取值(区别于第一取值)时,表明该区块链交易属于压测交易。相应地,可在交易回执中也添加type字段,用于标记该交易回执由执行业务交易而生成还是由执行压测交易而生成,那么业务端便可在获取交易回执后,按照上述识别type字段取值的方式来识别交易回执的类型,进而进行差异化处理。在另一种情况下,还可复用区块链交易和交易回执中的已有字段,在已有字段中添加类型标识。比如,复用区块链交易中的“reserved字段”来表明区块链交易的交易类型;例如,可在“reserved字段”中添加业务标签,使得区块链网络上的区块链节点可以将包含业务标签的区块链交易识别为业务交易,而将未包含业务标签的区块链交易识别为压测交易。或者,可在“reserved字段”中添加压测标签,使得区块链节点可将包含压测标签的区块链交易识别为压测交易,而将未包含压测标签的区块链交易识别为业务交易。或者,还可同时在“reserved字段”中添加业务标签和压测标签,使得区块链节点可将包含业务标签的区块链交易识别为业务交易,将包含压测标签的区块链交易识别为压测交易。需要说明的是,针对在交易回执中添加类型标识的方式与上述类似,在此不再赘述。在另一种情况下,区块链客户端部署于业务区块链网络中的业务区块链节点上。比如,业务区块链网络中的节点设备上部署有两套逻辑代码。其中,第一套逻辑代码对应于区块链客户端,节点设备通过运行第一套逻辑代码以使得链下的业务端可通过该区块链客户端与业务区块链网络进行数据交互。第二套逻辑代码对应于业务区块链网络(即业务区块链网络的链代码),节点设备通过运行第二套逻辑代码来作为业务区块链网络中的业务区块链节点。举例而言,业务端可向业务区块链网络中的节点设备发送处理请求来实现与业务区块链网络的交互。其中,处理请求可包含用于调用压测区块链网络执行压力测试的压测请求、用于调用业务区块链网络执行生产业务的业务请求等。而节点设备在接收到业务端的处理请求后,通过区块链客户端识别该处理请求的请求类型,进而创建与请求类型对应的区块链交易,并向业务区块链网络提交该区块链交易。同时,节点设备作为业务区块链网络中的业务区块链节点,获取区块链客户端提交的区块链交易,并识别该区块链交易的交易类型。其中,业务端的处理请求中可包含类型标识,区块链客户端可据此识别处理请求的请求类型。进一步的,区块链客户端在创建与处理请求对应的区块链交易时,同样可在区块链交易中添加类型标识以用于标记该区块链交易的交易类型。因此,可根据获取到的区块链交易包含的类型标识来确定该区块链交易的交易类型。以处理请求分为压测请求和业务请求为例,压测请求中包含第一类型标识,业务请求中包含第二类型标识,那么,区块链客户端在根据第一类型标识识别出接收到的处理请求为压测请求后,可创建与之对应的压测交易,并在压测交易中添加第一类型标识。类似的,区块链客户端在根据第二类型标识识别出接收到的处理请求为业务请求后,可创建与之对应的业务交易,并在业务交易中添加第二类型标识。步骤204,在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易。在本实施例中,为了避免压力测试与生产业务之间相互干扰,可分别部署用于响应压测交易的压测区块链网络,以及用于响应业务交易的业务区块链网络。其中,压测区块链网络为与业务区块链网络对等的区块链网络。进一步的,由业务区块链网络中的区块链节点配合业务端与区块链网络,以实现业务端与业务区块链网络以及压测区块链网络之间的数据交互。具体而言,处于生产状态的业务区块链网络中的业务区块链节点在接收到的区块链交易为压测交易时,将该压测交易转发至压测区块链网络,以由压测区块链网络中的压测区块链节点对该压测交易进行响应。而在业务区块链节点在接收到的区块链交易为业务交易时,直接执行该业务交易以实现相应的业务。可见,在本说明书中的压测方案中,由业务区块链网络中的业务区块链节点直接来获取业务端发起的区块链交易以及识别区块链交易的交易类型。本领域技术人员应当理解的是:在业务端需要与业务区块链网络进行数据交互的情况下(即业务端需要调用业务区块链网络来实现生产业务),若由独立于业务端和区块链网络(包括业务区块链网络和压测区块链网络)的区块链网关来接收业务端创建的区块链交易,以及识别出交易类型进而向相应区块链网络分发区块链交易,或者由该区块链网关来响应于业务端发送的处理请求而创建相应的区块链交易,进而向相应区块链网络分发创建的区块链交易,则业务端与业务区块链网络之间多了一跳,将因区块链网关的分发造成一定的延迟,业务区块链网络无法及时获取到业务交易以进行响应,从而降低了业务实现的效率。而本说明书中的压测方案取消了上述用于配合业务端和区块链网络进行数据交互的区块链网关,由业务区块链网络中的业务区块链节点来代为执行上述分发操作。在业务端需要与业务区块链网络进行数据交互的情况下,业务区块链网络中的业务区块链节点与业务端之间少了一跳,可直接获取到业务端发起的业务交易,从而可降低延迟,提高响应业务交易的速度,进而提升业务实现的效率。同时,业务端可在指定时间段内发起压测交易,比如该指定时间段可以是避开业务高峰期,譬如深夜等业务数据流量处于低谷的时间段。那么,即便是由业务区块链网络中的业务区块链节点来执行分发区块链交易的操作,也不会对业务区块链网络造成处理负担。步骤206,在所述区块链交易为业务交易的情况下,执行所述业务交易。为了便于理解,下面结合图3,以区块链客户端部署于业务端上(即由业务端来创建区块链交易)为例进行说明,而区块链客户端部署于业务区块链节点上的方案与此类似。如图3所示,可以针对处于生产状态的业务区块链网络32部署对等的压测区块链网络33,使得业务区块链网络32用于实现生产业务,压测区块链网络33用于实现压力测试。其中,压测区块链网络33与业务区块链网络32完全对等,具有相同的网络结构和网络配置(包括硬件和软件配置),使得针对压测区块链网络33所实施的压力测试能够体现出业务区块链网络32的真实状况。比如,压测区块链网络33与业务区块链网络32的机器资源、网络资源、计算资源、存储资源均相同。同时,由于压测区块链网络33与业务区块链网络32完全对等,那么在配置压测区块链网络33时无需对现有的区块链网络进行改造,比如直接按照部署业务区块链网络32的方式部署压测区块链网络33即可,在技术实现上较为简单,避免因技术实现较为复杂导致提高部署成本的问题。当针对业务区块链网络32存在压测需求时,业务端31可创建压测交易,该压测交易中包含第一类型标识(比如为压测标签)和用于进行压力测试的数据。当针对业务区块链网络32存在业务需求时,业务端31可创建业务交易,该业务交易中包含第二类型标识(比如为业务标签)和用于实现生产业务的数据。然后,业务端31可将创建好的区块链交易提交至业务区块链网络32。实际上,无论业务端31创建的是业务交易还是压测交易,业务端31都是直接与业务区块链网络32进行交互,也即业务端31仅感知业务区块链网络32,无需感知压测区块链网络33。比如,业务端31感知业务区块链网络32中业务区块链节点的ip地址以与其进行通讯即可,而无需感知压测区块链网络中的压测区块链节点的ip地址。业务区块链网络32中的业务区块链节点在接收到区块链交易后,需要读取该区块链交易中包含的类型标识以对其交易类型进行识别,从而对不同交易类型的区块链交易进行差异化处理。当接收到的区块链交易为业务交易时,业务区块链网络32中的业务区块链节点则针对该业务交易进行共识、执行、上链等操作,并生成相应的交易回执。比如,业务端31可以将创建好的区块链交易发送至业务区块链网络32中的某一业务区块链节点32n,而业务区块链节点32n需要对接收到的区块链交易的交易类型予以识别,以确定该区块链交易为业务交易还是压测交易。当确定出该区块链交易为业务交易时,区块链节点32n可以进一步将该业务交易传递至业务区块链网络32中的其他区块链节点,使得业务区块链网络32中的所有业务区块链节点可以针对该业务交易进行共识、执行、上链等操作,并生成相应的交易回执(包含第二类型标识,即上述业务标签)。当业务区块链网络32中的业务区块链节点识别出接收到的区块链交易为压测交易时,业务区块链网络32中的业务区块链节点则将该压测交易转发至压测区块链网络33,以由压测区块链网络33中的压测区块链节点针对该压测交易进行共识、执行、上链等操作,并生成相应的交易回执(包含第一类型标识,即上述压测标签)。对于物理世界产生的真实数据,可以将其构建成区块链网络所支持的标准的交易(transaction)格式,然后发布至区块链网络,由区块链网络中的节点设备对收到的交易进行共识处理,并在达成共识后,由区块链网络中作为记账节点的节点设备(即区块链节点),将这笔交易打包进区块,在区块链网络中进行持久化存证。具体而言,业务区块链网络32针对接收到的业务交易,由业务区块链网络32中的所有业务区块链节点对其进行共识处理,从而在共识通过后再执行该业务交易以及将该业务交易打包进区块。类似的,压测区块链网络33针对接收到的压测交易,由压测区块链网络33中的所有压测区块链节点对其进行共识处理,从而在共识通过后再执行该压测交易以及将该压测交易打包进区块。其中,区块链网络中支持的共识算法可以包括:第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(proofofwork,pow)、股权证明(proofofstake,pos)、委任权益证明(delegatedproofofstake,dpos)等共识算法;第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(practicalbyzantinefaulttolerance,pbft)等共识算法。在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。如上所述,无论区块链网络采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链网络末尾,从而完成区块链网络的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中包含的交易。而针对业务区块链网络32中的业务区块链节点向压测区块链网络33转发压测交易的方式,根据配置业务区块链节点和压测区块链节点的方式而存在一定不同。一方面,针对向压测区块链网络转发压测交易的方式,存在两种情况。在一种情况下,由于压测区块链网络33是与业务区块链网络32对等的区块链网络,压测区块链网络33中压测区块链节点的数量与业务区块链网络32中业务区块链节点的数量相同,即压测区块链节点与业务区块链节点为一一对应的关系。因此,业务区块链网络32中的业务区块链节点可向压测区块链网络33中与自身对应的压测区块链节点发送压测交易,从而实现各个业务区块链节点向相应的压测区块链节点对等地转发压测交易。举例而言,假定业务区块链网络32中业务区块链节点和压测区块链网络33中压测区块链节点之间的对应关系如表1所示。业务区块链节点压测区块链节点aabbccdd表1那么,由业务区块链节点a向压测区块链节点a转发压测交易,由业务区块链节点b向压测区块链节点b转发压测交易,由业务区块链节点c向压测区块链节点c转发压测交易,由业务区块链节点d向压测区块链节点d转发压测交易。在另一种情况下,区别于上述对等转发的方式,由业务区块链网络32中的业务区块链节点向压测区块链网络33中的所有压测区块链节点分别发送压测交易。比如,承接于上述表1中的举例,由业务区块链节点a分别向压测区块链节点a~d转发压测交易,由业务区块链节点b分别向压测区块链节点a~d转发压测交易,由业务区块链节点c分别向压测区块链节点a~d转发压测交易,由业务区块链节点d分别向压测区块链节点a~d转发压测交易。另一方面,业务端31向业务区块链网络32中的业务区块链节点提交压测交易,而业务端31(可能存在多个)在提交多笔压测交易时,可以分别向不同的业务区块链节点提交压测交易。因此,针对转发的压测交易,存在两种情况。在一种情况下,业务区块链网络32中的任一业务区块链节点可向压测区块链网络33转发该业务区块链节点从业务端31处接收到的压测交易。以上述压测区块链节点与业务区块链节点“一一对应”的情况为例,业务区块链节点a可向压测区块链节点a转发业务区块链节点a从业务端31处接收到的50笔压测交易,业务区块链节点b可向压测区块链节点b转发业务区块链节点b从业务端31处接收到的40笔压测交易,业务区块链节点c可向压测区块链节点c转发业务区块链节点c从业务端31处接收到的30笔压测交易,业务区块链节点d可向压测区块链节点d转发业务区块链节点d从业务端31处接收到的20笔压测交易。而各个压测区块链节点在接收到压测交易后,可在压测区块链网络中广播自身接收到的压测交易,使得所有压测区块链节点可获取到相同的压测交易,进而所有压测区块链节点可针对这些相同的压测交易进行共识、执行、上链等操作。比如,压测区块链节点a可在压测区块链网络中广播自身接收到的50笔压测交易,即压测区块链节点b、c、d可获取到这50笔压测交易。类似的,压测区块链节点b可在压测区块链网络中广播自身接收到的40笔压测交易,即压测区块链节点a、c、d可获取到这40笔压测交易。压测区块链节点c可在压测区块链网络中广播自身接收到的30笔压测交易,即压测区块链节点a、b、d可获取到这30笔压测交易。压测区块链节点d可在压测区块链网络中广播自身接收到的20笔压测交易,即压测区块链节点a、b、c可获取到这20笔压测交易。通过上述广播过程,压测区块链节点a~d均可获取到140笔相同的压测交易,进而针对这140笔压测交易进行共识、执行、上链等操作。在另一种情况下,业务区块链网络32中的任一业务区块链节点可向压测区块链网络33转发业务区块链网络32中所有业务区块链节点从业务端31处接收到的压测交易。其中,业务区块链网络32中的每个业务区块链节点在从业务端31处接收到压测交易后,可在业务区块链网络32中广播自身接收到的压测交易,使得业务区块链网络32中的所有业务区块链节点之间可同步接收到的压测交易,也即每个业务区块链节点均可获取到所有业务区块链节点从业务端处接收到的压测交易,进而将这些压测交易转发至业务区块链网络。或者,可在业务区块链网络32中配置用于转发压测交易的转发节点,那么在业务区块链网络32中的某一业务区块链节点为转发节点的情况下,由该业务区块链节点向压测区块链网络33转发压测交易。业务区块链网络32中各个业务区块链节点可将从业务端处接收到的压测交易发送至转发节点,由转发节点统一将所有业务区块链节点从业务端处接收到的压测交易转发至压测区块链网络33。比如,转发节点可与压测区块链网络33中的某一压测区块链节点建立连接,从而将所有压测交易转发至该压测区块链节点,以由该压测区块链节点在压测区块链网络33中广播来自转发节点的压测交易,使得压测区块链网络33中的所有压测区块链节点可获取来自转发节点的压测交易,进而进行共识、执行、上链等操作。又如,转发节点可与压测区块链网络33中的每个压测区块链节点建立连接,从而将所有压测交易转发至每个压测区块链节点,使得压测区块链网络33中的所有压测区块链节点可获取来自转发节点的压测交易,进而进行共识、执行、上链等操作。其中,可由业务区块链网络32中各个业务区块链节点之间进行协商选取出转发节点。或者,在部署业务区块链网络32的阶段选取出转发节点,从而将该转发节点的节点信息写入链代码中,使得各个业务区块链节点将链代码中记录的节点信息对应的业务区块链节点确认为转发节点。业务端31可以通过与业务区块链网络32中的某一业务区块链节点之间建立连接,从而向该业务区块链节点提交创建的区块链交易,该业务区块链节点可以为如图3所示的业务区块链节点32n。以业务区块链节点32n为例,业务端31与业务区块链节点32n之间建立的连接可以为长连接,使得业务区块链节点32n执行业务交易生成第二交易回执,以及从压测区块链网络33获得第一交易回执之后,可以产生相应的交易回执生成事件,而业务端31可以通过监听该交易回执生成事件获知交易回执已生成(即事件监听机制),并基于上述的长连接获取相应的交易回执(第一交易回执或第二交易回执)。当然,也可以由业务区块链节点32n自身通过上述的事件监听机制来监听交易回执生成事件,并通过上述的长连接将相应的交易回执反馈至业务端31,使得业务端31获得交易回执。或者,如果业务端31与业务区块链节点32n之间建立的连接并非长连接或者所建立的长连接断开,业务端31需要额外通过发起一笔查询交易,以查询所提交的区块链交易对应的交易回执。其中,该查询交易可以为常规的区块链交易,使得业务区块链网络32中的所有区块链节点均需针对该查询交易进行获取、共识、执行、上链等操作,而业务端31可以通过上述方式与某一业务区块链节点建立长连接,并基于上述的事件监听机制从该业务区块链节点处获取相应的交易回执;或者,该查询交易可以为特殊交易,譬如业务端31可以仅与业务区块链节点32n建立长连接并发送该查询交易,那么该查询交易仅会被业务区块链节点32n获取并执行,该查询交易无需参与共识且不需要上链,甚至无需被其他区块链节点获取,然后业务端31可以基于如前所述的事件监听机制获取相应的交易回执。而对于压测区块链网络33中的压测区块链节点执行压测交易后生成的第一交易回执,业务区块链网络32中的业务区块链节点同样可基于如前所述的事件监听机制获取该第二交易回执,在此不再赘述。例如,可由业务区块链节点32n与压测区块链节点33n之间建立连接,从而基于如前所述的事件监听机制获取第二交易回执。相应地,业务端31在获取交易回执后,可根据交易回执中包含的类型标识来识别获取到的交易回执对应于压测交易还是对应于业务交易。当获取到的交易回执中包含第一类型标识时,判定该交易回执为第一交易回执(即对应于压测交易);当获取到的交易回执中包含第二类型标识时,判定该交易回执为第二交易回执(即对应于业务交易)。进一步的。业务端31可以将第一交易回执存储至压测数据库,将第二交易回执存储至业务数据库,后续可以从压测数据库获取第一交易回执,以分析确定针对业务区块链网络32的压测结果。在本说明书中,对应于上述业务区块链节点侧的实施例,本说明书还提出了压测区块链网络中压测区块链节点侧的实施例,在业务区块链节点侧的实施例中所涉及的描述同样可以适用于压测区块链节点侧的实施例,下文中不再对此进行赘述。请参见图4,图4是一示例性实施例提供的另一种区块链网络的压力测试方法的流程图。如图4所示,该方法应用于与处于生产状态的业务区块链网络对等的压测区块链网络中的压测区块链节点,可以包括以下步骤:步骤402,接收所述业务区块链网络中的业务区块链节点转发的压测交易,所述压测交易由所述业务区块链节点在业务端发起的区块链交易为压测交易的情况下转发;步骤404,执行所述压测交易;其中,在所述区块链交易为业务交易的情况下,所述业务交易被所述业务区块链节点执行。如前所述,压测区块链节点可接收所述业务区块链网络中与所述压测区块链节点对应的业务区块链节点转发的压测交易。如前所述,压测区块链节点可接收所述业务区块链网络中作为转发节点的业务区块链节点转发的压测交易。如前所述,压测区块链节点可接收所述业务区块链网络中的业务区块链节点转发的从所述业务端处接收到的压测交易;或者,接收所述业务区块链网络中的业务区块链节点转发的所述业务区块链网络中所有业务区块链节点从所述业务端处接收到的压测交易。如前所述,所述压测交易中包含第一类型标识,所述业务交易中包含第二类型标识。如前所述,对应于所述压测交易的第一交易回执中包含所述第一类型标识,对应于所述业务交易的第二交易回执中包含所述第二类型标识。如前所述,所述第一交易回执被存储至压测数据库,所述第二交易回执被存储至业务数据库。如前所述,所述压测区块链网络与所述业务区块链网络具有相同的网络结构和网络配置。如前所述,所述区块链交易由所述业务端通过区块链客户端向所述业务区块链网络发起。如前所述,所述区块链客户端部署于所述业务端上;或者,所述区块链客户端部署于所述业务区块链网络中的业务区块链节点上。图5是一示例性实施例提供的一种设备的示意结构图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行,在逻辑层面上形成区块链网络的压力测试装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。请参考图6,在一软件实施方式中,该区块链网络的压力测试装置应用于处于生产状态的业务区块链网络中的业务区块链节点,可以包括:识别单元602,识别业务端发起的区块链交易的交易类型;转发单元604,在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易;执行单元606,在所述区块链交易为业务交易的情况下,执行所述业务交易。可选的,所述转发单元604具体用于:向所述压测区块链网络中与所述业务区块链节点对应的压测区块链节点发送所述压测交易;或者,向所述压测区块链网络中的所有压测区块链节点分别发送所述压测交易。可选的,所述转发单元604具体用于:在所述业务区块链节点为所述业务区块链网络中的转发节点的情况下,向所述压测区块链网络转发所述压测交易。可选的,所述转发单元604具体用于:向所述压测区块链网络转发所述业务区块链节点从所述业务端处接收到的压测交易;或者,向所述压测区块链网络转发所述业务区块链网络中所有业务区块链节点从所述业务端处接收到的压测交易。可选的,所述识别单元602具体用于:读取所述区块链交易包含的类型标识;在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。可选的,对应于所述压测交易的第一交易回执中包含所述第一类型标识,对应于所述业务交易的第二交易回执中包含所述第二类型标识。可选的,所述第一交易回执被存储至压测数据库,所述第二交易回执被存储至业务数据库。可选的,所述压测区块链网络与所述业务区块链网络具有相同的网络结构和网络配置。可选的,所述区块链交易由所述业务端通过区块链客户端向所述业务区块链网络发起。可选的,所述区块链客户端部署于所述业务端上;或者,所述区块链客户端部署于所述业务区块链网络中的业务区块链节点上。请参考图7,在另一软件实施方式中,该区块链网络的压力测试装置应用于与处于生产状态的业务区块链网络对等的压测区块链网络中的压测区块链节点,可以包括:接收单元702,接收所述业务区块链网络中的业务区块链节点转发的压测交易,所述压测交易由所述业务区块链节点在业务端发起的区块链交易为压测交易的情况下转发;执行单元704,执行所述压测交易;其中,在所述区块链交易为业务交易的情况下,所述业务交易被所述业务区块链节点执行。可选的,所述接收单元702具体用于:接收所述业务区块链网络中与所述压测区块链节点对应的业务区块链节点转发的压测交易。可选的,所述接收单元702具体用于:接收所述业务区块链网络中作为转发节点的业务区块链节点转发的压测交易。可选的,所述接收单元702具体用于:接收所述业务区块链网络中的业务区块链节点转发的从所述业务端处接收到的压测交易;或者,接收所述业务区块链网络中的业务区块链节点转发的所述业务区块链网络中所有业务区块链节点从所述业务端处接收到的压测交易。可选的,所述压测交易中包含第一类型标识,所述业务交易中包含第二类型标识。可选的,对应于所述压测交易的第一交易回执中包含所述第一类型标识,对应于所述业务交易的第二交易回执中包含所述第二类型标识。可选的,所述第一交易回执被存储至压测数据库,所述第二交易回执被存储至业务数据库。可选的,所述压测区块链网络与所述业务区块链网络具有相同的网络结构和网络配置。可选的,所述区块链交易由所述业务端通过区块链客户端向所述业务区块链网络发起。可选的,所述区块链客户端部署于所述业务端上;或者,所述区块链客户端部署于所述业务区块链网络中的业务区块链节点上。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。当前第1页1 2 3 
    技术特征:

    1.一种区块链网络的压力测试系统,包括:

    业务端,向处于生产状态的业务区块链网络发起区块链交易;

    业务区块链网络,所述业务区块链网络中的业务区块链节点在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易,在所述区块链交易为业务交易的情况下,执行所述业务交易;压测区块链网络,所述压测区块链网络中的压测区块链节点执行所述压测交易。

    2.根据权利要求1所述的系统,所述业务端通过区块链客户端向所述业务区块链网络发起区块链交易。

    3.根据权利要求2所述的系统,所述区块链客户端部署于所述业务端上;或者,所述区块链客户端部署于所述业务区块链网络中的业务区块链节点上。

    4.根据权利要求1所述的系统,所述业务区块链网络中的业务区块链节点读取所述区块链交易包含的类型标识,在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。

    5.根据权利要求4所述的系统,对应于所述压测交易的第一交易回执中包含所述第一类型标识,对应于所述业务交易的第二交易回执中包含所述第二类型标识。

    6.一种区块链网络的压力测试方法,应用于处于生产状态的业务区块链网络中的业务区块链节点,所述方法包括:

    识别业务端发起的区块链交易的交易类型;

    在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易;

    在所述区块链交易为业务交易的情况下,执行所述业务交易。

    7.根据权利要求6所述的方法,所述识别业务端提交的区块链交易的交易类型,包括:

    读取所述区块链交易包含的类型标识;

    在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。

    8.根据权利要求7所述的方法,对应于所述压测交易的第一交易回执中包含所述第一类型标识,对应于所述业务交易的第二交易回执中包含所述第二类型标识。

    9.根据权利要求6所述的方法,所述区块链交易由所述业务端通过区块链客户端向所述业务区块链网络发起。

    10.根据权利要求6所述的方法,所述向与所述业务区块链网络对等的压测区块链网络转发所述压测交易,包括:

    向所述压测区块链网络中与所述业务区块链节点对应的压测区块链节点发送所述压测交易;或者,

    向所述压测区块链网络中的所有压测区块链节点分别发送所述压测交易。

    11.根据权利要求6所述的方法,所述向与所述业务区块链网络对等的压测区块链网络转发所述压测交易,包括:

    在所述业务区块链节点为所述业务区块链网络中的转发节点的情况下,向所述压测区块链网络转发所述压测交易。

    12.根据权利要求6所述的方法,所述向与所述业务区块链网络对等的压测区块链网络转发所述压测交易,包括:

    向所述压测区块链网络转发所述业务区块链节点从所述业务端处接收到的压测交易;或者,

    向所述压测区块链网络转发所述业务区块链网络中所有业务区块链节点从所述业务端处接收到的压测交易。

    13.根据权利要求6所述的方法,所述第一交易回执被存储至压测数据库,所述第二交易回执被存储至业务数据库。

    14.根据权利要求6所述的方法,所述压测区块链网络与所述业务区块链网络具有相同的网络结构和网络配置。

    15.根据权利要求6所述的方法,所述区块链客户端部署于所述业务端上;或者,所述区块链客户端部署于所述业务区块链网络中的业务区块链节点上。

    16.一种区块链网络的压力测试方法,应用于与处于生产状态的业务区块链网络对等的压测区块链网络中的压测区块链节点,所述方法包括:

    接收所述业务区块链网络中的业务区块链节点转发的压测交易,所述压测交易由所述业务区块链节点在业务端发起的区块链交易为压测交易的情况下转发;

    执行所述压测交易;其中,在所述区块链交易为业务交易的情况下,所述业务交易被所述业务区块链节点执行。

    17.根据权利要求16所述的方法,在所述区块链交易包含的类型标识为第一类型标识的情况下,所述区块链交易被所述业务区块链节点判定为压测交易,在所述区块链交易包含的类型标识为第二类型标识的情况下,所述区块链交易被所述业务区块链节点判定为业务交易。

    18.根据权利要求17所述的方法,对应于所述压测交易的第一交易回执中包含所述第一类型标识,对应于所述业务交易的第二交易回执中包含所述第二类型标识。

    19.根据权利要求16所述的方法,所述区块链交易由所述业务端通过区块链客户端创建,并向所述业务区块链网络发起。

    20.根据权利要求16所述的方法,所述接收所述业务区块链网络中的业务区块链节点转发的压测交易,包括:

    接收所述业务区块链网络中与所述压测区块链节点对应的业务区块链节点转发的压测交易。

    21.根据权利要求16所述的方法,所述接收所述业务区块链网络中的业务区块链节点转发的压测交易,包括:

    接收所述业务区块链网络中作为转发节点的业务区块链节点转发的压测交易。

    22.根据权利要求16所述的方法,所述接收所述业务区块链网络中的业务区块链节点转发的压测交易,包括:

    接收所述业务区块链网络中的业务区块链节点转发的从所述业务端处接收到的压测交易;或者,

    接收所述业务区块链网络中的业务区块链节点转发的所述业务区块链网络中所有业务区块链节点从所述业务端处接收到的压测交易。

    23.根据权利要求16所述的方法,所述第一交易回执被存储至压测数据库,所述第二交易回执被存储至业务数据库。

    24.根据权利要求16所述的方法,所述压测区块链网络与所述业务区块链网络具有相同的网络结构和网络配置。

    25.根据权利要求16所述的方法,所述区块链客户端部署于所述业务端上;或者,所述区块链客户端部署于所述业务区块链网络中的业务区块链节点上。

    26.一种区块链网络的压力测试装置,应用于处于生产状态的业务区块链网络中的业务区块链节点,所述装置包括:

    识别单元,识别业务端发起的区块链交易的交易类型;

    转发单元,在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易;

    执行单元,在所述区块链交易为业务交易的情况下,执行所述业务交易。

    27.一种区块链网络的压力测试装置,应用于与处于生产状态的业务区块链网络对等的压测区块链网络中的压测区块链节点,所述装置包括:

    接收单元,接收所述业务区块链网络中的业务区块链节点转发的压测交易,所述压测交易由所述业务区块链节点在业务端发起的区块链交易为压测交易的情况下转发;

    执行单元,执行所述压测交易;其中,在所述区块链交易为业务交易的情况下,所述业务交易被所述业务区块链节点执行。

    28.一种电子设备,包括:

    处理器;

    用于存储处理器可执行指令的存储器;

    其中,所述处理器通过运行所述可执行指令以实现如权利要求6-25中任一项所述的方法。

    29.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求6-25中任一项所述方法的步骤。

    技术总结
    本说明书一个或多个实施例提供一种区块链网络的压力测试方法及装置、系统;该方法应用于处于生产状态的业务区块链网络中的业务区块链节点,可以包括:识别业务端发起的区块链交易的交易类型;在所述区块链交易为压测交易的情况下,向与所述业务区块链网络对等的压测区块链网络转发所述压测交易;在所述区块链交易为业务交易的情况下,执行所述业务交易。

    技术研发人员:陈盛龙;周知远;杨达一;姚忠孝
    受保护的技术使用者:支付宝(杭州)信息技术有限公司
    技术研发日:2020.06.24
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22557.html

    最新回复(0)