基于PaxosLease算法的设备集群中的选举方法及装置转让专利

申请号 : CN202211293930.1

文献号 : CN115378799B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 滕旭旺肖金亮孔繁宇刘浩贾德宾韩富晟

申请人 : 北京奥星贝斯科技有限公司

摘要 :

本申请一个或多个实施例提供一种基于PaxosLease算法的设备集群中的选举方法及装置,应用于包括多个副本设备的设备集群中作为选举发起方的任一副本设备;该方法包括:在准备阶段,向设备集群中作为选举响应方的多个副本设备发送第一类准备请求,以使作为选举响应方的多个副本设备分别继续向作为选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类准备请求;准备请求包括发送其的副本设备的优先级;接收作为选举响应方的多个副本设备发送的第二类准备请求,并确定优先级最高的目标副本设备;与作为选举响应方的多个副本设备继续进行准备阶段和提案阶段的交互,以触发将目标副本设备选举为主副本设备。

权利要求 :

1.一种基于PaxosLease算法的设备集群中的选举方法,所述设备集群包括多个副本设备;所述方法应用于所述设备集群中作为选举发起方的任一副本设备;所述方法包括:在所述PaxosLease算法中的prepare阶段,向所述设备集群中作为选举响应方的多个副本设备发送第一类prepare请求,以使作为所述选举响应方的多个副本设备分别响应于所述第一类prepare请求而向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;

接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;

如果所述目标副本设备为作为所述选举发起方的副本设备,则在所述PaxosLease算法中的prepare阶段,接收除所述目标副本设备之外的其他副本设备返回的与所述第一类prepare请求对应的第一类prepare响应,并响应于接收到的指示可接受租约的所述第一类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

如果所述目标副本设备为作为所述选举响应方的任一副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到所述阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

其中,所述prepare响应指示发送该prepare响应的副本设备是否可接受租约。

2.根据权利要求1所述的方法,所述目标副本设备通过以下方式,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约:向除所述目标副本设备之外的其他副本设备发送propose请求;其中,所述propose请求包括与所述目标副本设备对应的租约;

接收除所述目标副本设备之外的其他副本设备返回的与所述propose请求对应的propose响应,并响应于接收到的所述propose响应的数量达到所述阈值,确定用于承诺所述目标副本设备为主副本设备的租约发送成功。

3.根据权利要求1所述的方法,所述接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备,包括:在预设的时间窗口内,接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并缓存接收到的所述第二类prepare请求;

基于缓存的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备。

4.根据权利要求1所述的方法,分布式系统包括多个节点;所述多个节点分别包括多个副本设备;所述设备集群包括所述节点。

5.根据权利要求4所述的方法,所述分布式系统为区块链网络。

6.根据权利要求1所述的方法,所述设备集群中的各个副本设备承载了多种服务;所述设备集群中的各个副本设备具有与所述多种服务分别对应的多个优先级;所述prepare请求还包括与所述多种服务中的任一目标服务对应的服务标识;所述prepare请求中的优先级为发送该prepare请求的副本设备具有的与所述目标服务对应的优先级;所述主副本设备为选举出的与所述目标服务对应的主副本设备。

7.根据权利要求6所述的方法,所述设备集群中的各个副本设备具有的与所述多种服务中的不同服务对应的优先级不同。

8.根据权利要求1所述的方法,所述副本设备的优先级与所述副本设备的硬件资源正相关。

9.一种基于PaxosLease算法的设备集群中的选举方法,所述设备集群包括多个副本设备;所述方法应用于所述设备集群中作为选举响应方的任一副本设备;所述方法包括:在所述PaxosLease算法中的prepare阶段,接收作为选举发起方的副本设备发送的第一类prepare请求,并响应于所述第一类prepare请求,继续向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;

接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;

如果所述目标副本设备为作为所述选举发起方的副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述第一类prepare请求对应的第一类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第一类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

如果所述目标副本设备为作为除自身之外的其他选举响应方的任一副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

如果所述目标副本设备为所述副本设备自身,则在所述PaxosLease算法中的prepare阶段,接收除所述目标副本设备之外的其他副本设备返回的与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,并响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将作为所述目标副本确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

其中,所述prepare响应指示发送该prepare响应的副本设备是否可接受租约。

10.根据权利要求9所述的方法,所述目标副本设备通过以下方式,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约:向除所述目标副本设备之外的其他副本设备发送propose请求;其中,所述propose请求包括与所述目标副本设备对应的租约;

接收除所述目标副本设备之外的其他副本设备返回的与所述propose请求对应的propose响应,并响应于接收到的所述propose响应的数量达到所述阈值,确定用于承诺所述目标副本设备为主副本设备的租约发送成功。

11.根据权利要求9所述的方法,所述接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备,包括:在预设的时间窗口内,接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并缓存接收到的所述第二类prepare请求;

基于缓存的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备。

12.根据权利要求9所述的方法,分布式系统包括多个节点;所述多个节点分别包括多个副本设备;所述设备集群包括所述节点。

13.根据权利要求12所述的方法,所述分布式系统为区块链网络。

14.根据权利要求9所述的方法,所述设备集群中的各个副本设备承载了多种服务;所述设备集群中的各个副本设备具有与所述多种服务分别对应的多个优先级;所述prepare请求还包括与所述多种服务中的任一目标服务对应的服务标识;所述prepare请求中的优先级为发送该prepare请求的副本设备具有的与所述目标服务对应的优先级;所述主副本设备为选举出的与所述目标服务对应的主副本设备。

15.根据权利要求14所述的方法,所述设备集群中的各个副本设备具有的与所述多种服务中的不同服务对应的优先级不同。

16.根据权利要求9所述的方法,所述副本设备的优先级与所述副本设备的硬件资源正相关。

17.一种基于PaxosLease算法的设备集群中的选举装置,所述设备集群包括多个副本设备;所述装置应用于所述设备集群中作为选举发起方的任一副本设备;所述装置包括:发送模块,在所述PaxosLease算法中的prepare阶段,向所述设备集群中作为选举响应方的多个副本设备发送第一类prepare请求,以使作为所述选举响应方的多个副本设备分别响应于所述第一类prepare请求而向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;

确定模块,接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;

选举模块,如果所述目标副本设备为作为所述选举发起方的副本设备,则在所述PaxosLease算法中的prepare阶段,接收除所述目标副本设备之外的其他副本设备返回的与所述第一类prepare请求对应的第一类prepare响应,并响应于接收到的指示可接受租约的所述第一类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

如果所述目标副本设备为作为所述选举响应方的任一副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到所述阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

其中,所述prepare响应指示发送该prepare响应的副本设备是否可接受租约。

