专利名称:一种节点选举方法、节点设备及系统的制作方法
技术领域:
本发明涉及计算机技术领域,尤其涉及一种节点选举方法、节点设备及系统。
背景技术:
目前,在现有计算机技术中,由于待处理数据的计算量比较大等原因,经常需要由多个设备组成一个系统,以便更高效的对数据进行处理,该系统包括的设备可以称作该系统的节点。在上述包括多个节点的系统中,为了实现对多个节点之间信息交互的有效管理, 经常需要从多个节点中选举出一个主节点,用于对其它节点的管理。目前使用的一种节点选举方法为Chang&Roberts算法(以下简称CR算法),CR算法是一种在分布式系统中广泛使用的选举算法,节点选举过程如下在环状结构的系统中,各节点依次相连,并首尾节点相连,从而组成一个环状结构的系统,其中每个节点都有唯一 ID,且各节点的唯一 ID之间可以比较大小;当一个节点发起选举流程时,首先标记自身为加入状态,并按照指定顺序(顺时针或逆时针)发送选举消息,选举消息中携带自身的唯一 ID ;接下来每个节点在接收到选举消息时,标记自身为加入状态,并比较自身的唯一 ID与选举消息中携带的唯一 ID的大小,然后选择其中数值大的唯一 ID,并生成携带数值大的唯一 ID的选举消息,按照指定顺序继续发送选举消息;当一个节点已标记自身为加入状态,并且收到的选举消息中携带的唯一 ID与自身的唯一 ID—致,则确定自身为主节点。在上述采用CR算法进行节点选举的方案中,对于系统的网络结构有严格要求,必须为环形结构,这样才能符合算法要求的消息传递模式;并且,该算法的容错性较差,一旦某个节点出现故障或者某两个节点间的网络出现故障,则选举消息无法传递,将导致最终选举结果无法顺利得出。为了解决系统的网络结构受限制的问题,目前可以使用PAXOS算法,PAXOS算法是另一种目前在分布式系统广泛应用的选举算法,节点选举过程如下当系统的一个节点A希望选举为主节点时,向系统中的所有其它节点发送一个带有序列号的选举决议;对于其它节点中的每个节点,其收到选举决议后,如果确定未批准过比该选举决议中携带的这个序列号高的其它序列号,则确定通过该节点的选举决议,并向该节点回复消息,保证不会再通过比该选举决议中携带的这个序列号低的其它序列号;否则,确定不通过该节点的选举决议,并将已批准的序列号告知该节点A ;节点A如果收到了更高的决议号,则可以选择提升本决议的序列号或者放弃选举;节点A如果收到了半数以上(全部节点数为N,半数以上为(N/2)+l)的通过回复,则该选举决议通过,节点A确定自身为主节点,否则该选举决议放弃;如果节点A的选举决议被通过,则节点A可以继续将该选举决议广播给所有节点,用于告知自身为主节点。在上述采用PAXOS算法进行节点选举的方案中,当每个节点均发起选举决议时,每两个节点之间需要进行至少4次信息交互,而且实际情况信息交互的次数往往更多,大量的信息交互使得选举效率较低,并且,当发生网络分割时,即节点间出现网络隔离的情况,将由于无法获得半数以上的批准而不会有选举结果产生。
发明内容
本发明实施例提供一种节点选举方法、节点设备及系统,用以解决现有技术中存在的节点选举效率低的问题。本发明实施例提供一种节点选举方法,应用于包括N个节点的系统,包括
N个节点中的每个节点通过执行如下步骤从所述N个节点中选举出主节点按照指定顺序依次获取预先设置的N-I个锁的使用权限,且当获取到当前锁的使用权限之后,触发获取下一个锁的使用权限;当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举;当获取到最后一个锁的使用权限时,确定自身为所述N个节点中的主节点。本发明实施例还提供一种节点设备,所述节点设备为N个节点之一,包括获取单元,用于按照指定顺序依次获取预先设置的N-I个锁的使用权限,且当获取到当前锁的使用权限之后,触发获取下一个锁的使用权限;确定单元,用于当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举;以及当获取到最后一个锁的使用权限时,确定自身为所述N个节点中的主节点。本发明实施例还提供一种节点选举系统,包括N个上述节点设备。本发明有益效果包括本发明实施例提供的方法中,当需要从N个节点中选举出一个主节点时,N个节点中的每个节点在选举的过程中,是按照指定顺序依次获取预先设置的N-I个锁的使用权限,且当获取到当前锁的使用权限之后,触发获取下一个锁的使用权限,当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举,当获取到最后一个锁的使用权限时,确定自身为N个节点中的主节点。由于锁的使用权限只能被一个节点获取,所以采用本发明实施例提供的方案,能够实现从N个节点中选举出主节点,并且,能够适用于任何网络结构的多节点系统,并且相比现有技术中的PAXOS算法,减少了选举过程中信息交互的次数,从而提高了选举效率。
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中图I为本发明实施例提供的节点选举方法的流程图;图2为本发明实施例I提供的节点选举方法的流程图;图3为本发明实施例2中多节点系统的结构示意图4为本发明实施例3中多节点系统的结构示意图;图5为本发明实施例4提供的节点设备的结构示意图。
具体实施例方式为了给出提高节点选举效率的实现方案,本发明实施例提供了一种节点选举方法、节点设备及系统,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明实施例提供一种节点选举方法,应用于包括N个节点的系统,用于从N个节点中选举出主节点,如图I所示,N个节点中的每个节点执行如下步骤,包括步骤101、按照指定顺序依次获取预先设置的N-I个锁的使用权限,且当获取到当 前锁的使用权限之后,触发获取下一个锁的使用权限。步骤102、当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举。步骤103、当获取到最后一个锁的使用权限时,确定自身为N个节点中的主节点。进一步的,在上述方法中,还可以包括当节点无法获取到当前锁的使用权限是否已被节点获取的信息时,触发获取下一个锁的使用权限;当触发获取最后一个锁的使用权限,且无法获取到最后一个锁的使用权限是否已被节点获取的信息时,确定自身为N个节点中的主节点。进一步的,在一个节点确定自身为N个节点中的主节点之后,还可以向N个节点中的其它节点发送选举结果消息,用于指示自身为主节点。进一步的,上述方法中的N-I个锁可以分别设置于N个节点中的N-I个节点上,即这N-I个节点中每个节点上对应设置一个锁。下面结合附图,用具体实施例对本发明提供的方法进行详细描述。实施例I :本发明实施例I中,针对包括N个节点的系统进行主节点选举,其中,N大于1,即该系统为多节点系统,基于节点选举方法的需要,设置N-I个锁,并针对N-I个锁设置指定顺序,例如,可以设置N-I个锁级别,分别与N-I个锁一一对应,则该指定顺序可以为锁级别从高到低的顺序,也可以为锁级别从低到高的顺序;也可以为N-I个锁进行编号,则该指定顺序可以为编号从小到大的顺序,也可以为编号从大到小的顺序。并且,较佳的,N-I个锁可以分别设置于N个节点中的N-I个节点上,即这N_1个节点中每个节点上对应设置一个锁。锁技术应用于多个执行主体均可以对同一个数据进行处理的场景中,为了避免这一数据同时被不只一个执行主体进行处理,可以对应该数据设置一个锁,当一个执行主体欲对该数据进行处理时,需要先获取该锁的使用权限,获取到后才能够对该数据进行处理,否则无法对该数据进行处理,且锁的使用权限仅能被一个执行主体获取到。基于所设置的N-I个锁和指定顺序,如图2所示,N个节点中的每个节点均执行如下处理步骤,以选举出主节点
步骤201、节点按照指定顺序获取N-I个锁中的当前锁的使用权限,初始的当前锁为按照指定顺序N-I个锁中的第一个锁。步骤202、如果获取到当前锁的使用权限已被其它节点获取的信息,进入步骤203,如果获取到当前锁的使用权限,或者获取出错,即无法获取到当前锁的使用权限是否已被节点获取的信息,进入步骤204。基于目前锁机制可知,一个锁的使用权限仅能被一个节点获取,当该锁的使用权限被一个节点获取后,其它节点再试图获取该锁的使用权限时,则无法获取到该锁的使用权限,且表示该锁的使用权限已被其它节点获取,也可能由于获取出错,无法获取到该锁的使用权限是否已被节点获取的信息,获取出错的原因可能是链路故障,也可能是节点故障。也就是说,当节点获取一个锁的使用权限时,可以出现三种获取结果,第一种为获取到该锁的使用权限,第二种为获取到当前锁的使用权限已被其它节点获取的信息,第三
种为获取出错,本步骤中,当获取结果为第二种时,进入步骤203,当获取结果为第一种或第三种时,进入步骤204。步骤203、节点确定自身退出本次选举。步骤204、确定当前锁是否为N-I个锁中的最后一个锁,如果不是最后一个锁,进入步骤205,如果是最后一个锁,进入步骤206。步骤205、确定当前锁的下一个锁为更新后的当前锁,并返回步骤201。步骤206、节点确定自身为N个节点中的主节点。步骤207、进一步的,本步骤中,节点在确定自身为N个节点中的主节点之后,还可以向N个节点中的其它节点发送选举结果消息,其中携带自身的节点标识,用于指示自身为主节点。采用本发明实施例I提供的上述节点选举方法,由于锁的使用权限只能被一个节点获取,所以能够实现从N个节点中选举出主节点,并且,能够适用于任何网络结构的多节点系统,并且,相比现有技术中的PAXOS算法,减少了选举过程中信息交互的次数,从而提高了选举效率。并且,当方案中N-I个锁分别设置于N个节点中的N-I个节点上时,且当选举过程中在获取到当前锁的使用权限之后,或者无法获取到当前锁的使用权限是否已被节点获取的信息,均触发获取下一个锁的使用权限时,即便系统中一些节点或者节点之间的链路发生故障,只要有一个节点未发生故障,即可以成功从N-I个节点中选举出至少一个主节点,从而提闻了系统的容错能力。下面分别以多节点系统包括2个节点和3个节点为例,对本发明实施例提出的节点选举方法进行详细描述,并对提高了系统容错能力这一技术效果进行详细分析。实施例2 图3为本发明实施例2中的多节点系统的结构示意图,其中,多节点系统包括节点A和节点B共计2个节点,并在节点A上设置锁I。采用上述实施例I中提供的节点选举方法,从节点A和节点B中选举主节点,当节点A和节点B以及两者之间的链路均正常时,节点A和节点B分别获取锁I的使用权限,则选举结果为获取到锁I的使用权限的节点为主节点,当节点A或者节点B发生故障时,选举过程和选举结果如表I所示,其中,为了描述方便,节点获取锁的使用权限时,当获取到该锁的使用权限时获取结果用结果Q表示,当获取到当前锁的使用权限已被其它节点获取的信息时获取结果用结果NQ表示,当获取出错时获取结果用结果F表示表I
权利要求
1.一种节点选举方法,应用于包括N个节点的系统,其特征在于,包括 N个节点中的每个节点通过执行如下步骤从所述N个节点中选举出主节点 按照指定顺序依次获取预先设置的N-I个锁的使用权限,且当获取到当前锁的使用权限之后,触发获取下一个锁的使用权限; 当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举; 当获取到最后一个锁的使用权限时,确定自身为所述N个节点中的主节点。
2.如权利要求I所述的方法,其特征在于,还包括 当无法获取到当前锁的使用权限是否已被节点获取的信息时,触发获取下一个锁的使用权限; 当触发获取最后一个锁的使用权限,且无法获取到最后一个锁的使用权限是否已被节点获取的信息时,确定自身为所述N个节点中的主节点。
3.如权利要求I所述的方法,其特征在于,在确定自身为所述N个节点中的主节点之后,还包括 向所述N个节点中的其它节点发送选举结果消息,用于指示自身为主节点。
4.如权利要求1-3任一所述的方法,其特征在于,所述N-I个锁分别设置于所述N个节点中的N-I个节点上。
5.一种节点设备,所述节点设备为N个节点之一,其特征在于,包括 获取单元,用于按照指定顺序依次获取预先设置的N-I个锁的使用权限,且当获取到当前锁的使用权限之后,触发获取下一个锁的使用权限; 确定单元,用于当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举;以及当获取到最后一个锁的使用权限时,确定自身为所述N个节点中的主节点。
6.如权利要求5所述的节点设备,其特征在于,所述获取单元,还用于当无法获取到当前锁的使用权限是否已被节点获取的信息时,触发获取下一个锁的使用权限; 所述确定单元,还用于当触发获取最后一个锁的使用权限,且无法获取到最后一个锁的使用权限是否已被节点获取的信息时,确定自身为所述N个节点中的主节点。
7.如权利要求5所述的节点设备,其特征在于,还包括 发送单元,用于在所述确定单元确定自身为所述N个节点中的主节点之后,向所述N个节点中的其它节点发送选举结果消息,用于指示自身为主节点。
8.如权利要求5-7任一所述的节点设备,其特征在于,所述获取单元获取使用权限的所述N-I个锁分别设置于所述N个节点中的N-I个节点上。
9.一种节点选举系统,其特征在于,包括 N个如权利要求5-7任一所述的节点设备。
10.如权利要求9所述的系统,其特征在于,所述N-I个锁分别设置于N个所述节点设备中的N-I个所述节点设备上。
全文摘要
本发明公开了一种节点选举方法、节点设备及系统,包括按照指定顺序依次获取预先设置的N-1个锁的使用权限,且当获取到当前锁的使用权限之后,触发获取下一个锁的使用权限;并当获取到当前锁的使用权限已被其它节点获取的信息时,确定自身退出选举;以及当获取到最后一个锁的使用权限时,确定自身为N个节点中的主节点。采用本发明实施例提供的方案,提高了节点选举效率。
文档编号H04L29/08GK102904752SQ201210361189
公开日2013年1月30日 申请日期2012年9月25日 优先权日2012年9月25日
发明者丛磊, 童剑 申请人:新浪网技术(中国)有限公司