共识节点的选举方法、装置、存储介质及节点设备与流程

文档序号:30936123发布日期:2022-07-30 01:11阅读:101来源:国知局
共识节点的选举方法、装置、存储介质及节点设备与流程

1.本技术涉及共识领域,尤其涉及一种共识节点的选举方法、装置、存储介质节点设备。


背景技术:

2.在分布式集群中,一般采用拜占庭容错(pbft)算法或者轮询拜占庭容错(rpbft)算法来执行共识操作,当存在多个相互隔离的通道(channel)同时需要共识的时候,系统性能和可信性不能同时保证。
3.例如:对于一个包括4个机构的分布式集群,每个机构包括16个节点,当全部的64个节点均为共识节点时,系统内部会发送大量的消息,通信性能很差。当共识节点轮询时,如果恰好轮询到同一机构的多个节点作为共识节点,那么该机构可以任意篡改共识内容,共识可靠性无法保证。另外,当共识节点轮询时,如果恰好轮询到网络较差的节点,性能会进一步恶化。


技术实现要素:

4.本技术实施例提供了共识节点的选举方法、装置、存储介质及节点设备,可以解决现有技术的共识节点进行共识时的性能较差以及可靠性不足的问题。所述技术方案如下:第一方面,本技术实施例提供了一种共识节点的选举方法,所述方法包括:获取待共识的数据所属的通道得到通道集合;将所述通道集合中各个通道包括的节点进行合并得到第一节点集合;统计所述第一节点集合中各个节点的出现次数;根据出现次数将所述第一节点集合进行去重处理得到第二节点集合;计算所述第二节点集合中各个节点的延时性权重;根据出现次数和延时性权重计算所述第二节点集合中各个节点的总权重;根据总权重和生成的随机数在每个通道中属于同一机构的节点子集中选择共识节点;其中,所述通道集合对应的各个机构中被选择的共识节点的数量为m/2;根据选择的共识节点生成共识节点集合。
5.第二方面,本技术实施例提供了一种共识节点的选举装置,所述装置包括:获取单元,用于获取待共识的数据所属的通道得到通道集合;合并单元,用于将所述通道集合中各个通道包括的节点进行合并得到第一节点集合;统计单元,用于统计所述第一节点集合中各个节点的出现次数;去重单元,用于根据出现次数将所述第一节点集合进行去重处理得到第二节点集合;计算单元,用于计算所述第二节点集合中各个节点的延时性权重;根据出现次数和延时性权重计算所述第二节点集合中各个节点的总权重;
选择单元,用于根据总权重和生成的随机数在每个通道中属于同一机构的节点子集中选择共识节点;其中,所述通道集合对应的各个机构中被选择的共识节点的数量为m/2;生成单元,用于根据选择的共识节点生成共识节点集合。
6.第三方面,本技术实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
7.第四方面,本技术实施例提供一种节点,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
8.本技术一些实施例提供的技术方案带来的有益效果至少包括:首先,选择的共识节点为分布式集群的子集,共识节点的数量较少,通信过程中传输的消息量大幅降低,因此可以提高共识性能。其次,共识节点的选择过程中所有相关的机构都必须参与,避免选择的共识节点属于同一个机构而导致的该机构作恶的风险,提高共识过程的可信度。再次,共识节点的选择过程兼顾有节点的网络状况和负载状况,大幅降低共识执行速度慢的节点参与共识的概率,进一步提高整体的共识性能。
附图说明
9.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
10.图1是本技术实施例提供的网络架构示意图;图2是本技术实施例提供的共识节点的选举方法的流程示意图;图3是本技术实施例提供的分布式集群的逻辑示意图;图4是本技术提供的一种共识节点的选举装置的结构示意图;图5是本技术提供的一种节点设备的结构示意图。
具体实施方式
11.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施例方式作进一步地详细描述。
12.需要说明的是,本技术提供的共识节点的选举方法一般由计算机设备执行,相应的,共识节点的选举装置一般设置于计算机设备中。
13.图1示出了可以应用于本技术的共识节点的选举方法或共识节点的选举装置的示例性系统架构。
14.如图1所示,系统架构可以包括:客户端设备101和分布式集群102,分布式集群102包括多个节点,分布式集群组成区块链网络。客户端设备101、分布式集群102之间可以通过网络进行通信,分布式集群102内部的各个节点也可以通过网络进行通信。网络用于上述各个单元之间提供通信链路的介质。网络可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆等,无线通信链路包括蓝牙通信链路、无线保真(wireless-fidelity,wi-fi)通信链路或微波通信链路等。
15.其中,分布式集群划分为多个机构,每个结构包括多个节点,分布式节点中选举出共识节点,共识节点基于共识算法执行共识操作。
16.客户端设备和节点可以是硬件,也可以是软件。当为硬件时,可以是具有显示屏的各种计算机设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等等。当为软件时,可以是安装上述所列举的计算机设备中。其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
17.应理解,图1中的客户端设备、网络和节点的数目仅是示意性的。根据实现需要,可以是任意数量的客户端设备、网络和节点。
18.下面将结合附图2,对本技术实施例提供的共识节点的选举方法进行详细介绍。其中,本技术实施例中的共识节点的选举装置可以是图1所示的计算机设备。
19.请参见图2,为本技术实施例提供了一种共识节点的选举方法的流程示意图。如图2所示,本技术实施例的所述方法可以包括以下步骤:s201、获取待共识的数据所属的通道得到通道集合。
20.其中,分布式集群中的主节点接收来自客户端提交的数据,主节点可以为分布式集群中的任意一个节点。例如:分布式集群中的各个节点从0开始编号,在分布式集群启动后,将序号为0的节点作为主节点,在该节点发生故障后,再将序号为1的节点作为主节点,依次类推。
21.本技术的数据由数据头和数据体组成,数据头携带表示数据的属性信息的字段,数据体中携带实际数据,主节点解析数据头中携带的通道标识确定该数据所属的通道,数据写入的通道的数量为两个或两个以上,即通道集合的通道数量为两个或两个以上。本技术的通道(channel)包括多个节点,通道内的节点分布在至少两个节点上,两个通道之间的节点可能存在部分重复,各个通道的数据相互独立。例如:主节点解析数据的数据头得到所属的通道为:通道1和通道2。
22.s202、将通道集合中各个通道包括的节点进行合并得到第一节点集合。
23.其中,两个通道包括的节点可能存在部分重复,因此第一节点集合中可能存在多次出现的节点。本技术的主节点预存储或预配置有通道和节点之间的映射关系,根据该映射关系可以查询s201的通道集合中各个通道包括的节点,然后将查询到的节点进行合并得到第一节点集合。
24.举例来说,参见图3所示,n=4,m=4,即分布式集群包括4个机构,每个机构有4个节点,4个机构分别记为:org1、org2、org3、org4,org1中的4个节点分别记为:org1_a、org1_b、org1_c、org1_d,org2中的4个节点分别记为:org2_a、org2_b、org2_c、org2_d,org3中的4个节点分别记为:org3_a、org3_b、org3_c、org3_d,org4中的4个节点分别记为:org4_a、org4_b、org4_c、org4_d。
25.根据s201的例子,通道集合包括:通道1和通道2,根据预配置的通道和节点的映射关系,确定通道1包括的节点为:[org1_a, org1_b, org1_c]、 [org2_a, org2_b, org2_d]。通道2包括的节点为[org1_a, org1_c, org1_d], [org2_b, org2_c, org2_d]。将查询到的各个节点进行合并得到节点集合包括的节点为:org1_a、org1_b、org1_c、 [org2_a, org2_b、org2_d、org1_a、org1_c、org1_d、org2_b、org2_c、org2_d,节点集合包括12个节点。
[0026]
s203、统计第一节点集合中各个节点的出现次数。
[0027]
例如:根据s202的第一节点集合,统计出节点org1_a的出现次数为2,节点 org1_b的出现次数为1,节点org1_c的出现次数为2,节点org1_d的出现次数为1。节点org2_a的出现次数为1,org2_b的出现次数为2,org2_c的出现次数为1,org2_d的出现次数为1次,根据采用如下公式表示上述8个节点的出现次数:。其中,表示节点org1_a的出现次数为2,

,表示节点org2_d的出现次数为1。
[0028]
s204、根据出现次数将第一节点集合进行去重处理得到第二节点集合,以及计算第二节点集合中各个节点的延时型权重。
[0029]
其中,根据出现次数将第一节点集合进行去重处理得到第二节点集合,第二节点集合中的各个节点均不相同。例如:s201中的第一节点集合包括12个节点,去重处理后的第二节点集合为:org1_a、org1_b、org1_c、org1_d、org2_a、org2_b、org2_c、org2_d,第二节点集合包括8个节点。
[0030]
获取第二节点集合中各个节点的通信延时,延时性权重和通信延时呈负相关性,即通信延时越大,延时性权重越小,通信延时越小,延时性权重越大,若某个节点发生网络故障或宕机时,该节点的延时性权重设为0。
[0031]
进一步的,本技术获取节点最近的多个通信延时,然后计算多个通信延时的平均值得到平均通信延时,求平均通信延时的倒数得到该节点的延时性权重。
[0032]
举例来说,对于第二节点集合中的8节点中来说,获取每个节点最近10次测量得到的通信延时,然后根据如下公式计算各个节点的延时性权重:。其中,i表示序号,i=1、2、

、10,t为通信延时。
[0033]
s205、根据出现次数和延时性权重计算第二节点集合中各个节点的总权重。
[0034]
其中,总权重均与出现次数和延时性权重呈正相关性,即出现次数和/或延时性权重越大,总权重越大,反之,则总权重越小。
[0035]
进一步的,将出现次数和延时性权重进行相乘得到的乘积作为节点的总权重。
[0036]
例如:采用如下公式计算第二节点集合中各个节点的总权重:。假设最终得到的总权重为: 。
[0037]
s206、根据总权重和生成的随机数在每个通道中属于同一机构的节点子集中选择共识节点。
[0038]
s207、根据选择的共识节点生成共识节点集合。
[0039]
其中,确定通道集合对应的机构,根据本技术的选择方法保证通道集合对应的各个机构中被选择的共识节点的数量为m/2,即机构的节点数的一半。
[0040]
进一步的,所述根据总权重和生成的随机数在每个通道中属于同一机构的节点子集中选择共识节点,包括:确定通道中属于同一机构的节点子集;根据节点子集中各个节点的总权重计算所述各个节点的概率比;获取机构中已选择的共识节点的数量k;其中,k为大于或等于0的整数;根据生成的随机数、概率比和所述已选择的共识节点的数量在所述节点子集中选择m/2-k个共识节点;其中,m/2-k的值为大于或等于0的整数。
[0041]
举例来说,通道1对应的机构为机构1和机构2,通道1中属于机构1的节点子集1包括:org1_a、 org1_c、org1_d,通道2中属于机构2的节点子集2包括:org2_b、org2_c、org2_d。首先,节点子集1中各个节点的总权重在节点子集1中选择2个共识节点,根据s205的例子,org1_a、 org1_c、org1_d的总权重分别为100、50和110,那么上述3个节点被选中的概率比为100:50:110,设定随机数的取值范围,设置org1_a在该取数范围内的数值区间1,org1_b在该取数范围内的数值区间2,org1_c在该取值范围内的数值区间3,数值区间1、数值区间2和数值区间3呈连续分布且组合后得到该取值范围。例如:随机数的取值范围为[0,1),org1_a、 org1_c、org1_d的概率比为:10:5:11,设置org1_a的数值区间1为[0, 0.3846)、 org1_c的数值区间2为[0.3846, 0.5769)、org1_c的数值区间3为 [0.5769, 1.0),根据随机数所在的数值区间确定节点子集1中被选中的共识节点。假设数据自己1中选择的共识节
点为org1_a和org1_c,数据子集2中被选中的共识节点为org2_a。
[0042]
然后在通道2中确定属于机构1的节点子集3,节点子集3包括:org1_a, org1_c, org1_d,由于节点1对应的已选择的共识节点的数量为2,此处不需要在节点子集3中选择新的共识节点。在通道2中属于机构2的节点子集4,节点子集4包括:org2_b, org2_c, org2_d,由于机构2对应的已选择的共识节点的数量为1,那么此时在节点子集4中选择一个节点,假设选择的共识节点为org2_d。根据选择结果,确定共识节点集合包括:org1_a、org1_c、org2_a、org2_d。
[0043]
进一步的,本技术的方法还包括:主节点将种子、选出的共识节点集合、每个节点的出现次数和延时型权重向分布式集群的全体节点进行广播,除主节点之外的其他节点根据上述信息生成共识节点集合,然后验证生成的共识节点集合和接收到的共识节点集合是否相同,若相同,则该节点广播确认正确的消息。选举出来的共识节点集合中的各个节点收到2f个确认后(假设分布时集群的节点数为16,总节点数为3f+1,此时f=5;所以2f=10),开始进行pbft的共识操作,共识的算法可以为pbft(byzantine fault tolerance,拜占庭容错),此处不赘述。
[0044]
本技术的实施例在执行选取共识节点的有益效果包括:首先,选择的共识节点为分布式集群的子集,共识节点的数量较少,通信过程中传输的消息量大幅降低,因此可以提高共识性能。其次,共识节点的选择过程中所有相关的机构都必须参与,避免选择的共识节点属于同一个机构而导致的该机构作恶的风险,提高共识过程的可信度。再次,共识节点的选择过程兼顾有节点的网络状况和负载状况,大幅降低共识执行速度慢的节点参与共识的概率,进一步提高整体的共识性能。
[0045]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0046]
请参见图4,其示出了本技术一个示例性实施例提供的共识节点的选举装置的结构示意图,以下简称装置4。该装置4可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。装置4包括:获取单元401、合并单元402、统计单元403、去重单元404、计算单元405、选择单元406和生成单元407。
[0047]
获取单元401,用于获取待共识的数据所属的通道得到通道集合;合并单元402,用于将所述通道集合中各个通道包括的节点进行合并得到第一节点集合;统计单元403,用于统计所述第一节点集合中各个节点的出现次数;去重单元404,用于根据出现次数将所述第一节点集合进行去重处理得到第二节点集合;计算单元405,用于计算所述第二节点集合中各个节点的延时性权重;根据出现次数和延时性权重计算所述第二节点集合中各个节点的总权重;选择单元406,用于根据总权重和生成的随机数在每个通道中属于同一机构的节点子集中选择共识节点;其中,所述通道集合对应的各个机构中被选择的共识节点的数量为m/2;生成单元407,用于根据选择的共识节点生成共识节点集合。
[0048]
在一个或多个可能的实施例中,所述计算所述第二节点集合中各个节点的延时性
权重,包括:获取节点在历史时间段内测量的多个通信延时;计算所述多个通信延时的平均值得到平均通信延时;求所述平均通信延时的倒数得到该节点的延时性权重。
[0049]
在一个或多个可能的实施例中,所述根据出现次数和延时性权重计算所述第二节点集合中各个节点的总权重,包括:将节点的出现次数和延时性权重的乘积作为该节点的总权重。
[0050]
在一个或多个可能的实施例中,所述根据总权重和生成的随机数在每个通道中属于同一机构的节点子集中选择共识节点,包括:确定通道中属于同一机构的节点子集;根据节点子集中各个节点的总权重计算所述各个节点的概率比;获取机构中已选择的共识节点的数量k;其中,k为大于或等于0的整数;根据生成的随机数、概率比和所述已选择的共识节点的数量在所述节点子集中选择m/2-k个共识节点;其中,m/2-k的值为大于或等于0的整数。
[0051]
在一个或多个可能的实施例中,随机数是以当前时间戳为种子生成的。
[0052]
在一个或多个可能的实施例中,还包括:广播模块,用于向所述分布式集群广播所述种子、所述共识节点集合、各个节点的出现次数和延时型权重。
[0053]
在一个或多个可能的实施例中,所述获取待共识的数据所属的通道得到通道集合,包括:接收来自客户端的待共识的数据;解析所述数据的数据头得到通道标识;根据通道标识生成通道集合。
[0054]
需要说明的是,上述实施例提供的装置4在执行共识节点的选举方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成上述的全部或者部分功能。另外,上述实施例提供的共识节点的选举装置与共识节点的选举方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
[0055]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0056]
本技术实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2所示实施例的方法步骤,具体执行过程可以参见图2所示实施例的具体说明,在此不进行赘述。
[0057]
本技术还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的共识节点的选举方法。
[0058]
请参见图5,为本技术实施例提供了一种节点设备的结构示意图。如图5所示,所述节点设备500可以包括:至少一个处理器501,至少一个网络接口504,存储器505,至少一个通信总线502。
[0059]
其中,通信总线502用于实现这些组件之间的连接通信。
[0060]
可选的,本技术的节点设备还可以包括用户接口503,用户接口503可以包括显示屏(display)、摄像头(camera),可选用户接口503还可以包括标准的有线接口、无线接口。
[0061]
其中,网络接口504可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。
[0062]
其中,处理器501可以包括一个或者多个处理核心。处理器501利用各种接口和线路连接整个节点设备500内的各个部分,通过运行或执行存储在存储器505内的指令、程序、代码集或指令集,以及调用存储在存储器505内的数据,执行节点设备500的各种功能和处理数据。可选的,处理器501可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器501可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器501中,单独通过一块芯片进行实现。
[0063]
其中,存储器505可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。可选的,该存储器505包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器505可用于存储指令、程序、代码、代码集或指令集。存储器505可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器505可选的还可以是至少一个位于远离前述处理器501的存储装置。如图5所示,作为一种计算机存储介质的存储器505中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
[0064]
在图5所示的节点设备500中,用户接口503主要用于为用户提供输入的接口,获取用户输入的数据;而处理器501可以用于调用存储器505中存储的应用程序,并具体执行如图2所示的方法,具体过程可参照图2所示,此处不再赘述。
[0065]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
[0066]
以上所揭露的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1