18.一种基于PaxosLease算法的设备集群中的选举装置,所述设备集群包括多个副本设备;所述装置应用于所述设备集群中作为选举响应方的任一副本设备;所述装置包括:接收模块,在所述PaxosLease算法中的prepare阶段,接收作为选举发起方的副本设备发送的第一类prepare请求,并响应于所述第一类prepare请求,继续向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;

确定模块,接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;

选举模块,如果所述目标副本设备为作为所述选举发起方的副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述第一类prepare请求对应的第一类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第一类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

如果所述目标副本设备为作为除自身之外的其他选举响应方的任一副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

如果所述目标副本设备为所述副本设备自身,则在所述PaxosLease算法中的prepare阶段,接收除所述目标副本设备之外的其他副本设备返回的与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,并响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将作为所述目标副本确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;

其中,所述prepare响应指示发送该prepare响应的副本设备是否可接受租约。

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

处理器;

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

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

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

说明书 :

基于PaxosLease算法的设备集群中的选举方法及装置

技术领域

[0001] 本申请一个或多个实施例涉及分布式技术领域,尤其涉及一种基于PaxosLease算法的设备集群中的选举方法及装置。

背景技术

[0002] 现如今,随着业务数据、用户数据等各种数据的数据规模不断扩大,对需要处理这些数据的应用程序的可扩展性和可用性提出了更高的要求,而这些要求在单个设备上通常难以得到满足,因此衍生出了分布式的概念。分布式使得一个应用程序被部署在由多个设备组建的分布式系统上,借由该分布式系统的设备规模应对海量数据规模,提高应用程序对外提供服务的能力。
[0003] 对于分布式系统而言,单点故障问题是其面临的基本问题之一。在一个由100个设备组建的分布式系统中,如果每个设备的正常运行时长占其总运行时长的99%,由于供电不足、硬件故障、软件崩溃、运维等因素导致其异常的时长占其总运行时长的1%,则在每个设备的异常概率呈独立分布的情况下,该分布式系统的正常运行时长仅占其总运行时长的99%的100次方,即36.6%,也就意味着该分布式系统在大部分时间下都无法正常运行。
[0004] 为了应对单点故障问题,可以将多个设备组建为一个节点,并由多个节点组建分布式系统。每个节点包括的多个设备可以互为主备,在当前的主设备异常时可以自动切换至另一个备设备继续运行,由这个备设备接替异常的主设备来成为新的主设备。这样,可以避免出现节点异常的情况,延长分布式系统的正常运行时长占比,因此为分布式系统提供了一定的容错能力,提高了部署在分布式系统上的应用程序的可用性。然而,在这种情况下,如何从每个节点包括的多个设备中选举出主设备,成为了备受关注的问题。

发明内容

[0005] 本申请书一个或多个实施例提供技术方案如下:
[0006] 本申请提供一种基于PaxosLease算法的设备集群中的选举方法,所述设备集群包括多个副本设备;所述方法应用于所述设备集群中作为选举发起方的任一副本设备;所述方法包括:
[0007] 在所述PaxosLease算法中的prepare阶段,向所述设备集群中作为选举响应方的多个副本设备发送第一类prepare请求,以使作为所述选举响应方的多个副本设备分别响应于所述第一类prepare请求而向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;
[0008] 接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;
[0009] 与作为所述选举响应方的多个副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0010] 本申请还提供一种基于PaxosLease算法的设备集群中的选举方法,所述设备集群包括多个副本设备;所述方法应用于所述设备集群中作为选举响应方的任一副本设备;所述方法包括:
[0011] 在所述PaxosLease算法中的prepare阶段,接收作为选举发起方的副本设备发送的第一类prepare请求,并响应于所述第一类prepare请求,继续向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;
[0012] 接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;
[0013] 与作为所述选举发起方的副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0014] 本申请还提供一种基于PaxosLease算法的设备集群中的选举装置,所述设备集群包括多个副本设备;所述装置应用于所述设备集群中作为选举发起方的任一副本设备;所述装置包括:
[0015] 发送模块,在所述PaxosLease算法中的prepare阶段,向所述设备集群中作为选举响应方的多个副本设备发送第一类prepare请求,以使作为所述选举响应方的多个副本设备分别响应于所述第一类prepare请求而向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;
[0016] 确定模块,接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;
[0017] 选举模块,与作为所述选举响应方的多个副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0018] 本申请还提供一种基于PaxosLease算法的设备集群中的选举装置,所述设备集群包括多个副本设备;所述装置应用于所述设备集群中作为选举响应方的任一副本设备;所述装置包括:
[0019] 接收模块,在所述PaxosLease算法中的prepare阶段,接收作为选举发起方的副本设备发送的第一类prepare请求,并响应于所述第一类prepare请求,继续向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;
[0020] 确定模块,接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;
[0021] 选举模块,与作为所述选举发起方的副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0022] 本申请还提供一种电子设备,包括:
[0023] 处理器;
[0024] 用于存储处理器可执行指令的存储器;
[0025] 其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
[0026] 本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
[0027] 在上述技术方案中,设备集群中作为选举发送方的副本设备可以在PaxosLease算法中的prepare阶段,向该设备集群中作为选举响应方的多个副本设备发送prepare请求,促使作为选举响应方的多个副本设备分别继续向作为选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送prepare请求,后续作为选举发送方的副本设备和作为选举响应方的多个副本设备可以基于所有prepare请求中的优先级,确定优先级最高的目标副本设备,并继续进行PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将该目标副本设备选举为主副本设备。
[0028] 采用上述方式,可以在基于PaxosLease算法的设备集群中的选举过程中,实现基于该设备集群中的各个副本设备的优先级的选举,从而可以在该设备集群中将优先级最高的副本设备选举为主副本设备。由于优先级可以根据实际需求为副本设备分配,也就使得选举出的主副本设备更加符合实际需求,而不再只是选择了最大的投票编号的副本设备。

附图说明

[0029] 图1是本申请一示例性实施例示出的一种分布式系统的示意图。
[0030] 图2是Paxos算法的示意图。
[0031] 图3是PaxosLease算法的示意图。
[0032] 图4是本申请一示例性实施例示出的一种基于PaxosLease算法的设备集群中的选举方法的流程图。
[0033] 图5是本申请一示例性实施例示出的一种设备集群中的设备交互的示意图。
[0034] 图6是本申请一示例性实施例示出的另一种基于PaxosLease算法的设备集群中的选举方法的流程图。
[0035] 图7是本申请一示例性实施例示出的一种设备的硬件结构的示意图。
[0036] 图8是本申请一示例性实施例示出的一种基于PaxosLease算法的设备集群中的选举装置的框图。
[0037] 图9是本申请一示例性实施例示出的另一种基于PaxosLease算法的设备集群中的选举装置的框图。

具体实施方式

