所属的技术人员能够理解,本技术的各个方面可以实现为系统、方法或程序产品。因此,本技术的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。基于相同的发明构思,本技术实施例还提供一种电子设备。在一种实施例中,该电子设备可以是服务器,也可以是终端设备。参阅图14所示,其为本技术实施例中提供的一种可能的电子设备的结构示意图,图14中,电子设备1400包括:处理器1410和存储器1420。其中,存储器1420存储有可被处理器1410执行的计算机程序,处理器1410通过执行存储器1420存储的指令,可以执行上述节点共识方法的步骤。存储器1420可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);存储器1420也可以是非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者存储器1420是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1420也可以是上述存储器的组合。处理器1410可以包括一个或多个中央处理单元(central processing unit,cpu)或者为数字处理单元等等。处理器1410,用于执行存储器1420中存储的计算机程序时实现上述节点共识方法。在一些实施例中,处理器1410和存储器1420可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。本技术实施例中不限定上述处理器1410和存储器1420之间的具体连接介质。本技术实施例中以处理器1410和存储器1420之间通过总线连接为例,总线在图14中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线可以分为地址总线、数据总线、控制总线等。为便于描述,图14中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。基于同一发明构思,本技术实施例提供了一种计算机可读存储介质,其包括计算机程序,当计算机程序在电子设备上运行时,计算机程序用于使电子设备执行上述节点共识方法的步骤。在一些可能的实施方式中,本技术提供的节点共识方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在电子设备上运行时,计算机程序用于使电子设备执行上述节点共识方法中的步骤,例如,电子设备可以执行如图3中所示的步骤。程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、ram、rom、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(compact disk read only memory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。本技术的实施方式的程序产品可以采用cd-rom并包括计算机程序,并可以在电子设备上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储计算机程序的有形介质,该计算机程序可以被命令执行系统、装置或者器件使用或者与其结合使用。可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的计算机程序。尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
背景技术:
1、随着计算机技术的不断发展,分布式系统是目前普遍使用的计算系统,应用于区块链、zookeeper分布式服务框架等等诸多领域。分布式系统的工作过程中,需要对来自客户端的待处理的消息形成共识。
2、相关技术中,共识主要包括提案(proposal)、预投票(prevote)、预提交(precommit)三个阶段,如图1所示,以四个共识节点为例,共识过程如下:
3、主节点在接收到来自客户端的共识请求后,生成提案,然后广播提案给各从节点。每个从节点在接收到提案后,进入到预投票阶段,在预投票阶段中,生成prevote投票(若从节点在定时器时长内未接收到proposal,则生成的空提案的prevote投票),同时将自己的prevote投票广播给其他节点。
4、每个节点在接收到超过2/3+1≈3的prevote投票后,进入预提交阶段,生成precommit投票,同时将自己的precommit投票广播给其他节点。
5、每个节点在接收到2/3+1≈3的precommit投票后,进入提交阶段,在提交阶段中,如果达成共识的提案是一个空提案,那么不会提交该提案。
6、为了保证公平性和安全性,在每一次共识完成之后,通常切换一个节点成为主节点,然而,如果共识节点中存在故障节点,当故障节点成为主节点时,故障节点无法生成提案并将其发送给其他节点进行共识,从而导致其他节点需要在定时器超时后投空票达成空共识,之后切换一个正常节点成为主节点,由正常节点生成提案并达成共识,显然,在分布式系统中存在故障节点的情况下,分布式系统的性能会明显下降。
技术实现思路
1、本技术实施例提供一种节点共识方法及相关装置,用以提高共识效率,提升分布式系统的性能。
2、第一方面,本技术实施例提供一种节点共识方法,应用于共识节点,所述方法包括:
3、当获取到目标提案,且本地记录的提案生成总次数达到总次数阈值时,基于本地记录的分布式系统中各共识节点各自对应的提案生成次数,从所述各共识节点中,筛选出符合设定节点异常条件的异常节点;
4、向所述各共识节点中各其他节点发送预投票阶段的第一投票,所述第一投票携带有所述异常节点的节点标识,以及接收所述各其他节点各自发送的所述预投票阶段的第一投票;
5、在接收的各第一投票中,携带所述异常节点的节点标识的第一投票的数目达到第一票数阈值时,向所述各其他节点发送预提交阶段的第二投票,所述第二投票携带有所述节点标识,以及,接收所述各其他节点各自发送的所述预提交阶段的第二投票;
6、在接收的各第二投票中,携带所述异常节点的节点标识的第二投票的数目达到第二票数阈值时,确定对所述目标提案达成共识,并将所述异常节点从所述各共识节点中删除。
7、第二方面,本技术实施例提供一种节点共识装置,包括:
8、筛选单元,用于当获取到目标提案,且本地记录的提案生成总次数达到总次数阈值时,基于本地记录的分布式系统中各共识节点各自对应的提案生成次数,从所述各共识节点中,筛选出符合设定节点异常条件的异常节点;
9、预投票单元,用于向所述各共识节点中各其他节点发送预投票阶段的第一投票,所述第一投票携带有所述异常节点的节点标识,以及接收所述各其他节点各自发送的所述预投票阶段的第一投票;
10、预提交单元,用于在接收的各第一投票中,携带所述异常节点的节点标识的第一投票的数目达到第一票数阈值时,向所述各其他节点发送预提交阶段的第二投票,所述第二投票携带有所述节点标识,以及,接收所述各其他节点各自发送的所述预提交阶段的第二投票;
11、节点调整单元,用于在接收的各第二投票中,携带所述异常节点的节点标识的第二投票的数目达到第二票数阈值时,确定对所述目标提案达成共识,并将所述异常节点从所述各共识节点中删除。
12、作为一种可能的实现方式,所述当获取到目标提案,且本地记录的提案生成总次数达到总次数阈值时,基于本地记录的分布式系统中各共识节点各自对应的提案生成次数,从所述各共识节点中,筛选出符合设定节点异常条件的异常节点之前,所述筛选单元还用于:
13、在每轮共识过程中,若所述各共识节点针对主节点生成的非空提案达成共识,则累加所述主节点对应的提案生成次数,并更新所述提案生成总次数;其中,所述主节点为所述各共识节点中的一个共识节点。
14、作为一种可能的实现方式,本地记录有节点提案映射信息,所述节点提案映射信息中包含:所述各共识节点各自的节点标识及其对应的提案生成次数;
15、则所述筛选单元用于通过以下方式确定本地记录的提案生成总次数:
16、从所述节点提案映射信息中,获取所述各共识节点各自对应的提案生成次数;基于获取的各提案生成次数,确定所述提案生成总次数。
17、作为一种可能的实现方式,所述基于本地记录的分布式系统中各共识节点各自对应的提案生成次数,从所述各共识节点中,筛选出符合设定节点异常条件的异常节点时,筛选单元具体用于:
18、从所述各共识节点中,筛选出对应的提案生成次数低于提案生成阈值的至少一个共识节点;所述提案生成阈值是基于所述各共识节点各自对应的提案生成次数确定的;
19、将所述至少一个共识节点中的一个共识节点,作为符合设定节点异常条件的异常节点。
20、作为一种可能的实现方式,所述将所述至少一个共识节点中的一个共识节点,作为符合设定节点异常条件的异常节点时,筛选单元具体用于:
21、若所述至少一个共识节点的个数为一个,则直接将筛选出的一个共识节点作为符合设定节点异常条件的异常节点;
22、若所述至少一个共识节点的个数为多个,则基于所述至少一个共识节点各自对应的提案生成次数,从筛选出的多个共识节点中,确定出一个共识节点,并将所述一个共识节点,作为符合设定节点异常条件的异常节点。
23、作为一种可能的实现方式,将所述异常节点从所述各共识节点中删除之后,筛选单元还用于:
24、重置本地记录的分布式系统中各共识节点各自对应的提案生成次数;
25、重置本地记录的提案生成总次数。
26、作为一种可能的实现方式,筛选单元还用于:
27、若所述共识节点是主节点,则在获取到来自客户端的针对目标交易信息的共识请求后,针对所述目标交易信息,生成所述目标提案;
28、若所述共识节点是从节点,则通过主节点获取所述目标提案。
29、作为一种可能的实现方式,所述通过主节点获取所述目标提案时,筛选单元具体用于:
30、若从所述主节点获取到来自客户端的共识请求开始,在设定时长内接收到来自主节点的提案,则将所述提案作为目标提案;
31、若从所述主节点获取到来自客户端的共识请求开始,设定时长内未接收到来自主节点的提案,则将空提案作为目标提案。
32、第三方面,本技术实施例提供一种电子设备,包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行上述节点共识方法的步骤。
33、第四方面,本技术实施例提供一种计算机可读存储介质,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行上述节点共识方法的步骤。
34、第五方面,本技术实施例提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,电子设备的处理器从所述计算机可读存储介质中读取并执行所述计算机程序,使得电子设备执行上述节点共识方法的步骤。
35、本技术实施例中,当获取到目标提案,且本地记录的提案生成总次数达到总次数阈值时,基于本地记录的各共识节点各自对应的提案生成次数,从各共识节点中筛选出异常节点,然后,在预投票阶段的第一投票中携带异常节点的节点标识,并广播自身的第一投票,以及在接收的携带异常节点的节点标识的第一投票的数目达到第一票数阈值时,广播携带异常节点的节点标识的预提交阶段的第二投票,接收各其他节点各自发送的预提交阶段的第二投票,进而在接收的携带异常节点的节点标识的第二投票的数目达到第二票数阈值时,对目标提案达成共识,并将异常节点从各共识节点中删除。
36、这样,通过对历史提案记录的分析,在第一投票和第二投票中附带异常节点的节点标识,最后通过拜占庭共识协议本身的安全保障,保证所有的节点一致的将异常节点踢出共识节点列表,从而在面对节点故障时,整个共识网络能够安全正确的删除异常节点,最终尽可能的保证参与共识的节点都是正常节点,从而大幅度提升整个区块链网络的性能。
37、本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
1.一种节点共识方法,其特征在于,应用于共识节点,所述方法包括:
2.如权利要求1所述的方法,其特征在于,所述当获取到目标提案,且本地记录的提案生成总次数达到总次数阈值时,基于本地记录的分布式系统中各共识节点各自对应的提案生成次数,从所述各共识节点中,筛选出符合设定节点异常条件的异常节点之前,还包括:
3.如权利要求2所述的方法,其特征在于,本地记录有节点提案映射信息,所述节点提案映射信息中包含:所述各共识节点各自的节点标识及其对应的提案生成次数;
4.如权利要求1、2或3所述的方法,其特征在于,所述基于本地记录的分布式系统中各共识节点各自对应的提案生成次数,从所述各共识节点中,筛选出符合设定节点异常条件的异常节点,包括:
5.如权利要求4所述的方法,其特征在于,所述将所述至少一个共识节点中的一个共识节点,作为符合设定节点异常条件的异常节点,包括:
6.如权利要求1、2或3所述的方法,其特征在于,将所述异常节点从所述各共识节点中删除之后,还包括:
7.如权利要求1、2或3所述的方法,其特征在于,所述目标提案是通过以下方式获取的:
8.如权利要求7所述的方法,其特征在于,所述通过主节点获取所述目标提案,包括:
9.一种节点共识装置,其特征在于,包括:
10.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1~8中任一所述方法的步骤。
11.一种计算机可读存储介质,其特征在于,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行权利要求1~8中任一所述方法的步骤。
12.一种计算机程序产品,其特征在于,其包括计算机程序,所述计算机程序存储在计算机可读存储介质中,电子设备的处理器从所述计算机可读存储介质读取并执行所述计算机程序,使得所述电子设备执行权利要求1~8中任一所述方法的步骤。
