区块链分域触发方法及系统与流程

文档序号:18523976发布日期:2019-08-24 10:03阅读:300来源:国知局
区块链分域触发方法及系统与流程

本公开实施例涉及通信技术领域,特别涉及一种区块链分域触发方法及系统。



背景技术:

区块链(blockchain)基于p2p传输、共识机制、加密算法、块链式数据结构、分布式数据存储等技术,实现了去中心化的可信数字架构。区块链核心是去中心化,以点对点传输为承载,利用分布式节点共识算法、加密算法、块链式数据结构来生成不可篡改和不可伪造的分布式账本。但是,正因为其去中心化的思想,在任意两个节点间都会有广播消息、共识算法消息、数据块同步等数据流量。当区块链网络节点数达到一定规模时,数据流量激增,将会给传输网络带来较大压力,同时各节点也面临计算量的压力。

为解决以上问题,目前采用一种区块链分域方法,在区块链节点数达到一定规模时,将全部节点分拆到两个不同的域中,本域内的节点间的广播、共识算法消息限定在本域内,不扩散至其它域,但发生新的记账时将数据块进行跨域同步,后续如果本域的节点的数量规模达到分域标准时,将进行再次分域,依此类推,通过分域的方式可以达到降低网络流量、减轻节点计算量的目的。

但是,将节点的数量规模这种单一的静态因素作为触发区块链分域的条件,不太合理,难以实现高效合理的区块链分域。



技术实现要素:

本公开实施例提供一种区块链分域触发方法及系统。

第一方面,本公开实施例提供一种区块链分域触发方法,该区块链分域触发方法包括:

当第一节点加入区块链网络时,获取区块链网络中的各第二节点的当前负载参数;

根据各第二节点的当前负载参数,计算出区块链网络的当前整体负载参数;

判断所述区块链网络的当前整体负载参数是否大于预先获取的触发分域负载阈值;

若判断出区块链网络的当前整体负载参数大于预先获取的触发分域负载阈值时,触发分域流程,完成第一节点的加入;

若判断出区块链网络的当前整体负载参数小于或等于预先获取的触发分域负载阈值时,不触发分域流程,完成第一节点的加入。

在一些实施例中,所述获取区块链网络中的各第二节点的当前负载参数包括:

从所述第一节点相邻的第二节点获取区块链负载信息表,所述区块链负载信息表包括节点负载信息表,所述节点负载信息表包括各第二节点的当前负载参数。

在一些实施例中,所述区块链负载信息表还包括配置参数表,所述配置参数表包括所述触发分域负载阈值。

在一些实施例中,所述节点负载信息表还包括各第二节点的节点序号和各第二节点的节点地址。

在一些实施例中,第二节点的当前负载参数node_load=cpu_load*w_c+memory_load*w_m,其中,node_load为第二节点的当前负载参数,cpu_load为第二节点的当前cpu平均资源利用率,w_c为cpu_load对应的预设权重,memory_load为第二节点的当前内存平均资源利用率,w_m为memory_load对应的预设权重,w_c、w_m∈(0,1),w_c+w_m=1。

在一些实施例中,所述根据各第二节点的当前负载参数,计算出区块链网络的当前整体负载参数包括:

将各第二节点的当前负载参数进行求和;

将求和结果除以第二节点的总数量,得到所有第二节点的当前负载参数的平均值,所述区块链网络的当前整体负载参数为所述平均值。

第二方面,本公开实施例提供一种区块链分域触发系统,该区块链分域触发系统包括:

获取模块,用于当第一节点加入区块链网络时,获取区块链网络中的各第二节点的当前负载参数;

计算模块,用于根据各第二节点的当前负载参数,计算出区块链网络的当前整体负载参数;

判断模块,用于判断所述区块链网络的当前整体负载参数是否大于预先获取的触发分域负载阈值;

触发分域模块,用于若判断模块判断出区块链网络的当前整体负载参数大于预先获取的触发分域负载阈值时,触发分域流程,完成第一节点的加入;若判断模块判断出区块链网络的当前整体负载参数小于或等于预先获取的触发分域负载阈值时,不触发分域流程,完成第一节点的加入。

在一些实施例中,所述获取模块具体用于从所述第一节点相邻的第二节点获取区块链负载信息表,所述区块链负载信息表包括节点负载信息表,所述节点负载信息表包括各第二节点的当前负载参数。

在一些实施例中,所述区块链负载信息表还包括配置参数表,所述配置参数表包括所述触发分域负载阈值。

在一些实施例中,所述计算模块具体用于将各第二节点的当前负载参数进行求和;将求和结果除以第二节点的总数量,得到所有第二节点的当前负载参数的平均值,所述区块链网络的当前整体负载参数为所述平均值。