[0038] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请一个或多个实施例的一些方面相一致的装置和方法的例子。
[0039] 需要说明的是:在其他实施例中并不一定按照本申请示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本申请所描述的更多或更少。此外,本申请中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本申请中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
[0040] 请参考图1,图1是本申请一示例性实施例示出的一种分布式系统的示意图。
[0041] 如图1所示,上述分布式系统可以包括多个节点,每个节点可以包括多个副本设备,这多个副本设备可以互为主备。
[0042] 对于互为主备的多个副本设备而言,由于在当前的主副本设备异常时可以自动切换至另一个备副本设备继续运行,由这个备副本设备接替异常的主副本设备来成为新的主副本设备,这就需要主副本设备与备副本设备始终保持数据上的一致,否则这个备副本设备会因为与该主副本设备存在数据上的差异而无法成功接替该主副本设备。因此,在上述分布式系统中,每个节点包括的多个副本设备也互为副本。
[0043] 与之类似的,对于任何包括互为主备的多个副本设备的设备集群而言,主副本设备和备副本设备都要始终保持数据上的一致,即该设备集群中的多个副本设备也互为副本。其中,该设备集群可以是独立运行的系统,也可以是上述分布式系统中的节点,等等。
[0044] 在实际应用中,通常会采用Paxos算法,以及在Paxos算法的基础上衍生出的PaxosLease算法等,来解决多个副本需要保持数据上的一致的问题。
[0045] 为了便于理解,下面对Paxos算法和PaxosLease算法进行简要说明。
[0046] (1)Paxos算法
[0047] Paxos算法的核心是一个一致性(consensus)算法。假设有一组可以提出value的进程。一致性算法保证所有提出的value中,只有一个value会被选择。如果没有提出value,则不会有value被选择。如果一个value已被选择,则这组进程应当能知道被选择的这个value。
[0048] 在实际应用中,一个进程可以运行在一个设备上,实现部署在包括这个设备的分布式系统上的应用程序对外提供的服务的功能,因此一个进程可以指代一个设备或者设备上承载的一种服务。
[0049] Paxos算法中的三个角色由三类代理执行:proposer(提议者)、acceptor(接受者)和learner(学习者)。对于一个进程而言,其可以充当多种类型的代理。
[0050] 一个proposer可以向多个acceptor提出value。任意一个acceptor都有可能接受该value。当有足够多的acceptor接受了该value时,该value就被选择了。为了保证只有一个value被选择,足够多的acceptor通常包括这多个acceptor中的多数acceptor(也称之为多数派acceptor)。由于任意两个多数派acceptor至少包括一个相同的acceptor,如果一个acceptor最多只能接受一个value,那么这种方式就是可行的。
[0051] 在实际应用中,value是包含在proposal(提案)中的。此外,为每个提案分配一个编号(number;也称之为proposalnumber,即提案号)来记录提案。也即,一个提案由一个提案号和一个value构成,可以表示为:proposal=(提案号,value)。为了避免提案的混淆,通常要求提案号是唯一的,即不同的提案具有不同的提案号。如果一个提案被多数派acceptor接受,则这个提案中的value就被选择了。
[0052] 基于此,Paxos算法提出了如下要求:如果提案(n,v)被提出,则存在一个多数派acceptor,该多数派acceptor中没有acceptor接受过提案号小于n的提案,或者v是该多数派acceptor中任意一个acceptor接受的所有提案号小于n的提案中提案号最大的提案中的value。
[0053] 根据上述要求,准备提出提案号为n的提案的proposer就需要知道所有提案号小于n的提案中提案号最大的提案,如果该提案存在,则该提案已经或者即将被多数派acceptor接受。为了避免预测该提案是否会被多数派acceptor接受,准备提出提案号为n的提案的proposer就要求acceptor不能接受任何提案号小于n的提案。
[0054] 在上述情况下,准备提出提案号为n的提案的proposer可以向一些acceptor发送请求,以要求这些acceptor作出回应。各个acceptor会回应一个永不接受提案号小于n的提案的承诺;或者,如果在该acceptor已经接受的所有提案号小于n的提案中提案号最大的提案存在,则该acceptor会回应一个永不接受提案号小于n的提案的承诺,以及在该acceptor已经接受的所有提案号小于n的提案中提案号最大的提案。其中,将该请求称为prepare请求。相应的,如果该proposer接收到了多数派acceptor的回应,则该proposer可以提出提案(n,v)。v是所有回应中提案号最大的提案中的value;或者,如果多数派acceptor没有回应提案,则v可以是该proposer选择的任意一个value。
[0055] 这就意味着Paxos算法还提出了如下要求:一个acceptor可以接受一个提案号为n的提案,当且仅当这个acceptor没有回应过一个包括的提案号大于n的prepare请求。
[0056] 结合上述两个要求中proposer和acceptor的行为,如图2所示,可以将Paxos算法分为以下两个阶段来执行:
[0057] (Ⅰ)prepare阶段
[0058] proposer选择一个提案号n,并向多数派acceptor发送包括提案号n的prepare请求。
[0059] 也即,prepare请求可以表示为:prepare请求=提案号。
[0060] acceptor在接收到的prepare请求中的提案号n,大于该acceptor已经回应的任何prepare请求中的提案号的情况下,向上述proposer发送prepare响应。其中,该prepare响应包括一个不再接受任何提案号小于n的提案的承诺;或者,如果该acceptor已经接受的提案号最大的提案存在,则该prepare响应包括一个不再接受任何提案号小于n的提案的承诺,以及该acceptor已经接受的提案号最大的提案。为了避免prepare响应的混淆,该prepare响应还包括提案号n。
[0061] 也即,prepare响应可以表示为:prepare响应=提案号,响应结果,已经接受的提案号最大的提案;该提案可能为空,即不包括该提案。其中,在acceptor接收到的prepare请求中的提案号n,大于该acceptor已经回应的任何prepare请求中的提案号的情况下,该响应结果可以是上述承诺和指示接受的结果。
[0062] (Ⅱ)accept阶段
[0063] 上述proposer在接收到了上述多数派acceptor发送的包括提案号n的prepare响应(即为与包括提案号n的prepare请求对应的prepare响应)的情况下,向该多数派acceptor发送包括提案(n,v)的accept请求。其中,v是这些prepare响应中提案号最大的提案中的value;或者,如果这些prepare响应不包括提案,则v可以是该proposer选择的任意一个value。
[0064] 也即,accept请求可以表示为:accept请求=提案;或者,可以表示为:accept请求=提案号,value。
[0065] 上述acceptor在接收到包括提案(n,v)的accept请求时,接受提案(n,v),除非该acceptor已经回应了一个包括的提案号大于n的prepare请求。在这种情况下,该acceptor会向上述proposer发送accept响应。为了避免accept响应的混淆,该accept响应包括提案号n。
[0066] 也即,accept响应可以表示为:accept响应=提案号,响应结果。其中,在acceptor接受提案的情况下,该响应结果可以是指示接受的结果。
[0067] 上述proposer在接收到了上述多数派acceptor发送的包括提案号n的accept响应(即为与包括提案(n,v)的accept请求对应的accept响应)的情况下,可以确定提案(n,v)中的v被选择了。
[0068] 一个proposer可以提出多个提案,也可以在任何时刻放弃一个提案,即使在这个提案被放弃之后,与这个提案对应的请求或者响应才到达目标。如果其他proposer已经开始提出具有更大的提案号的提案,那么最好放弃当前的提案。因此,如果acceptor因为已经接收到了包括更大的提案号的prepare请求,而忽略了一个prepare请求或者一个accept请求,该acceptor应当告知proposer放弃当前的提案。
[0069] 为了降低提案被放弃的概率,通常会选择出一个主proposer,只有这个主proposer才能提出提案,并通过和多数派acceptor进行交互,使得这个主proposer提出的提案被该多数派acceptor接受。如果主proposer得知已经有提案号更大的提案,则该主proposer将放弃当前的提案,并最终选择一个足够大的提案号。
[0070] learner在确定一个提案被多数派acceptor接受的情况下,才能知道该提案中的value被选择了。
[0071] 在实际应用中,每个acceptor可以在接收提案时通知所有learner,使得learner可以尽快知道被选择的value。一个learner可以从另一个learner得知被选择的value,因此可以由主learner先得知被选择的value,再将被选择的value通知给其他learner。
[0072] 在Paxos算法中,每个进程都会扮演proposer、acceptor和learner的角色。例如,提出提案的进程即为proposer,通过与proposer的交互接受该proposer提出的提案的进程即为acceptor,通过与acceptor或者其他learner交互学习提案中的value的进程即为learner。Paxos算法从这些进程中选择出一个leader,这个leader就成为主proposer和主learner。也即,leader可以作为主proposer提出提案,并从acceptor处得知被选择的value,从而可以作为主learner将被选择的value通知给其他learner。
[0073] (2)PaxosLease算法
[0074] PaxosLease算法是Paxos算法的一种自然特化变种。PaxosLease算法在Paxos算法的基础上引入了租约(lease)的概念。
[0075] 结合Paxos算法,在PaxosLease算法中,获得租约的proposer可以成为leader。由于只有leader才能提出提案,也就意味着只有获得租约的proposer才能提出提案,并通过和多数派acceptor进行交互,使得该proposer提出的提案被该多数派acceptor接受。
[0076] 需要说明的是,租约是在一段时间之后自动到期的。也即,获得租约的proposer是在其租约的有效期内成为leader。并且,在任何给定的时间点,获得租约的proposer的数量不会超过一个。
[0077] proposer以提案的形式将与其对应的租约发送给多数派acceptor,如果包括该租约的提案被该多数派acceptor接受,则意味着该proposer获得了该租约。在这种情况下,该proposer和该多数派acceptor都会持有该租约;通过持有该租约,使得该多数派acceptor承诺该proposer为leader。
[0078] 在PaxosLease算法中,对于proposer获取租约的过程而言,将proposalnumber称为ballot number(投票编号),以及将accept阶段称为propose阶段,即accept请求变为propose请求,accept响应变为propose响应。
[0079] 如图3所示,可以将PaxosLease算法中proposer获取租约的过程分为以下两个阶段来执行:
[0080] (Ⅰ)prepare阶段
[0081] proposer选择一个投票编号n,并向多数派acceptor发送包括投票编号n的prepare请求。
[0082] 也即,prepare请求可以表示为:prepare请求=投票编号。
[0083] acceptor在接收到上述prepare请求时,检查该prepare请求中的投票编号n,是否大于或者等于该acceptor承诺的本地投票编号的最大值,如果是,将该acceptor承诺的本地投票编号的最大值更新为该prepare请求中的投票编号n,并向上述proposer发送prepare响应。其中,该prepare响应包括该acceptor当前已经接受了的提案,但如果该acceptor当前没有已经接受了的提案,则该prepare响应中的提案为空。为了避免prepare响应的混淆,该prepare响应还包括投票编号n。
[0084] 也即,prepare响应可以表示为:prepare响应=投票编号,响应结果,已经接受了的提案;该提案可能为空,即不包括该提案。其中,在acceptor接收到的prepare请求中的投票编号n,大于或者等于该acceptor承诺的本地投票编号的最大值的情况下,该响应结果可以是指示接受的结果。
[0085] 在实际应用中,acceptor向proposer发送的不包括提案的prepare响应,可以指示该acceptor可接受租约,促使该proposer将与其对应的租约发送给该acceptor。
[0086] (Ⅱ)propose阶段
[0087] 上述proposer在接收到了上述多数派acceptor发送的指示可接受租约、包括投票编号n的prepare响应(即为与包括投票编号n的prepare请求对应的prepare响应)的情况下,向该多数派acceptor发送包括提案(n,租约)的propose请求。
[0088] 也即,propose请求可以表示为:propose请求=投票编号,租约。
[0089] 上述acceptor在接收到包括提案(n,租约)的propose请求时,检查该propose请求中的投票编号n,是否大于或者等于该acceptor承诺的本地投票编号的最大值,如果是,接受提案(n,租约),并将该acceptor已经接收了的提案更新为提案(n,租约)。在这种情况下,该acceptor会向上述proposer发送propose响应。为了避免propose响应的混淆,该propose响应包括投票编号n。
[0090] 也即,propose响应可以表示为:propose响应=投票编号,响应结果。其中,在acceptor接受提案的情况下,该响应结果可以是指示接受的结果。
[0091] 需要说明的是,acceptor在接受提案(n,租约)之后,如果该租约到期,则会将该acceptor已经接收了的提案重置为空。但是,acceptor决不重置该acceptor承诺的本地投票编号的最大值,除非该acceptor发生重启。
[0092] 上述proposer在接收到上述多数派acceptor发送的包括投票编号n的propose响应(即为与包括提案(投票编号,租约)的propose请求对应的propose响应)的情况下,可以确定该proposer和该多数派acceptor都持有该租约,因此该proposer可以成为leader。
[0093] 结合PaxosLease算法,由于只有获得租约的proposer才能提出提案,对于包括互为副本的多个副本设备的设备集群而言,这多个副本设备中的主副本设备可以是获得租约的proposer,备副本设备可以是acceptor。也即,在PaxosLease算法中,proposer获取租约的过程,也就是该proposer被选举为主副本设备的过程。
[0094] 设备集群中的多个副本设备虽然互为副本,但其中不同的设备的资源规格、当前负载等都可能不同,导致不同的副本设备具有不同的数据处理能力。通常,希望数据处理能力较强的副本设备成为主副本设备,以便更好地对外提供服务。然而,在这多个副本设备中基于PaxosLease算法选举出的主副本设备并不具有这样的倾向性,即选举出的主副本设备通常只是选择了最大的投票编号的副本设备,而不是数据处理能力较强的副本设备。
[0095] 本申请提供一种基于PaxosLease算法的设备集群中的选举的技术方案,以对基于PaxosLease算法的设备集群中的选举过程进行优化。在该技术方案中,设备集群中作为选举发送方的副本设备可以在PaxosLease算法中的prepare阶段,向该设备集群中作为选举响应方的多个副本设备发送prepare请求,促使作为选举响应方的多个副本设备分别继续向作为选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送prepare请求,后续作为选举发送方的副本设备和作为选举响应方的多个副本设备可以基于所有prepare请求中的优先级,确定优先级最高的目标副本设备,并继续进行PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将该目标副本设备选举为主副本设备。
[0096] 在具体实现时,在设备集群中,作为选举发送方的副本设备可以在PaxosLease算法中的prepare阶段,向作为选举响应方的多个副本设备发送prepare请求(可称之为第一类prepare请求)。
[0097] 对于作为上述选举响应方的多个副本设备中的任意一个副本设备而言,该副本设备可以响应于接收到的上述第一类prepare请求,继续向作为上述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送prepare请求(可称之为第二类prepare请求)。
[0098] 需要说明的是,不管是上述第一类prepare请求,还是上述第二类prepare请求,除了可以包括如前所述的投票编号之外,还可以包括发送该prepare请求的副本设备的优先级。
[0099] 作为上述选举发起方的副本设备可以接收到作为上述选举响应的多个副本设备发送的上述第二类prepare请求。由于每个prepare请求中都有发送该prepare请求的副本设备的优先级,就使得该副本设备可以基于接收到的所有第二类prepare请求中的优先级,以及该副本设备自身的优先级,确定优先级最高的副本设备(可称之为目标副本设备)。
[0100] 对于作为上述选举响应方的多个副本设备中的任意一个副本设备而言,该副本设备可以接收到作为上述选举发起方的副本设备发送的上述第一类prepare请求,以及作为除自身之外的其他选举响应方的副本设备发送的上述第二类prepare请求。由于每个prepare请求中都有发送该prepare请求的副本设备的优先级,就使得该副本设备可以基于接收到的所有第一类prepare请求和第二类prepare请求中的优先级,以及该副本设备自身的优先级,确定优先级最高的副本设备(即为目标副本设备)。
[0101] 在确定出上述目标副本设备的情况下,作为上述选举发起方的副本设备可以与作为上述选举响应方的多个副本设备继续进行PaxosLease算法中的prepare阶段(包括发送或接收prepare响应)和propose阶段(包括发送或接收propose请求和propose响应)的交互,以触发将该目标副本设备选举为主副本设备。
[0102] 采用上述方式,可以在基于PaxosLease算法的设备集群中的选举过程中,实现基于该设备集群中的各个副本设备的优先级的选举,从而可以在该设备集群中将优先级最高的副本设备选举为主副本设备。由于优先级可以根据实际需求为副本设备分配,也就使得选举出的主副本设备更加符合实际需求,而不再只是选择了最大的投票编号的副本设备。
[0103] 请参考图4和图5,图4是本说明是一示例性实施例示出的一种基于PaxosLease算法的设备集群中的选举方法的流程图,图5是在该基于PaxosLease算法的设备集群中的选举方法中,本申请一示例性实施例示出的一种设备集群中的设备交互的示意图。
[0104] 上述基于PaxosLease算法的设备集群中的选举方法可以应用于包括互为副本的多个设备(可称之为副本设备)的设备集群中,作为选举发起方的任一副本设备。
[0105] 在一些实施例中,上述设备集群可以包括如图1所示的分布式系统中的节点。也即,该分布式系统可以包括多个节点,每个节点可以包括多个副本设备。
[0106] 在一些实施例中,如图1所示的分布式系统可以是区块链网络。在这种情况下,该区块链网络中的各个区块链节点可以包括多个副本设备,而上述设备集群可以包括该区块链网络中的区块链节点。
[0107] 结合PaxosLease算法,上述设备集群中的任意一个需要提出提案的副本设备(此时该副本设备即为proposer),都可以尝试获取租约,即可以发起选举,并通过获得租约来被选举为主副本设备。在这种情况下,可以将该副本设备称为选举发起方,并将该设备集群中接收该副本设备发送的prepare请求的其他副本设备(此时这些副本设备即为acceptor)称为选举响应方。因此,在一次选举过程中,通常仅有一个选举发起方,但有多个选举响应方。
[0108] 如图5所示,上述设备集群可以包括副本设备A、副本设备B和副本设备C。这三个副本设备中的任意一个副本设备都可以作为上述选举发起方。相应的,除该副本设备之外的其他两个副本设备就可以作为上述选举响应方。例如,如果作为该选举发送方的副本设备为副本设备A,则作为该选举响应方的多个副本设备可以包括副本设备B和副本设备C。
[0109] 上述基于PaxosLease算法的设备集群中的选举方法可以包括以下步骤:
[0110] 步骤402:在所述PaxosLease算法中的prepare阶段,向所述设备集群中作为选举响应方的多个副本设备发送第一类prepare请求,以使作为所述选举响应方的多个副本设备分别响应于所述第一类prepare请求而向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级。
[0111] 在本实施例中,作为上述选举发送方的副本设备可以在PaxosLease算法中的prepare阶段,向作为上述选举响应方的多个副本设备发送prepare请求(可称之为第一类prepare请求)。
[0112] 对于作为上述选举响应方的多个副本设备中的任意一个副本设备而言,该副本设备可以响应于接收到的上述第一类prepare请求,继续向作为上述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送prepare请求(可称之为第二类prepare请求)。
[0113] 需要说明的是,不管是上述第一类prepare请求,还是上述第二类prepare请求,除了可以包括如前所述的投票编号之外,还可以包括发送该prepare请求的副本设备的优先级。
[0114] 继续参考图5,假设作为上述选举发送方的副本设备为副本设备A,作为上述选举响应方的多个副本设备包括副本设备B和副本设备C。在这种情况下,副本设备A可以向副本设备B和副本设备C发送上述第一类prepare请求(以prepare请求A表示),prepare请求A可以包括副本设备A的优先级。副本设备B可以响应于接收到的prepare请求A,继续向副本设备A和副本设备C发送上述第二类prepare请求(以prepare请求B表示),prepare请求B可以包括副本设备B的优先级。同样的,副本设备C也可以响应于接收到的prepare请求A,继续向副本设备A和副本设备B发送上述第二类prepare请求(以prepare请求C表示),prepare请求C可以包括副本设备C的优先级。
[0115] 在实际应用中,对于作为上述选举发起方的副本设备,以及作为上述选举响应方的多个副本设备而言,每个副本设备的优先级可以由用户按照实际需求分配。例如,可以由用户根据设备的数据处理能力分配优先级,设备的数据处理能力越强,优先级越高;或者,可以由用户根据设备的存储空间大小分配优先级,设备的存储空间越大,优先级越高;等等。
[0116] 步骤404:接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备。
[0117] 在本实施例中,作为上述选举发起方的副本设备可以接收到作为上述选举响应的多个副本设备发送的上述第二类prepare请求。由于每个prepare请求中都有发送该prepare请求的副本设备的优先级,就使得该副本设备可以基于接收到的所有第二类prepare请求中的优先级,以及该副本设备自身的优先级,确定优先级最高的副本设备(可称之为目标副本设备)。
[0118] 对于作为上述选举响应方的多个副本设备中的任意一个副本设备而言,该副本设备可以接收到作为上述选举发起方的副本设备发送的上述第一类prepare请求,以及作为除自身之外的其他选举响应方的副本设备发送的上述第二类prepare请求。由于每个prepare请求中都有发送该prepare请求的副本设备的优先级,就使得该副本设备可以基于接收到的所有第一类prepare请求和第二类prepare请求中的优先级,以及该副本设备自身的优先级,确定优先级最高的副本设备(即为目标副本设备)。
[0119] 继续参考图5,副本设备A可以基于副本设备A自身的优先级,以及接收到的prepare请求B中的副本设备B的优先级、prepare请求C中的副本设备C的优先级,确定优先级最高的目标副本设备。副本设备B可以基于副本设备B自身的优先级,以及接收到的prepare请求A中的副本设备A的优先级、prepare请求C中的副本设备C的优先级,确定优先级最高的目标副本设备。副本设备C可以基于副本设备C自身的优先级,以及接收到的prepare请求A中的副本设备A的优先级、prepare请求B中的副本设备B的优先级,确定优先级最高的目标副本设备。
[0120] 需要说明的是,对于作为上述选举发起方的副本设备,以及作为上述选举响应方的多个副本设备而言,每个设备实际上都是基于这些设备的优先级,确定这些设备中优先级最高的目标副本设备,因此每个设备确定出的目标副本设备必然是相同的。
[0121] 在一些实施例中,为了保证每个设备确定出相同的目标副本设备,可以预先设置一个时间窗口。
[0122] 在这种情况下,作为上述选举发起方的副本设备可以在上述时间窗口内,接收作为上述选举响应的多个副本设备发送的上述第二类prepare请求,并缓存接收到的所有第二类prepare请求,后续该副本设备可以基于缓存的所有第二类prepare请求中的优先级,以及该副本设备自身的优先级,确定优先级最高的目标副本设备。
[0123] 对于作为上述选举响应方的多个副本设备中的任意一个副本设备而言,该副本设备可以在上述时间窗口内,接收作为上述选举发起方的副本设备发送的上述第一类prepare请求,以及作为除自身之外的其他选举响应方的副本设备发送的上述第二类prepare请求,并缓存接收到的所有第一类prepare请求和第二类prepare请求,后续该副本设备可以基于缓存的所有第一类prepare请求和第二类prepare请求中的优先级,以及该副本设备自身的优先级,确定优先级最高的目标副本设备。
[0124] 在实际应用中,上述时间窗口可以是从发送或者接收到上述第一类prepare请求开始的一段时间。
[0125] 步骤406:与作为所述选举响应方的多个副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0126] 在本实施例中,在确定出上述目标副本设备的情况下,作为上述选举发起方的副本设备可以与作为上述选举响应方的多个副本设备继续进行PaxosLease算法中的prepare阶段(包括发送或接收prepare响应)和propose阶段(包括发送或接收propose请求和propose响应)的交互,以触发将该目标副本设备选举为主副本设备。
[0127] 具体的,在一些实施例中,对于作为上述选举发起方的副本设备,以及作为上述选举响应方的多个副本设备而言,如果上述目标副本设备为作为该选举发起方的副本设备,则在PaxosLease算法中的prepare阶段,除该目标副本设备之外的其他副本设备(包括作为该选举响应方的多个副本设备)可以向该目标副本设备返回与该目标副本设备发送的上述第一类prepare请求对应的prepare响应(可称之为第一类prepare响应)。如前所述,该第一类prepare响应可以指示发送该第一类prepare响应的副本设备是否可接受租约。该目标副本设备可以接收到除该目标副本设备之外的其他副本设备返回的该第一类prepare响应,并响应于接收到的指示可接受租约的第一类prepare响应的数量达到预设的阈值,在PaxosLease算法中的propose阶段,向除该目标副本设备之外的其他副本设备发送用于承诺该目标副本设备为主副本设备的租约,以将该目标副本设备确定为主副本设备,并将除该目标副本设备之外的其他副本设备确定为备副本设备。
[0128] 与之相应的,如果上述目标副本设备为作为上述选举响应方的多个副本设备中的任一副本设备,则在PaxosLease算法中的prepare阶段,除该目标副本设备之外的其他副本设备(包括作为上述选举发起方的副本设备,以及作为该选举响应方的多个副本设备中除该目标副本之外的其他副本设备)可以向该目标副本设备返回与该目标副本设备发送的上述第二类prepare请求对应的prepare响应(可称之为第二类prepare响应)。如前所述,该第二类prepare响应可以指示发送该第二类prepare响应的副本设备是否可接受租约。该目标副本设备可以接收到除该目标副本设备之外的其他副本设备返回的该第二类prepare响应,并响应于接收到的指示可接受租约的第二类prepare响应的数量达到预设的阈值,在PaxosLease算法中的propose阶段,向除该目标副本设备之外的其他副本设备发送用于承诺该目标副本设备为主副本设备的租约,以将该目标副本设备确定为主副本设备,并将除该目标副本设备之外的其他副本设备确定为备副本设备。
[0129] 在实际应用中,可以根据实际需求确定上述阈值。通常,该阈值可以符合如前所述的多数派的要求;例如,该阈值可以不小于作为上述选举响应方的多个副本设备的数量的一半。
[0130] 进一步的,对于上述目标副本设备而言,该目标副本设备为了向除该目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,如前所述,具体可以在PaxosLease算法中的propose阶段,向除该目标副本设备之外的其他副本设备发送包括与该目标副本设备对应的租约的propose请求,后续可以接收除该目标副本设备之外的其他副本设备返回的与该propose请求对应的propose响应,并响应于接收到的该propose响应的数量达到上述阈值,确定用于承诺该目标副本设备为主副本设备的租约发送成功。
[0131] 继续参考图5,假设副本设备A的优先级>副本设备B的优先级>副本设备C的优先级。在这种情况下,副本设备B可以向副本设备A发送与prepare请求A对应的prepare响应(以prepare响应AB表示),prepare响应AB可以指示副本设备B是否可接收租约。副本设备C可以向副本设备A发送与prepare请求A对应的prepare响应(以prepare响应AC表示),prepare响应AC可以指示副本设备C是否可接收租约。由于作为上述选举响应方的多个副本设备的数量为2,使得副本设备A可以响应于接收到的指示可接受租约的与prepare请求A对应的prepare响应的数量达到1,进入PaxosLease算法中的propose阶段。具体的,副本设备A可以响应于如下几种情况中的任意一种,进入PaxosLease算法中的propose阶段:1,仅接收到指示副本设备B可接受租约的prepare响应AB;2,仅接收到指示副本设备C可接受租约的prepare响应AC;3,接收到指示副本设备B不可接受租约的prepare响应AB,以及指示副本设备C可接受租约的prepare响应AC;4,接收到指示副本设备B可接受租约的prepare响应AB,以及指示副本设备C不可接受租约的prepare响应AC;5,接收到指示副本设备B可接受租约的prepare响应AB,以及指示副本设备C可接受租约的prepare响应AC。
[0132] 在PaxosLease算法中的propose阶段,副本设备A可以向副本设备B和副本设备C发送包括与副本设备A对应的租约的propose请求。副本设备B和副本设备C都可以向副本设备A发送与该propose请求对应的propose响应。副本设备A可以响应于接收到的该propose响应的数量达到1,确定用于承诺副本设备A为主副本设备的租约发送成功。后续,在副本设备A、副本设备B和副本设备C都持有与副本设备A对应的租约的情况下,副本设备A成为主副本设备,副本设备B和副本设备C都成为备副本设备。
[0133] 下面对上述副本设备的优先级进行说明。
[0134] 在一些实施例中,通常,一个副本设备的硬件资源的数量越多、性能越强,则说明这个副本设备的数据处理能力越强。因此,对于作为上述选举发起方的副本设备,以及作为上述选举响应方的多个副本设备而言,每个副本设备的优先级可以与该副本设备的硬件资源正相关,即硬件资源的数量越多、性能越强的副本设备可以具有更高的优先级。
[0135] 或者,在一些实施例中,对于作为上述选举发起方的副本设备,以及作为上述选举响应方的多个副本设备而言,各个副本设备可以承载多种服务。在这种情况下,每个副本设备可以具有与这多种服务分别对应的多个优先级,即一种服务对应于一个优先级。
[0136] 与之相应的,对于上述第一类prepare请求,以及上述第二类prepare请求中的任一prepare请求而言,该prepare请求还可以包括与上述多种服务中的任一服务(可称之为目标服务)对应的服务标识。在这种情况下,该prepare请求中的优先级即为该目标服务的优先级,选举出的主副本设备即为与该目标服务对应的主副本设备。
[0137] 进一步的,在一些实施例中,各个副本设备具有的与上述多种服务中的不同服务对应的优先级不同。
[0138] 通过为设备集群中的各个副本设备承载的多种服务中的不同服务分配不同的优先级,可以使与不同服务对应的主副本设备不同。由于在设备集群正常运行时,通常仅由主副本设备向外提供服务,这种方式使得可以由不同的主副本设备向外提供不同的服务,从而达到负载均衡的效果。
[0139] 在上述技术方案中,设备集群中作为选举发送方的副本设备可以在PaxosLease算法中的prepare阶段,向该设备集群中作为选举响应方的多个副本设备发送prepare请求,促使作为选举响应方的多个副本设备分别继续向作为选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送prepare请求,后续作为选举发送方的副本设备和作为选举响应方的多个副本设备可以基于所有prepare请求中的优先级,确定优先级最高的目标副本设备,并继续进行PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将该目标副本设备选举为主副本设备。
[0140] 采用上述方式,可以在基于PaxosLease算法的设备集群中的选举过程中,实现基于该设备集群中的各个副本设备的优先级的选举,从而可以在该设备集群中将优先级最高的副本设备选举为主副本设备。由于优先级可以根据实际需求为副本设备分配,也就使得选举出的主副本设备更加符合实际需求,而不再只是选择了最大的投票编号的副本设备。
[0141] 请参考图6,图6是本说明是一示例性实施例示出的另一种基于PaxosLease算法的设备集群中的选举方法的流程图。
[0142] 上述基于PaxosLease算法的设备集群中的选举方法可以应用于包括互为副本的多个设备(可称之为副本设备)的设备集群中,作为选举响应方的任一副本设备。
[0143] 上述基于PaxosLease算法的设备集群中的选举方法可以包括以下步骤:
[0144] 步骤602:在所述PaxosLease算法中的prepare阶段,接收作为选举发起方的副本设备发送的第一类prepare请求,并响应于所述第一类prepare请求,继续向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级。
[0145] 步骤604:接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备。
[0146] 步骤606:与作为所述选举发起方的副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0147] 如图6所示的实施例的具体实现可以参考如图5所示的实施例,本申请在此不再赘述。
[0148] 在上述技术方案中,设备集群中作为选举发送方的副本设备可以在PaxosLease算法中的prepare阶段,向该设备集群中作为选举响应方的多个副本设备发送prepare请求,促使作为选举响应方的多个副本设备分别继续向作为选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送prepare请求,后续作为选举发送方的副本设备和作为选举响应方的多个副本设备可以基于所有prepare请求中的优先级,确定优先级最高的目标副本设备,并继续进行PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将该目标副本设备选举为主副本设备。
[0149] 采用上述方式,可以在基于PaxosLease算法的设备集群中的选举过程中,实现基于该设备集群中的各个副本设备的优先级的选举,从而可以在该设备集群中将优先级最高的副本设备选举为主副本设备。由于优先级可以根据实际需求为副本设备分配,也就使得选举出的主副本设备更加符合实际需求,而不再只是选择了最大的投票编号的副本设备。
[0150] 请参考图7,图7是本申请一示例性实施例示出的一种设备的硬件结构的示意图。
[0151] 如图7所示,在硬件层面,上述设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本申请一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然之后运行。当然,除了软件实现方式之外,本申请一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或逻辑器件。
[0152] 请参考图8,图8是本申请一示例性实施例示出的一种基于PaxosLease算法的设备集群中的选举装置的框图。
[0153] 上述基于PaxosLease算法的设备集群中的选举装置可以应用于如图7所示的设备,以实现本申请的技术方案。该设备可以作为所述设备集群中作为选举发起方的任一副本设备;所述设备集群包括多个副本设备。
[0154] 上述基于PaxosLease算法的设备集群中的选举装置可以包括:
[0155] 发送模块802,在所述PaxosLease算法中的prepare阶段,向所述设备集群中作为选举响应方的多个副本设备发送第一类prepare请求,以使作为所述选举响应方的多个副本设备分别响应于所述第一类prepare请求而向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;
[0156] 确定模块804,接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;
[0157] 选举模块806,与作为所述选举响应方的多个副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0158] 可选的,所述与作为所述选举响应方的多个副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备,包括:
[0159] 如果所述目标副本设备为作为所述选举发起方的副本设备,则在所述PaxosLease算法中的prepare阶段,接收除所述目标副本设备之外的其他副本设备返回的与所述第一类prepare请求对应的第一类prepare响应,并响应于接收到的指示可接受租约的所述第一类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;
[0160] 如果所述目标副本设备为作为所述选举响应方的任一副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到所述阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;
[0161] 其中,所述prepare响应指示发送该prepare响应的副本设备是否可接受租约。
[0162] 可选的,所述目标副本设备通过以下方式,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约:
[0163] 向除所述目标副本设备之外的其他副本设备发送propose请求;其中,所述propose请求包括与所述目标副本设备对应的租约;
[0164] 接收除所述目标副本设备之外的其他副本设备返回的与所述propose请求对应的propose响应,并响应于接收到的所述propose响应的数量达到所述阈值,确定用于承诺所述目标副本设备为主副本设备的租约发送成功。
[0165] 可选的,所述接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备,包括:
[0166] 在预设的时间窗口内,接收作为所述选举响应方的多个副本设备发送的所述第二类prepare请求,并缓存接收到的所述第二类prepare请求;
[0167] 基于缓存的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备。
[0168] 可选的,所述分布式系统包括多个节点;所述多个节点分别包括多个副本设备;所述设备集群包括所述节点。
[0169] 可选的,所述分布式系统为区块链网络。
[0170] 可选的,所述设备集群中的各个副本设备承载了多种服务;所述设备集群中的各个副本设备具有与所述多种服务分别对应的多个优先级;所述prepare请求还包括与所述多种服务中的任一目标服务对应的服务标识;所述prepare请求中的优先级为发送该prepare请求的副本设备具有的与所述目标服务对应的优先级;所述主副本设备为选举出的与所述目标服务对应的主副本设备。
[0171] 可选的,所述设备集群中的各个副本设备具有的与所述多种服务中的不同服务对应的优先级不同。
[0172] 可选的,所述副本设备的优先级与所述副本设备的硬件资源正相关。
[0173] 请参考图9,图9是本申请一示例性实施例示出的另一种基于PaxosLease算法的设备集群中的选举装置的框图。
[0174] 上述基于PaxosLease算法的设备集群中的选举装置可以应用于如图7所示的设备,以实现本申请的技术方案。该设备可以作为所述设备集群中作为选举响应方的任一副本设备;所述设备集群包括多个副本设备。
[0175] 上述基于PaxosLease算法的设备集群中的选举装置可以包括:
[0176] 接收模块902,在所述PaxosLease算法中的prepare阶段,接收作为选举发起方的副本设备发送的第一类prepare请求,并响应于所述第一类prepare请求,继续向作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送第二类prepare请求;其中,所述prepare请求包括发送该prepare请求的副本设备的优先级;
[0177] 确定模块904,接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备;
[0178] 选举模块906,与作为所述选举发起方的副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备。
[0179] 可选的,所述与作为所述选举发起方的副本设备继续进行所述PaxosLease算法中的prepare阶段和propose阶段的交互,以触发将所述目标副本设备选举为主副本设备,包括:
[0180] 如果所述目标副本设备为作为所述选举发起方的副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述第一类prepare请求对应的第一类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第一类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;
[0181] 如果所述目标副本设备为作为除自身之外的其他选举响应方的任一副本设备,则在所述PaxosLease算法中的prepare阶段,向所述目标副本设备返回与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,以使所述目标副本设备执行:响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将所述目标副本设备确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;
[0182] 如果所述目标副本设备为所述副本设备自身,则在所述PaxosLease算法中的prepare阶段,接收除所述目标副本设备之外的其他副本设备返回的与所述目标副本设备发送的所述第二类prepare请求对应的第二类prepare响应,并响应于接收到的指示可接受租约的所述第二类prepare响应的数量达到预设的阈值,在所述PaxosLease算法中的propose阶段,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约,以将作为所述目标副本确定为主副本设备,并将除所述目标副本设备之外的其他副本设备确定为备副本设备;
[0183] 其中,所述prepare响应指示发送该prepare响应的副本设备是否可接受租约。
[0184] 可选的,所述目标副本设备通过以下方式,向除所述目标副本设备之外的其他副本设备发送用于承诺所述目标副本设备为主副本设备的租约:
[0185] 向除所述目标副本设备之外的其他副本设备发送propose请求;其中,所述propose请求包括与所述目标副本设备对应的租约;
[0186] 接收除所述目标副本设备之外的其他副本设备返回的与所述propose请求对应的propose响应,并响应于接收到的所述propose响应的数量达到所述阈值,确定用于承诺所述目标副本设备为主副本设备的租约发送成功。
[0187] 可选的,所述接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并基于接收到的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备,包括:
[0188] 在预设的时间窗口内,接收作为所述选举发起方的副本设备,以及作为除自身之外的其他选举响应方的副本设备发送的所述第二类prepare请求,并缓存接收到的所述第二类prepare请求;
[0189] 基于缓存的所述第二类prepare请求中的优先级,以及作为所述选举发起方的副本设备的优先级,确定优先级最高的目标副本设备。
[0190] 可选的,所述分布式系统包括多个节点;所述多个节点分别包括多个副本设备;所述设备集群包括所述节点。
[0191] 可选的,所述分布式系统为区块链网络。
[0192] 可选的,所述设备集群中的各个副本设备承载了多种服务;所述设备集群中的各个副本设备具有与所述多种服务分别对应的多个优先级;所述prepare请求还包括与所述多种服务中的任一目标服务对应的服务标识;所述prepare请求中的优先级为发送该prepare请求的副本设备具有的与所述目标服务对应的优先级;所述主副本设备为选举出的与所述目标服务对应的主副本设备。
[0193] 可选的,所述设备集群中的各个副本设备具有的与所述多种服务中的不同服务对应的优先级不同。
[0194] 可选的,所述副本设备的优先级与所述副本设备的硬件资源正相关。
[0195] 对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。
[0196] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请的技术方案的目的。
[0197] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0198] 在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0199] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0200] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0201] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0202] 上述对本申请特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0203] 在本申请一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0204] 应当理解,尽管在本申请一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0205] 以上所述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。