服务器系统中领导者服务器的确定方法和服务器系统的制作方法

文档序号:7776270阅读:140来源:国知局
服务器系统中领导者服务器的确定方法和服务器系统的制作方法
【专利摘要】本发明公开了一种服务器系统中领导者服务器的确定方法和服务器系统,其中,该确定方法包括:通过至少一轮提名在多个服务器中确定领导者服务器,其中,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息,提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器;如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息;其中,在一服务器发送提名消息后,如果系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器。
【专利说明】服务器系统中领导者服务器的确定方法和服务器系统
【技术领域】
[0001]本发明涉及计算机领域,并且特别地,涉及一种服务器系统中领导者服务器的确定方法和服务器系统。
【背景技术】
[0002]随着计算机系统处理能力的日益提升,利用这些处理能力的方法层出不穷,其中,采用分布式架构的计算机系统就是有效提高其处理能力的方案之一。分布式架构允许带宽、性能和可靠性等系统资源的灵活配置,采用分布式架构的系统可以包含数量众多的分布式节点,这些节点可以相互通信以达到处理各种任务消息的目的。
[0003]为了共同完成某项任务,众多分布式节点之间需要维护某种一致的资源视图,例如每个客户端节点需要知道整个分布式文件系统中文件的布局信息以便访问文件,如果这种视图不一致将无法保证文件数据的一致性。一致的资源视图保证了任务处理在整个分布式系统中的处理过程就好像在单个节点上处理一样,否则,不一致的资源视图会导致处理逻辑错误,最终无法产生正确的结果。分布式系统可以是分布式文件系统、分布式数据库等存储系统,也可能是其他类型计算机处理系统。
[0004]在现有技术中,分布式系统多数情况下可以使用Paxos协议来在众多分布式节点间达成一致性,该协议涉及两种角色:领导者服务器和接受者服务器,其中,领导者服务器在整个协议中做协调工作,保证大多数接受者服务器认可的结果作为最终结果,并将最终结果提交给所有接受者服务器,这样,整个分布式系统就形成一致的结果,各个节点都基于这个结果进行处理。某个分布式节点可以承担这两种角色中的一种或多种。
[0005]Paxos协议包含如下几个阶段:
[0006]1.提案阶段。领导者服务器创建一个编号为N的提案,这个提案编号必须大于该领导者服务器之前创建的提案编号,领导者服务器将包含这个提案编号的准备消息发送给接受者服务器;
[0007]2.承诺阶段。接受者服务器收到准备消息后,如果发现这个提案号是它所见到最大的,那么接受者服务器承诺会忽略今后所有比该编号小的任何准备消息;否则,接受者服务器忽略这个准备消息,因为它太旧了,如果接受者服务器之前接受过其他提案,那么接受者服务器需要在给领导者服务器的承诺消息中加入之前的提案编号和提案的值;
[0008]3.请求接受阶段。如果领导者服务器发现大多数接受者服务器都承诺接受这个提案,那么它就需要给提案设置一个值,如果有任何接受者服务器在承诺消息中返回了之前它们曾经接受的提案,那么领导者服务器应该选择其中编号最大的提案的值作为本次提案的值;否则,领导者服务器可以选择它想要的任意值,值确定后,领导者服务器将包含该值的请求接受消息发给每个接受者服务器;
[0009]4.接受阶段。接受者服务器收到请求接受消息后,如果接受者服务器还没有承诺过任何大于当前提案号的提案,那么接受者服务器必须接受这个提案,并给领导者服务器发送接受消息;否则,接受者服务器可以忽略该请求接受消息;[0010]5.提交请求阶段。如果领导者服务器收到大多数接受者服务器的接受消息后,给每个接受者服务器发送提交请求消息;否则,继续沿用之前的值;
[0011]6.提交阶段。接受者服务器将提案和提案的值保存在本地,至此一致的视图已经建立。
[0012]其一致的制图建立流程如图1所示。
[0013]在现有技术中,领导者服务器故障后,分布式一致性协议(即Paxos协议)会发生阻塞,整个系统会因此失效。在Paxos协议中领导者服务器扮演着协调一致的角色,它是构建一致性视图过程的发起者和终结者,没有领导者服务器的存在,整个Paxos协议都会失效。但是,Paxos协议本身没有明确规定如何确定领导者服务器,为了解决这个问题,在现有技术中,使用静态指定的方式确定领导者服务器,然而,当领导者服务器发生故障时,整个协议便失效,这极大的影响了协议的可用性。除非领导者服务器故障排除后重新恢复工作,否则整个分布式系统的功能会发生阻塞。因此,Paxos协议需要一种高容错的确定领导者服务器的机制。
[0014]而现有的容错技术虽然能够保证故障发生后系统继续提供服务,但是依然会引入其他功能性阻塞问题。当领导者服务器发生故障后,会指定另一个领导者服务器代替前者行使协调一致性的职责,但是,如果前者故障恢复后重新回到系统中,那么此时就会同时存在两个领导者服务器,此时,两个领导者服务器都会向其他接受者服务器发布提案,由于两者的争抢,没有任何提案最后可以被提交,整个Paxos协议依然会陷入一种功能上的阻塞状态,极大影响了整个系统的可用性,因此,Paxos协议需要一种高容错并且非阻塞的确定领导者服务器的机制。
[0015]针对相关技术中服务器系统中采用静态指定的方式确定领导者服务器,没有明确的确定领导者服务器的方法,导致在领导者服务器发生故障后,整个分布式一致性失效并容易出现多个领导者服务器相互僵持的阻塞状态的问题,目前尚未提出有效的解决方案。