本公开实施例所提供的区块链分域触发方法及系统,当第一节点(新节点)加入区块链网络时,通过判断区块链网络的当前整体负载参数是否大于预先获取的触发分域负载阈值,来决定是否触发区块链分域,从而实现了高效合理的区块链分域,有效避免单一静态因素作为分域触发条件存在的不合理性的问题。

附图说明

图1为本公开实施例提供的一种区块链分域触发方法的流程图;

图2为本公开实施例提供的一种区块链分域触发系统的结构示意图。

具体实施方式

为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的区块链分域触发方法及系统进行详细描述。

图1为本公开实施例提供的一种区块链分域触发方法的流程图,如图1所示,该区块链分域触发方法包括:

步骤11、当第一节点加入区块链网络时,获取区块链网络中的各第二节点的当前负载参数。

步骤12、根据各第二节点的当前负载参数,计算出区块链网络的当前整体负载参数。

步骤13、判断区块链网络的当前整体负载参数是否大于预先获取的触发分域负载阈值,若是,触发分域流程,完成第一节点的加入,若否,不触发分域流程,完成第一节点的加入。

在本公开实施例中,第一节点为区块链网络的新节点,各第二节点为区块链网络中已有的节点,在步骤11中,当新节点(第一节点)加入区块链网络时,获取区块链网络中已有的各节点(第二节点)的当前负载参数。其中,第二节点的当前负载参数是指第二节点的最新的负载参数。

在一些实施例中,步骤11包括:当第一节点加入区块链网络时,从第一节点相邻的第二节点获取区块链负载信息表。

在一些实施例中,第一节点相邻的第二节点为第一节点加入区块链网络时,首次连接到的节点(第二节点)。在区块链网络中,每个第二节点均存储并维护区块链网络的区块链负载信息表。

其中,区块链负载信息表至少包括节点负载信息表,节点负载信息表包括如下字段:各第二节点的当前负载参数(最新负载参数)。在一些实施例中,节点负载信息表还包括如下字段:各第二节点的节点序号和各第二节点的节点地址。在本公开实施例中,节点负载信息表还可以包括对应的第二节点的其他信息,此处不再一一列举。

在一些实施例中,该第二节点的当前负载参数node_load=cpu_load*w_c+memory_load*w_m,其中,node_load为第二节点的当前负载参数,cpu_load为第二节点的当前cpu平均资源利用率,w_c为cpu_load对应的预设权重,memory_load为第二节点的当前内存平均资源利用率,w_m为memory_load对应的预设权重,w_c、w_m∈(0,1),w_c+w_m=1。其中,w_c为cpu平均资源利用率在节点负载中所占的权重,可根据第二节点的cpu对第二节点的性能的影响程度确定;w_m为内存平均资源利用率在节点负载中所占的权重,可根据第二节点的内存对第二节点的性能的影响程度确定。需要说明的是,w_c和w_m的具体取值可根据实际情况确定,本公开实施例对w_c和w_m的取值不作具体限制。

在一些实施例中,针对区块链网络中的每个第二节点,该第二节点每隔预设更新时间周期更新该第二节点的当前负载参数。具体地,该第二节点通过上述公式:node_load=cpu_load*w_c+memory_load*w_m更新该第二节点的当前负载参数。其中,cpu_load为第二节点在当前预设更新时间周期内的cpu平均资源利用率,memory_load为第二节点在当前预设更新时间周期内的内存平均资源利用率。在本公开实施例中,该预设更新时间周期为该第二节点计算更新当前负载参数的时间周期,可以根据实际需要进行设置,本公开实施例对此不作限制。

其中,cpu_load(当前cpu平均资源利用率)可根据如下方式获取和更新:在当前预设更新时间周期(例如30分钟)内,每隔预设采样时间间隔(例如1分钟),从第二节点的节点机器操作系统中读取cpu的资源利用率,对预设更新时间周期(例如30分钟)内读取的所有cpu的资源利用率求取平均值,得到该第二节点在当前预设更新时间周期内的cpu_load(cpu平均资源利用率)。

同理,memory_load(当前内存平均资源利用率)可以根据如下方式获取和更新:在当前预设更新时间周期(例如30分钟)内,每隔预设采样时间间隔(例如1分钟),从第二节点的节点机器操作系统中读取内存的资源利用率,对预设更新时间周期(例如30分钟)内读取的所有内存的资源利用率求取平均值,得到该第二节点在当前预设更新时间周期内的memory_load(内存平均资源利用率)。