【发明内容】

[0016]针对相关技术中服务器系统中采用静态指定的方式确定领导者服务器,没有明确的确定领导者服务器的方法,导致在领导者服务器发生故障后,整个分布式一致性失效并容易出现多个领导者服务器相互僵持的阻塞状态的问题,本发明提出一种服务器系统中领导者服务器的确定方法和服务器系统,能够通过至少一轮提名,一服务器向服务器系统中的其他服务器发送提名消息,并接收来自于其他服务器的确认消息,确定出服务器系统中的领导者服务器。
[0017]本发明的技术方案是这样实现的:
[0018]根据本发明的一个方面,提供了一种服务器系统中领导者服务器的确定方法,该确定方法包括:
[0019]通过至少一轮提名在多个服务器中确定领导者服务器,其中,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息,提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器;
[0020]如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息;[0021]其中,在一服务器发送提名消息后,如果服务器系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器。
[0022]此外,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息的情况下,该服务器启动定时器,定时器用于规定本轮提名持续的时间,如果在定时器规定的时间范围内,服务器系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器;
[0023]如果在定时器规定的时间范围内,同意该发送提名消息的服务器成为领导者服务器的服务器未达到预定数量,则发送提名消息的服务器未被确定为领导者服务器,本轮提
々口水o
[0024]其中,提名消息中包含发送该提名消息的服务器的性能等级信息,接收到提名消息的服务器根据自身的性能等级信息与提名消息中的性能等级信息的比较结果,判断是否同意发送该提名消息的服务器成为领导者服务器。
[0025]此外,提名消息中具有表示该提名消息发送时间的时间信息,如果一服务器发送了第一提名消息,并且该服务器从其他服务器接收到第二提名消息,则该服务器根据第一提名消息中的时间信息和第二提名消息中的时间信息,确定根据第二提名消息回复确认消息、或者忽略第二提名消息,其中,确认消息用于表示同意发送第二提名消息的服务器成为领导者服务器。
[0026]并且,接收到第二提名消息的服务器判断第一提名消息中的时间信息所表示的时间点是否早于第二提名消息中的时间信息所表示的时间点,在判断结果为是的情况下,根据第二提名消息回复确认消息;否则忽略第二提名消息。
[0027]其中,确定所述性能等级信息的条件包括:
[0028]进程的备份功能、电源的可延续性能、CPU的主频、CPU核心数、内存容量、硬盘容
量、硬盘读写速率。
[0029]其中,领导者服务器为用于协调服务器系统中的分布式一致性的服务器。
[0030]此外,该确定方法进一步包括:
[0031]确定的领导者服务器向服务器系统的其他服务器通知本服务器为领导者服务器。
[0032]根据本发明的另一方面,提供了一种服务器系统,包括多个服务器,其中,该服务器系统中的每个服务器包括:
[0033]发送模块,用于在一轮提名中,向服务器系统中的其他服务器发送提名消息,提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器;
[0034]确定模块,用于发送提名消息后,如果服务器系统中的其他全部服务器、或超过预定数量的服务器均同意本地服务器成为领导者服务器,则将本地服务器确定为领导者服务器;
[0035]其中,服务器系统通过至少一轮提名在多个服务器中确定领导者服务器,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息,如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息。
[0036]此外,每个服务器进一步包括:[0037]定时器,用于规定一轮提名持续的时间,并且定时器在定时器所在的服务器向服务器系统中的其他服务器发送提名消息的情况下启动,如果在定时器规定的时间范围内,服务器系统中的其他全部服务器、或超过预定数量的服务器均同意定时器所在的服务器成为领导者服务器,则确定模块将该所在的服务器确定为领导者服务器;
[0038]如果在定时器规定的时间范围内,定时器所在的服务器未被确定为领导者服务器,则确定模块确定本轮提名结束。
[0039]此外,提名消息中包含发送该提名消息的服务器的性能等级信息,并且,每个服务器进一步包括:
[0040]判断模块,用于在接收到来自于其他服务器的提名消息的情况下,根据自身的性能等级信息与提名消息中的性能等级信息的比较结果,判断是否同意发送该提名消息的服务器成为领导者服务器;
[0041]并且,发送模块进一步用于在判断模块的判断结果为是的情况下,向发送该提名消息的服务器发送确认消息,其中,确认消息用于表示同意发送该提名消息的服务器成为领导者服务器;发送模块还用于在判断模块的判断结果为否的情况下,向其他服务器发送提名消息。
[0042]其中,提名消息中具有表示该提名消息发送时间的时间信息,如果一服务器发送了第一提名消息,并且该服务器从其他服务器接收到第二提名消息,则该服务器的判断模块根据第一提名消息中的时间信息和第二提名消息中的时间信息,确定根据第二提名消息回复确认消息、或者忽略第二提名消息。
[0043]并且,接收到第二提名消息的服务器的判断模块用于判断第一提名消息中的时间信息所表示的时间点是否早于第二提名消息中的时间信息所表示的时间点,在判断结果为是的情况下,根据第二提名消息回复确认消息;否则忽略第二提名消息。
[0044]本发明通过至少一轮提名,并且,在每一轮提名中,由一服务器向其他服务器发送提名消息,并接收来自其他服务器的确认消息,如果在本轮提名中,发送提名消息的服务器被确定为领导者服务器,则向其他服务器通知本服务器为领导者服务器,如果在本轮提名中,发送提名消息的服务器没有被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息,能够在服务器系统中确定出唯一的领导者服务器,从而使服务器系统中分布式一致性得以保证,也保证了服务器系统的稳定流畅运行。
【专利附图】