在一些实施例中,针对区块链网络中的每个第二节点,该第二节点通过上述方式更新其当前负载参数后,在该第二节点存储的节点负载信息表中更新其当前负载参数,并以广播的方式向区块链网络中的其他第二节点发送节点负载更新消息,区块链网络中,收到该第二节点的节点负载更新消息的第二节点根据节点负载更新消息更新本节点上的节点负载信息表。

在本公开实施例中,区块链负载信息表还包括配置参数表,配置参数表包括触发分域负载阈值。可选地,配置参数表还包括各第二节点计算更新当前负载参数的预设更新时间周期,以及各第二节点的cpu的资源利用率和内存的资源利用率的预设采样时间间隔。

在一些实施例中,步骤12包括:

步骤111、将各第二节点的当前负载参数进行求和,得到求和结果。

步骤112、将求和结果除以第二节点的总数量,得到所有第二节点的当前负载参数的平均值,区块链网络的当前整体负载参数为该平均值。

例如,区块链网络中,第二节点的总数量为5个,该5个第二节点的当前负载参数分别为a、b、c、d、f,将各第二节点的当前负载参数进行求和,得到求和结果a+b+c+d+f,将求和结果a+b+c+d+f除以第二节点的总数量5,得到区块链网络的当前整体负载参数为(a+b+c+d+f)/5。

在步骤13中,若判断出区块链网络的当前整体负载参数大于预先获取的触发分域负载阈值时,触发分域流程,以广播的形式向第一节点和各第二节点发送分域消息,完成分域流程,第一节点成功加入区块链网络中。若判断出区块链网络的当前整体负载参数小于或等于预先获取的触发分域负载阈值时,不触发分域流程,第一节点成功加入区块链网络中。在加入区块链网络后,第一节点成为第二节点,当有新的节点加入区块链网络时,重复执行上述步骤11至步骤13。

在本公开实施例中,触发分域负载阈值可根据实际情况进行设置,本公开实施例对此不作限制。

在一些实施例中,分域流程包括:

1、将区块链网络中的所有第二节点按照预设的分域规则分到两个不同的域中。

例如,预设的分域规则包括:将区块链网络的所有第二节点按照节点序号从小到大排序,将节点序号排在前1/2的第二节点作为第一归属域,将节点序号排在后1/2的节点作为第二归属域。

2、将第一节点(新节点)加入到上述两个不同域中的一个域中。

具体地,将第一节点(新节点)加入到第一归属域或第二归属域中。

在本公开实施例中,通过计算区块链网络的动态负荷(当前整体负载参数)来决定是否触发分域,以各第二节点的cpu平均资源利用率和内存平均资源利用率作为计算区块链网络的动态负荷的参数,在新节点加入区块链网络时判断区块链网络的动态负荷水平,进而决定是否触发分域,从而实现高效合理的区块链分域,有效避免单一静态因素作为分域触发条件存在的不合理性的问题。

本公开实施例所提供的区块链分域触发方法的技术方案中,当第一节点(新节点)加入区块链网络时,通过判断区块链网络的当前整体负载参数是否大于预先获取的触发分域负载阈值,来决定是否触发区块链分域,从而实现了高效合理的区块链分域,有效避免单一静态因素作为分域触发条件存在的不合理性的问题。

图2为本公开实施例提供的一种区块链分域触发系统的结构示意图,如图2所示,该区块链分域触发系统包括获取模块21、计算模块22、判断模块23和触发分域模块24。

其中,获取模块21用于当第一节点加入区块链网络时,获取区块链网络中的各第二节点的当前负载参数。

计算模块22用于根据各第二节点的当前负载参数,计算出区块链网络的当前整体负载参数。

判断模块23用于判断所述区块链网络的当前整体负载参数是否大于预先获取的触发分域负载阈值。

触发分域模块24用于若判断模块23判断出区块链网络的当前整体负载参数大于预先获取的触发分域负载阈值时,触发分域流程,完成第一节点的加入;若判断模块23判断出区块链网络的当前整体负载参数小于或等于预先获取的触发分域负载阈值时,不触发分域流程,完成第一节点的加入。

在一些实施例中,获取模块21具体用于从所述第一节点相邻的第二节点获取区块链负载信息表,所述区块链负载信息表包括节点负载信息表,所述节点负载信息表包括各第二节点的当前负载参数。

在一些实施例中,区块链负载信息表还包括配置参数表,所述配置参数表包括所述触发分域负载阈值。

在一些实施例中,计算模块22具体用于将各第二节点的当前负载参数进行求和;将求和结果除以第二节点的总数量,得到所有第二节点的当前负载参数的平均值,所述区块链网络的当前整体负载参数为所述平均值。

此外,本公开实施例所提供的区块链分域触发系统具体用于实现前述区块链分域触发方法,具体可参见前述区块链分域触发方法的描述,此处不再赘述。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1