【附图说明】
[0045]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]图1是在现有技术中,服务器系统中众多分布式节点一致性视图的建立流程图;
[0047]图2是根据本发明实施例的服务器系统中领导者服务器的确定方法流程图;
[0048]图3是根据本发明实施例的服务器系统中每个服务器的结构框图;
[0049]图4是根据本发明一个实施例的服务器系统中领导者服务器的确定方法实现过程中提名阶段的流程图;
[0050]图5是根据本发明一个实施例的服务器系统中领导者服务器的确定方法实现过程中确认阶段的流程图;
[0051]图6是根据本发明一个实施例的服务器系统中领导者服务器的确定方法实现过程中决胜阶段的流程图;
[0052]图7是根据本发明一个实施例的服务器系统中领导者服务器的确定方法实现过程中当选阶段的流程图。
【具体实施方式】
[0053]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0054]根据本发明的实施例,提供了一种服务器系统中领导者服务器的确定方法。
[0055]如图2所示,该确定方法包括:
[0056]步骤S201,通过至少一轮提名在多个服务器中确定领导者服务器,其中,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息,提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器;
[0057]在此步骤中,作为一新加入服务器系统的服务器,在未知服务器系统中领导者服务器是否存在、和/或运行状态、和/或性能等级信息的情况下,向系统中其他服务器发送提名消息,也就是说,即使服务器系统中之前的领导者服务器出现异常后又恢复正常工作,也只能作为新加入的节点,并不能继续拥有领导者服务器的地位,如果想成为领导者服务器,必须经过提名,从而保证了服务器系统中,领导者服务器只有一个,不会出现多个领导者服务器相互僵持导致服务器系统发生功能阻塞的情况,也就是说,在服务器系统中,如果领导者服务器不存在、或者一旦领导者服务器发生故障,在分布式系统就某个视图达成一致前要先就领导者服务器达成一致,并且每次重新确定领导者服务器都要经历一个达成一致的过程。
[0058]步骤S203,如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息;
[0059]步骤S205,其中,在一服务器发送提名消息后,如果服务器系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器。
[0060]此外,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息的情况下,该服务器启动定时器,定时器用于规定本轮提名持续的时间,如果在定时器规定的时间范围内,服务器系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器;
[0061]如果在定时器规定的时间范围内,同意该发送提名消息的服务器成为领导者服务器的服务器未达到预定数量,则发送提名消息的服务器未被确定为领导者服务器,本轮提名结束;
[0062]例如,如果在定时器规定的时间范围内,同意发送提名消息的服务器成为领导者服务器的服务器数量没有达到预定数量,则该发送提名消息的服务器未被确定为领导者服务器,本轮提名仍然结束,该发送提名消息的服务器等待其他服务器的成为领导者服务器的通知或者接收新一轮提名中的来自其他服务器的提名消息。
[0063]其中,提名消息中包含发送该提名消息的服务器的性能等级信息,接收到提名消息的服务器根据自身的性能等级信息与提名消息中的性能等级信息的比较结果,判断是否同意发送该提名消息的服务器成为领导者服务器。
[0064]此外,提名消息中具有表示该提名消息发送时间的时间信息,如果一服务器发送了第一提名消息,并且该服务器从其他服务器接收到第二提名消息,则该服务器根据第一提名消息中的时间信息和第二提名消息中的时间信息,确定根据第二提名消息回复确认消息、或者忽略第二提名消息,其中,确认消息用于表示同意发送第二提名消息的服务器成为领导者服务器。
[0065]并且,接收到第二提名消息的服务器判断第一提名消息中的时间信息所表示的时间点是否早于第二提名消息中的时间信息所表示的时间点,在判断结果为是的情况下,根据第二提名消息回复确认消息;否则忽略第二提名消息。
[0066]具体地,例如,在一轮提名中,在一服务器发送了第一提名消息以后,如果接收到来自其他服务器的第二提名消息,并且,该第二提名消息的发送时间点晚于该第一提名消息的发送时间点,则说明接收到第一提名消息的服务器不同意发送第一提名消息的服务器成为领导者服务器,所以该服务器向其他服务器发送第二提名消息,从而第二提名消息的发送时间点晚于第一提名消息的发送时间点;如果接收到的第二提名消息的发送时间点早于第一提名消息的发送时间点,则直接将该第二提名消息忽略。
[0067]此外,每一轮提名中,发送提名消息的服务器可以是一个,也可以是多个,而判断哪一提名消息作为本轮提名的开始,则通过提名消息的发送时间点,并结合服务器的性能等级值决定。
[0068]其中,确定性能等级信息的条件包括以下参数:进程的备份功能、电源的可延续性能、CPU的主频、CPU核心数、内存容量、硬盘容量、硬盘读写速率等等。进一步地,也可以根据以上参数的至少之一来确定性能等级信息。
[0069]例如,一种方式是根据实际情况,将上述条件加权考虑,得到性能等级值。
[0070]其中,领导者服务器为用于协调服务器系统中的分布式一致性的服务器。
[0071]此外,该确定方法进一步包括:
[0072]确定的领导者服务器向服务器系统的其他服务器通知本服务器为领导者服务器。
[0073]根据本发明的实施例,还提供了一种服务器系统,包括多个服务器。
[0074]如图3所示,该服务器系统中的每个服务器包括:
[0075]发送模块31,用于在一轮提名中,向服务器系统中的其他服务器发送提名消息,提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器;
[0076]确定模块32,用于发送提名消息后,如果服务器系统中的其他全部服务器、或超过预定数量的服务器均同意本地服务器成为领导者服务器,则将本地服务器确定为领导者服务器;[0077]其中,服务器系统通过至少一轮提名在多个服务器中确定领导者服务器,在每一轮提名中,一服务器向服务器系统中的其他服务器发送提名消息,如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息。
[0078]此外,每个服务器进一步包括:
[0079]定时器(未示出),用于规定一轮提名持续的时间,并且定时器在定时器所在的服务器向服务器系统中的其他服务器发送提名消息的情况下启动,如果在定时器规定的时间范围内,服务器系统中的其他全部服务器、或超过预定数量的服务器均同意定时器所在的服务器成为领导者服务器,则确定模块32将该所在的服务器确定为领导者服务器;
[0080]如果在定时器规定的时间范围内,定时器所在的服务器未被确定为领导者服务器,则确定模块32确定本轮提名结束。
[0081]此外,提名消息中包含发送该提名消息的服务器的性能等级信息,并且,每个服务器进一步包括:
[0082]判断模块(未示出),用于在接收到来自于其他服务器的提名消息的情况下,根据自身的性能等级信息与提名消息中的性能等级信息的比较结果,判断是否同意发送该提名消息的服务器成为领导者服务器;
[0083]并且,发送模块31进一步用于在判断模块的判断结果为是的情况下,向发送该提名消息的服务器发送确认消息,其中,确认消息用于表示同意发送该提名消息的服务器成为领导者服务器;发送模块31还用于在判断模块的判断结果为否的情况下,向其他服务器发送提名消息。
[0084]其中,提名消息中具有表示该提名消息发送时间的时间信息,如果一服务器发送了第一提名消息,并且该服务器从其他服务器接收到第二提名消息,则该服务器的判断模块根据第一提名消息中的时间信息和第二提名消息中的时间信息,确定根据第二提名消息回复确认消息、或者忽略第二提名消息。
[0085]并且,接收到第二提名消息的服务器的判断模块用于判断第一提名消息中的时间信息所表示的时间点是否早于第二提名消息中的时间信息所表示的时间点,在判断结果为是的情况下,根据第二提名消息回复确认消息;否则忽略第二提名消息。
[0086]例如,在一个实施例中,本发明提出的服务器系统中领导者服务器的确定方法的核心由如下几个阶段构成。其中,每个参与其中的分布式节点起初都是选举人,在经历了选举后,会产生唯一的领导者,其余成为接受者,选举人需要记录的信息包括:等级、时间点、候选标志位、确认选举人集合和已确认的领导者,其中,等级描述该选举人成为领导者的符合程度,不同的选举人之间通过比较等级来确定谁更适合成为领导者;时间点是一个单调递增的时间描述符,它描述整个选举过程的推进过程;候选人标志位表明该选举人是否正在经历被选举为领导者的过程;确认选举人集合描述所有认可该选举人成为领导者的其他选举人;已确认的领导者描述该选举人已经认可的领导者。
[0087]一、提名阶段。如图4所示,这个阶段的主要职责是向分布式系统中的所有其他选举人发出提名消息,表达自己意图成为领导者的意愿。
[0088]1.清空选举人集合,开始新的一轮提名;
[0089]2.获取该选举人当前的时间点,即发送提名消息的时间点;[0090]3.将候人选标志位标记为真,已确认的领导者标记为不存在;
[0091]4.向除自身外的其他选举人发送提名消息;
[0092]5.启动定时器。
[0093]二、确认阶段。如图5所示,这个阶段的职责是处理来自其他选举人的提名消息。
[0094]1.接收到来自其他节点的提名消息的节点比较接收到的提名消息内包含的提名消息发送的时间点与该节点的时间点,如果该节点的时间点较大,那么直接丢弃该提名消息不予处理,进入步骤5 ;如果该节点的时间点较小,对于新加入系统的节点其初始的时间点必定落后于其他节点,此时为了帮助新节点加入系统,本地先发起新的选举,令本地时间点等于提名消息时间点,然后继续处理提名消息,进入步骤2 ;
[0095]2.接收到提名消息的节点比较该提名消息中包含的发送该提名消息的节点的等级值与该节点等级值的大小,在该节点等级值较小的情况下,该节点不同意发送提名消息的节点成为为领导者,自己向其他节点发送提名消息。
[0096]3.接收到来自该节点的提名消息之后,判断已确认的领导者是否存在,如果判断结果为是,则说明本节点已经确认过该节点发送来的提名消息,同意该节点为领导者,确认阶段结束,否则,进入步骤4;
[0097]4.判断候选人标志位是否为假,即自己是否正在经历被选举为领导者的过程,并在判断结果为自己没有在经历被选举为领导者的过程的情况下,向其他选举人发送发送提名消息,争取自己成为领导者;
[0098]5.判断本节点是否正在参与选举,或者本节点是否为新加入的节点,如果判断结果为本节点没有正在参与选举,或者本节点为新加入的节点,则发起新一轮选举,向其他节点发送提名消息,争取让新节点参与到选举过程中来;
[0099]6.如果接收到来自其他节点的提名消息,并判断已确认的领导者不存在,或者本地确认的领导者比发送提名消息的节点差,则向该发送提名消息的节点恢复确认消息,同意该节点成为领导者服务器,并启动定时器。
[0100]三、决胜阶段。如图6所示,这个阶段的主要职责是处理来自其他节点的确认消
肩、O
[0101]1.在一节点接收到来自其他节点的确认消息之后,比较该确认消息的时间点与本地时间点的大小,如果该时间点大于本节点的时间点,则可能本节点刚刚启动,更新本节点的时间点,进入提名阶段,否则,继续决胜阶段;
[0102]2.判断候选人标志位是否为真,如果判断结果为是,则说明该节点正在经历被选举为领导者的过程,将该确认消息的发送者加入到确认选举人集合;
[0103]3.如果在定时器规定的时间范围内,系统中其他全部选举人均同意本节点为领导者,则取消定时器,想其他选举人发送胜选消息;否则,退出决胜阶段,等待其他选举人的胜选消息或者提名消息。
[0104]四、当选阶段。如图7所示,这个阶段的主要职责是处理来自其他节点的胜选消息。判断本节点如果没有正在参与选举,则进入提名阶段,否则按照胜选消息的时间点更新本地时间点,取消确认阶段启动的定时器。
[0105]不难理解,在以上实施例描述的服务器系统中领导者服务器的确定方法,在选举人发送的每一消息(包括提名消息、确认消息、胜选消息等等)中,均包含有该选举人发送该消息的时间点,并且,在每一次发送消息之后,均启动相应的定时器,以便控制选举过程进行的时间。
[0106]此外,根据等级的定义,确定等级值的方法要客观反映定义。例如,一种方式是考虑节点的可靠性,具有备份控制器、电源或电池的节点更合适成为领导者;还可以考虑节点的性能,具有较高CPU主频、较多CPU核心数和内存容量以及较高性能硬盘的节点更合适成为领导者。将上述因素加权综合考虑得出的等级值作为评判标准,在本实施例中规定,等级的值越小越合适成为领导者,当然,在其他实施例中,根据实际情况和用户需要,也可以规定等级值越大越合适成为领导者。
[0107]本实施例中描述的服务器系统中领导者服务器的确定方法,具备以下效果:
[0108]1.领导者故障后,整个系统不会发生功能阻塞。系统首次启动后,依靠本发明提出的确定方法可以确定唯一的领导者;当领导者故障后,发现故障的节点可以再次依靠这套选举方法确定新的领导者,所以,整个系统可以持续无阻塞地提供服务;
[0109]2.该确定方法在整个系统内部就领导者达成了一致,不会存在多个领导者长期僵持的场景。因为在确认阶段,每个节点都会将提名消息发送者的等级与自身等级进行比较,只有当对方比自身更合适成为领导者时才会给对方回复确认消息。所以,整个选举方法可以保证最终确定最为合适的唯一领导者,无论是曾经因故障脱离系统的节点还是全新的节点加入到系统后,本选举方法在确认阶段和决胜阶段都可以发现这两种场景,并在本地进入提名阶段,以便新的选举过程可以包含新加入的节点,从而使系统在任何时刻都存在消除分歧的能力,进而保证了整个系统在领导者上的一致性。
[0110]综上所述,借助于本发明的上述技术方案,通过至少一轮提名,并且,在每一轮提名中,由一服务器向其他服务器发送提名消息,并接收来自其他服务器的确认消息,如果在本轮提名中,发送提名消息的服务器被确定为领导者服务器,则向其他服务器通知本服务器为领导者服务器,如果在本轮提名中,发送提名消息的服务器没有被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息,能够在服务器系统中确定出唯一的领导者服务器,从而使服务器系统中的分布式一致性得以保证,并保证了服务器系统的稳定流畅运行。
[0111]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种服务器系统中领导者服务器的确定方法,其特征在于,包括: 通过至少一轮提名在多个服务器中确定领导者服务器,其中,在每一轮提名中,一服务器向所述服务器系统中的其他服务器发送提名消息,所述提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器; 如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息; 其中,在一服务器发送提名消息后,如果所述服务器系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器。
2.根据权利要求1所述的确定方法,其特征在于,在每一轮提名中,一服务器向所述服务器系统中的其他服务器发送提名消息的情况下,该服务器启动定时器,所述定时器用于规定本轮提名持续的时间,如果在所述定时器规定的时间范围内,所述服务器系统中的其他全部服务器、或超过预定数量的服务器均同意该发送提名消息的服务器成为领导者服务器,则将该发送提名消息的服务器确定为领导者服务器; 如果在所述定时器规定的时间范围内,同意该发送提名消息的服务器成为领导者服务器的服务器未达到预定数量,则发送提名消息的服务器未被确定为领导者服务器,本轮提名结束。
3.根据权利要求1所述的确定方法,其特征在于,提名消息中包含发送该提名消息的服务器的性能等级信息,接收到提名消息的服务器根据自身的性能等级信息与提名消息中的性能等级信息的比较结果,判断是否同意发送该提名消息的服务器成为领导者服务器。
4.根据权利要求3所述的确定方法,其特征在于,提名消息中具有表示该提名消息发送时间的时间信息,如果一服务器发送了第一提名消息,并且该服务器从其他服务器接收到第二提名消息,则该服务器根据所述第一提名消息中的时间信息和所述第二提名消息中的时间信息,确定根据所述第二提名消息回复确认消息、或者忽略所述第二提名消息,其中,所述确认消息用于表示同意发送所述第二提名消息的服务器成为领导者服务器。
5.根据权利要求4所述的确定方法,其特征在于,接收到所述第二提名消息的服务器判断所述第一提名消息中的时间信息所表示的时间点是否早于所述第二提名消息中的时间信息所表示的时间点,在判断结果为是的情况下,根据所述第二提名消息回复确认消息;否则忽略所述第二提名消息。
6.根据权利要求3-5中任一项所述的确定方法,其特征在于,确定所述性能等级信息的条件包括: 进程的备份功能、电源的可延续性能、CPU的主频、CPU核心数、内存容量、硬盘容量、硬盘读写速率。
7.根据权利要求1至5中任意一项所述的确定方法,其特征在于,所述领导者服务器为用于协调所述服务器系统中的分布式一致性的服务器。
8.根据权利要求1至5中任意一项所述的确定方法,其特征在于,进一步包括: 确定的领导者服务器向所述服务器系统的其他服务器通知本服务器为领导者服务器。
9.一种服务器系统,包括多个服务器,其特征在于,每个服务器包括: 发送模块,用于在一轮提名中,向所述服务器系统中的其他服务器发送提名消息,所述提名消息用于供其他服务器判断是否同意发送该提名消息的服务器成为领导者服务器; 确定模块,用于发送提名消息后,如果所述服务器系统中的其他全部服务器、或超过预定数量的服务器均同意本地服务器成为领导者服务器,则将本地服务器确定为领导者服务器; 其中,所述服务器系统通过至少一轮提名在多个服务器中确定领导者服务器,在每一轮提名中,一服务器向所述服务器系统中的其他服务器发送提名消息,如果在一轮提名中,发送提名消息的服务器未被确定为领导者服务器,则由不同意该服务器成为领导者服务器的一服务器在下一轮提名中向其他服务器发送提名消息。
10.根据权利要求9所述的服务器系统,包括多个服务器,其特征在于,每个服务器进一步包括: 定时器,用于规定一轮提名持续的时间,并且所述定时器在所述定时器所在的服务器向所述服务器系统中的其他服务器发送提名消息的情况下启动,如果在所述定时器规定的时间范围内,所述服务器系统中的其他全部服务器、或超过预定数量的服务器均同意所述定时器所在的服务器成为领导者服务器,则所述确定模块将该所在的服务器确定为领导者服务器; 如果在所述定时器规定的时间范围内,所述定时器所在的服务器未被确定为领导者服务器,则所述确定模块确定本轮提名结束。
11.根据权利要求8所述的服务器系统,包括多个服务器,其特征在于,提名消息中包含发送该提名消息的服务器的性能等级信息,并且,每个服务器进一步包括: 判断模块,用于在接收到来自于其他服务器的提名消息的情况下,根据自身的性能等级信息与所述提名消息中的性能等级信息的比较结果,判断是否同意发送该提名消息的服务器成为领导者服务器; 并且,所述发送模块进一步用于在所述判断模块的判断结果为是的情况下,向发送该提名消息的服务器发送确认消息,其中,确认消息用于表示同意发送该提名消息的服务器成为领导者服务器;所述发送模块还用于在所述判断模块的判断结果为否的情况下,向其他服务器发送提名消息。
12.根据权利要求11所述的服务器系统,其特征在于,提名消息中具有表示该提名消息发送时间的时间信息,如果一服务器发送了第一提名消息,并且该服务器从其他服务器接收到第二提名消息,则该服务器的判断模块根据所述第一提名消息中的时间信息和所述第二提名消息中的时间信息,确定根据所述第二提名消息回复确认消息、或者忽略所述第二提名消息。
13.根据权利要求12所述的服务器系统,其特征在于,接收到所述第二提名消息的服务器的判断模块用于判断所述第一提名消息中的时间信息所表示的时间点是否早于所述第二提名消息中的时间信息所表示的时间点,在判断结果为是的情况下,根据所述第二提名消息回复确认消息;否则忽略所述第二提名消息。
【文档编号】H04L29/08GK103618700SQ201310562622
【公开日】2014年3月5日 申请日期:2013年11月12日 优先权日:2013年11月12日
【发明者】郑劭馨, 杨浩, 苗艳超, 刘新春 申请人:曙光信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1