一种主节点的选举方法及服务器与流程

文档序号:16312725发布日期:2018-12-19 05:20阅读:333来源:国知局
一种主节点的选举方法及服务器与流程

本发明涉及通信技术领域,特别涉及一种主节点的选举方法及服务器。

背景技术

集群由一组具有相同计算能力的设备(也称节点)构成,比如大量服务器构成的服务器集群。集群中各个节点通过网络连接在一起,组成一个整体,能够实现特定的功能。分布式通信系统是集群的一种。分布式通信系统中,通常有一个节点担任主节点,其它节点充当从节点,主节点协调各个从节点紧密有序的工作。

由于集群管理员可以增加或删除节点,并且节点在运行中可能出现故障,因此,集群中节点数量是动态变化的。为了保证通信功能不受影响,分布式通信系统中要求部署主节点选举算法,在主节点不能工作时,其他节点会按照主节点选举算法推举出新的主节点。

欺负算法为主节点选举算法的一种。欺负算法包括,当任何一个节点发现主节点不再响应请求时,它就发起一个选举。假设节点p最先发现主节点离线,节点p将按如下过程主持一次选举。首先,节点p向所有编号比它大的节点发送一个选举(election)消息,以确定所有编号比它大的节点是否离线;如果无节点响应,则节点p获胜成为主节点,向其他编号比自己编号小的节点广播通知消息;如果有编号比节点p大的节点响应,则各个响应节点接管选举工作,分别再主持一个选举,直到选举出主节点。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:欺负算法在选举过程中节点间会传输大量消息,比如,当编号比节点p大的节点数量很多时,各个编号比节点p大的节点又将各自分别主持一个选举,这将产生大量的选举消息和响应消息,同时,分布主持选举的节点数量多,导致从主节点离线到新的主节点产生将花费较长的选举时间。



技术实现要素:

本发明实施例提供了一种主节点的选举方法及服务器,能够解决分布式系统从海量节点中选举主节点效率低的问题。所述技术方案如下:

第一方面,提供了一种主节点的选举方法,所述方法包括:

第一从节点在发现主节点离线时,依据所述主节点在离线前发布的分组信息确定本节点是否为第一组内优先级最高的节点,所述分组信息由所述主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,所述分组信息包括组标识、与所述组标识关联的优先级、与所述组标识关联的节点标识、以及与所述节点标识关联的优先级,所述第一组为所述第一从节点所在的组;

当本节点不为所述第一组内优先级最高的节点时,向第二从节点发送选主信令,并等待接收所述第二从节点响应的降从信令,所述第二从节点为所述第一组内优先级比所述第一从节点的优先级高的从节点;

当等待时间超过第一时间且未收到所述降从信令时,确定本节点为主节点,以替换离线的主节点。

可选地,所述方法还包括:

当等待时间未超过所述第一时间且收到所述降从信令时,确定本节点为从节点,并向第三从节点发送推主信令,以推选所述第三从节点为主节点,所述第三从节点为响应所述降从信令的第二从节点中优先级最高的节点。

可选地,所述确定本节点为主节点,包括:

向第四从节点发送升主信令,继续等待接收所述第二从节点响应的降从信令,所述第四从节点为分组信息中所有从节点中优先级比所述第一从节点的优先级低的从节点;

当继续等待时间超过第二时间且未收到所述降从信令时,确定本节点为主节点,以替换离线的主节点。

可选地,所述方法还包括:

当继续等待时间未超过所述第二时间且收到所述降从信令时,将本节点置为从节点,并向第三从节点发送推主信令,以推选所述第三从节点为主节点,所述第三从节点为响应所述降从信令的第二从节点中优先级最高的节点。

可选地,所述方法还包括:

当本节点为所述第一组内优先级最高的节点时,确定本节点为主节点,以替换离线的主节点。

可选地,在所述确定本节点为主节点之后,所述方法还包括:

基于所述分组信息,确定当前时间的在线从节点;

基于所述当前时间的在线从节点,更新所述分组信息;

将更新后的所述分组信息发送给各个所述当前时间的在线从节点。

可选地,所述基于所述分组信息,确定当前时间的在线从节点,包括:

按照优先级顺序将第四从节点划分为n组,并为所述n组中各个组设置优先级,所述n组中各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,n大于等于2;

按照各个组的优先级,依次向各组中各个所述从节点发送点名信令,并等待接收各个所述从节点响应的点名应答信令;

确定响应所述点名应答信令的从节点为所述当前时间的在线从节点。

第二方面,提供了一种主节点的选举方法,所述方法包括:

第二从节点接收第一从节点发送的选主信令,所述选主信令是所述第一从节点在发现主节点离线时依据所述主节点在离线前发布的分组信息发送的,所述分组信息由所述主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,所述分组信息包括组标识、与所述组标识关联的优先级、与所述组标识关联的节点标识、以及与所述节点标识关联的优先级,所述第一从节点和所述第二从节点在同一组,所述第二从节点的优先级比所述第一从节点的优先级高;

向所述第一从节点响应降从信令,并依据所述分组信息确定本节点是否为所述第一组内优先级最高的节点,所述第一组为所述第一从节点和所述第二从节点所在的组,

当本节点为所述第一组内优先级最高的节点时,确定本节点为主节点,以替换离线的主节点。

可选地,所述方法还包括:

当本节点不为所述第一组内优先级最高的节点时,等待接收所述第一从节点响应的推主信令;

当等待时间超过第三时间且未收到所述推主信令时,确定本节点为从节点,退出选举过程;

当等待时间未超过所述第三时间且收到所述推主信令时,确定本节点为主节点,以替换离线的主节点。

第三方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第一方面或者第二方面所述的主节点的选举方法所执行的操作。

本发明实施例提供的技术方案带来的有益效果是:

通过第一从节点在发现主节点离线时,依据主节点在离线前发布的分组信息确定本节点是否为第一组内优先级最高的节点,分组信息由主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,第一组为第一从节点所在的组;当本节点不为第一组内优先级最高的节点时,向第二从节点发送选主信令,并等待接收第二从节点响应的降从信令,第二从节点为第一组内优先级比第一从节点的优先级高的从节点;实现了组间选举,相比于整个集群的节点数量,一个组的节点数量比较少,能大量减少信令开销,提升选举效率;当等待时间超过第一时间且未收到降从信令时,确定本节点为主节点,以替换离线的主节点;当第一组为最高优先级组时,优先级高的节点将进行组间选举,确保选举的主节点为在线的最高优先级的节点;当第一组不为最高优先级组时,由于是组间选举,可以进行少数几次组间选举,也能够选举出在线的最高优先级的节点;从而避免了在整个集群中进行多层循环选举,减少了选举过程的消息传递量,极大的提高了选举效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种主节点的选举方法的流程图;

图2a和图2b是本发明实施例提供的又一种主节点的选举方法的流程图;

图3是本发明实施例提供的初始主节点的点名维护过程的示意图;

图4和图5分别是本发明实施例提供的又一种主节点的选举方法的流程图;

图6是本发明实施例提供的主节点的点名维护过程的示意图;

图7是本发明实施例提供的主节点的选举流程的示意图;

图8-图10分别是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

在本实施例中,初始选举信令、选主信令、升主信令、降从信令、推主信令、点名信令、以及点名应答信令具有不同的信令标识,信令标识用于各个节点区分各个信令。初始选举信令、选主信令、升主信令、降从信令、推主信令、点名信令、以及点名应答信令中各个信令均可以包括源节点的标识、源节点的优先级、目的节点的标识和目的节点的优先级。其中,源节点指信令的发送节点,目的节点指信令的接收节点。

图1示出了本发明实施例提供的一种主节点的选举方法,适用于分布式通信系统或集群协同作战通信系统。参见图1,该方法流程包括如下步骤。

步骤101、第一从节点在发现主节点离线时,依据主节点在离线前发布的分组信息确定本节点是否为第一组内优先级最高的节点。

其中,分组信息由主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,分组信息包括组标识、与组标识关联的优先级、与组标识关联的节点标识、以及与节点标识关联的优先级,第一组为第一从节点所在的组。

当本节点不为第一组内优先级最高的节点时,执行步骤102。当本节点为第一组内优先级最高的节点时,执行步骤103。

步骤102、第一从节点向第二从节点发送选主信令,并等待接收第二从节点响应的降从信令。

其中,第二从节点为第一组内优先级比第一从节点的优先级高的从节点。

当等待时间超过第一时间且未收到降从信令时,执行步骤103。当等待时间未超过第一时间且收到降从信令时,执行步骤104。

步骤103、第一从节点确定本节点为主节点,以替换离线的主节点。

步骤104、第一从节点确定本节点为从节点,并向第三从节点发送推主信令,以推选第三从节点为主节点。

其中,第三从节点为响应降从信令的第二从节点中优先级最高的节点。

本发明实施例通过第一从节点在发现主节点离线时,依据主节点在离线前发布的分组信息确定本节点是否为第一组内优先级最高的节点,分组信息由主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,第一组为第一从节点所在的组;当本节点不为第一组内优先级最高的节点时,向第二从节点发送选主信令,并等待接收第二从节点响应的降从信令,第二从节点为第一组内优先级比第一从节点的优先级高的从节点;实现了组间选举,相比于整个集群的节点数量,一个组的节点数量比较少,能大量减少信令开销,提升选举效率;当等待时间超过第一时间且未收到降从信令时,确定本节点为主节点,以替换离线的主节点;当第一组为最高优先级组时,优先级高的节点将进行组间选举,确保选举的主节点为在线的最高优先级的节点;当第一组不为最高优先级组时,由于是组间选举,可以进行少数几次组间选举,也能够选举出在线的最高优先级的节点;从而避免了在整个集群中进行多层循环选举,减少了选举过程的消息传递量,极大的提高了选举效率。

图2a和图2b示出了本发明实施例提供的又一种主节点的选举方法。在本实施例中,将介绍在节点的初始化过程中如何选举主节点。节点的初始化过程是指,节点在上电后,首次选举主节点的过程。为与图1示出的在主节点离线时重新选举的主节点进行区分,将节点在初始化过程中首次选举出的主节点称为初始主节点。参见图2a,该方法流程包括如下步骤。

步骤201、节点a在上电后,通过配置文件获取集群中各个节点的优先级。

在本实施例中,节点上电,即为节点接通电源。节点在上电后,将加入集群开始工作。其中,节点a的配置文件包含在节点a上电时集群中各个节点的标识与优先级的对应关系。节点的标识可以是节点的网络地址。在各个节点上电前,预先建立各个节点的配置文件并存储在各个节点中。

节点a可以是集群中任何一个节点,比如,节点a可以是第一从节点,也可以是第二从节点。需要说明的是,本实施例不限制节点a的上电时间,节点a可以与集群中其它节点在同一时间上电,这时集群中还未选举产生初始主节点;节点a也可以是在集群中已选举产生主节点(包括初始主节点),随后上电加入集群,促使集群将自发进行初始主节点选举。

其中,节点的优先级可以是以数据进行编号,编号越大优先级越高。具体地,可以利用节点自身的物理地址或者逻辑地址为每个节点指定一个唯一编号作为优先级。

步骤202、节点a基于各个节点的优先级,建立优先级表并确定本节点的优先级是否为最高优先级。

当本节点的优先级不为最高优先级时,执行步骤203。当本节点的优先级为最高优先级时,执行步骤207。

其中,优先级表中存储有集群中节点的标识与优先级的对应关系。节点a在获取各个节点的优先级之后,可以先建立节点a的优先级表,然后再基于优先级表确定节点a的优先级是否为最高优先级。

步骤203、节点a向节点b发送初始选举信令,并等待接收节点b响应的降从信令。

其中,节点b的优先级高于节点a的优先级。节点b的数量大于或等于1。初始选举信令包括节点a的标识和节点a的优先级。初始选举信令还可以包括节点b的优先级和节点b的标识。

当等待时间超过第四时间且未收到降从信令时,执行步骤204;当等待时间未超过第四时间且收到降从信令时,执行步骤205。

其中,节点b响应的降从信令包括节点b的标识和节点b的优先级。降从信令还可以包括节点a的标识和节点a的优先级。

步骤204、节点a向节点c发送升主信令,并继续等待接收节点b响应的降从信令。

当继续等待时间未超过第五时间且收到降从信令时,执行步骤205。当继续等待时间超过第五时间且未收到降从信令时,执行步骤206。

其中,节点a的优先级高于节点c的优先级。节点c的数量大于或等于1。

当等待时间超过第四时间且未收到降从信令时,节点a将自身置为备选节点,向节点c发送升主信令。

节点a向节点c发送的升主信令包括,节点a的标识、节点a的优先级、节点c的标识和节点c的优先级。

步骤205、节点a确定本节点为从节点,退出选举过程。

步骤206、节点a确定本节点为初始主节点。

步骤207、节点a确定本节点为初始主节点,并向节点c发送升主信令。

下面结合图2b,介绍响应降从信令的节点b的工作流程,参见图2b,该工作流程包括步骤208-步骤214。

步骤208、节点b在接收到节点a发送的初始选举信令并响应降从信令之后,将节点a的优先级信息更新到本节点的优先级表中。

节点a的优先级信息包括节点a的标识和节点a的优先级。

步骤209、节点b通过优先级表获取集群中各个节点的优先级,基于各个节点的优先级,确定本节点的优先级是否为最高优先级。

当本节点的优先级不为最高优先级时,执行步骤210。当本节点的优先级为最高优先级时,执行步骤214。

步骤210、节点b向节点d发送初始选举信令,并等待接收节点d响应的降从信令。

其中,节点d的优先级高于节点b的优先级。节点d的数量大于或等于1。

当等待时间超过第四时间且未收到降从信令时,执行步骤211。当等待时间未超过第四时间且收到降从信令时,执行步骤212。

节点b向节点d发送的初始选举信令包括节点b的标识和节点b的优先级。可选地,节点b向节点d发送的初始选举信令还包括节点d的标识和节点d的优先级。

步骤211、节点b向节点e发送升主信令,并继续等待接收节点d响应的降从信令。

其中,节点b的优先级高于节点e的优先级。节点e的数量大于或等于1。节点e包括节点a。

当继续等待时间未超过第五时间且收到降从信令时,执行步骤212。当继续等待时间超过第五时间且未收到降从信令时,执行步骤213。

节点b向节点e发送的升主信令包括节点b的标识、节点b的优先级、节点e的标识和节点e的优先级。

节点d向节点b响应的降从信令包括节点d的标识、节点d的优先级、节点b的标识和节点b的优先级。

步骤212、节点b确定本节点为从节点,退出选举过程。

步骤213、节点b确定本节点为初始主节点。

步骤214、节点b确定本节点为初始主节点,并向节点e发送升主信令。

下面结合图3,介绍初始主节点的点名维护过程,该点名维护过程包括以下步骤301-步骤303。

步骤301、确定当前时间的在线从节点。

本步骤301包括步骤301a-步骤301d。

步骤301a、基于优先级表,获取集群中各个从节点的优先级。

其中,从节点的优先级低于初始主节点的优先级。

步骤301b、按照优先级顺序将各个从节点划分为s组,并为s组中各个组设置优先级。

其中,s组中各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,s大于等于2。

优选地,s等于3,这时,优先级组包括高、中和低三组优先级组。

对于节点数量可以均分3组、以及不能均分3组的情况,可以按照如下方式分组。假设系统网络中除初始主节点外还有n个从节点,高优先级组有h个节点,中优先级组有m个节点,低优先级组有l个节点,当n%3=0时,h=m=l=n/3;当n%3=1时,h=n/3+1,m=l=n/3;当n%3=2时,h=m=n/3+1,l=n/3。也就是说,当n整除3时,则h、m和l取n/3;当n除3余1时,则h取n/3加1,m和l分别取n/3;当n除3余2时,则h和m分别取n/3加1,l取n/3。

步骤301c、按照各个组的优先级,依次向各组中各个从节点发送点名信令,并等待接收各个从节点响应的点名应答信令。

其中,相邻两个组的点名信令的发送时间之间的间隔为间隔阈值。间隔阈值可以是5分钟。例如,初始主节点向高、中和低三组依次发送点名信令时,在向高优先级组各个节点发送点名信令之后,等待5分钟,向中优先级组各个节点发送点名信令,再等待5分钟,向低优先级组各个节点发送点名信令。

点名信令包括初始主节点的标识、初始主节点的优先级、目标节点的标识和目标节点的优先级。目标节点指接收点名信令的节点。

从节点收到点名信令后,向初始主节点回复点名应答信令。点名应答信令可以包括本节点的标识、本节点的优先级、初始主节点的标识和初始主节点的优先级。

从节点在向初始主节点回复点名应答信令之后,启动点名监听定时器,以便监测主节点(包括初始主节点)是否在线。点名监听定时器用于周期性接收主节点的发送的点名信令。主节点在维护过程中,将周期性地向各个从节点发送点名信令,以确定从节点是否在线。相应地,从节点周期性地接收主节点的发送的点名信令,以确定主节点是否在线。

步骤301d、确定响应点名应答信令的从节点为当前时间的在线从节点。

主节点收集并处理各从节点响应的点名应答信令,并据此确定当前时间的在线从节点。

步骤302、将当前时间的在线从节点划分为若干组并为各个组设置优先级,得到分组信息。

其中,分组信息包括组标识、与组标识关联的优先级、与组标识关联的节点标识、以及与节点标识关联的优先级。

分组方式包括:按照优先级顺序将各个从节点划分为s组,并为s组中各个组设置优先级。其中,s组中各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,s大于等于2。

分组方式请参见步骤301b,在此不再赘述。

步骤303、将分组信息发送给各个当前时间的在线从节点。

其中,初始主节点可以通过广播的方式将分组信息发送给各个当前时间的在线从节点。

步骤304、周期性地更新分组信息,并将更新后的分组信息发送给各个在线从节点。

步骤304包括:基于分组信息,确定当前时间的在线从节点;基于当前时间的在线从节点,更新分组信息;将更新后的分组信息发送给各个当前时间的在线从节点。

其中,步骤304未详尽描述的内容请参见步骤301-步骤303,在此不再赘述。需要说明的是,在基于分组信息确定当前时间的在线从节点时,是基于分组信息获取集群中各个从节点的优先级。

下面举例介绍主节点(包括初始主节点)的点名维护过程。假设在一个有限的有线网络中,任意两节点间网络传输延时通常小于1分钟(理想状况)。

假设主节点10时0分0秒开始第一轮点名,组间延迟点名时延是5分钟,且点名周期为15分钟,则:10时0分向高优先级组发送点名,高优先级组10时1分左右收到点名信息;10时5分向中优先级组发送点名,中优先级组10时6分左右收到点名信息;10时10分向低优先级组发送点名,低优先级组10时11分左右收到点名信息。主节点基于第一轮点名时从节点的点名应答信令,确定当前时间的在线从节点,然后更新分组信息,并将更新后的分组信息广播给每个在线从节点,完成第一轮点名维护。

主节点10时15分0秒开始第二轮点名,则:10时15分向高优先级组发送点名,高优先级组10时16分左右收到点名信息;10时20分向中优先级组发送点名,中优先级组10时21分左右收到点名信息;10时25分向低优先级组发送点名,低优先级组10时26分左右收到点名信息。主节点基于第二轮点名时从节点的点名应答信令,确定当前时间的在线从节点,然后更新分组信息,并将更新后的分组信息广播给每个在线从节点,完成第二轮点名维护。

以上为主节点的周期性点名过程。由于故障等原因,主节点可能离线,在主节点离线后,将选举出新的主节点。主节点的离线时机有两种离线情形。第一离线种情形,是在完成一轮点名后离线;第二种离线情形,是在本轮点名过程中离线。

若主节点在10时30分0秒时未进行第三轮点名,则说明主节点在该时刻前已经离线(也称失效)。此为第一种离线情形。第一种离线情形下,最先发现主节点离线的是高优先级组中的从节点(未收到点名信令),将由高优先级组中的从节点发起主节点(最先发现的从节点为第一从节点)的选举过程。在由高优先级中的从节点发起主节点的选举过程时,通过图1和图2示出的选举方法,将确保选举出的主节点为当前时间最高优先级的节点。

若主节点10时30分0秒开始第三轮点名,则:10时30分向高优先级组发送点名,高优先级组10时31分左右收到点名信息。而在10时35分之前,主节点离线。此为第二种离线情形。第二种离线情形下,最先发现主节点离线的是中优先级组的从节点(未收到点名信令),将由中优先级中的从节点发起主节点的选举过程。在由中优先级组中的从节点发起主节点的选举过程时,通过图1和图2示出的选举方法,选举出的主节点不为当前时间最高优先级的节点。这时,将等到10时46分左右,高优先级组的从节点发现主节点离线,再由高优先级组的从节点通过图1示出的选举方法发起主节点的选举过程。以上,通过图1示出的选举方法,将确保不会超过两次选举(每一次选举是在一个优先级组中选举),就能选出当前时间最高优先级的节点为主节点。相比于现有的在全部从节点之间重新选举主节点,能够节省大量的信令开销,提升选举效率。

图4是本发明实施例提供的一种主节点的选举方法。在本实施例中,将详细介绍图1示出的方法。参见图4,该方法流程包括如下步骤。

步骤401、第一从节点在发现主节点离线时,依据主节点在离线前发布的分组信息确定本节点是否为第一组内优先级最高的节点。

其中,分组信息由主节点在离线前将在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,分组信息包括组标识、与组标识关联的优先级、与组标识关联的节点标识、以及与节点标识关联的优先级,第一组为第一从节点所在的组。

第一从节点在点名周期未收到主节点的点名信令时确定主节点离线。

当本节点不为第一组内优先级最高的节点时,执行步骤402。当本节点为第一组内优先级最高的节点时,执行步骤406。

步骤402、第一从节点向第二从节点发送选主信令,并等待接收第二从节点响应的降从信令。

其中,第二从节点为第一组内优先级比第一从节点的优先级高的从节点。选主信令包括第一从节点的标识、第一从节点的优先级、第二从节点的标识和第二从节点的优先级。

第二从节点在接收到选主信令后,将关闭点名监听定时器,即确认主节点已离线,且已有低优先级的节点发起选举。

当等待时间超过第一时间且未收到降从信令时,执行步骤403。当等待时间未超过第一时间且收到降从信令时,执行步骤404。

步骤403、向第四从节点发送升主信令,继续等待接收第二从节点响应的降从信令。

第四从节点为分组信息中所有从节点中优先级比第一从节点的优先级低的从节点。

第四从节点收到升主信令之后,将关闭点名监听定时器,即确认主节点已离线,且已有高优先级的节点发起选举。

当继续等待时间未超过第二时间且收到降从信令时,执行步骤404。当继续等待时间超过第二时间且未收到降从信令时,执行步骤405。

步骤404、第一从节点将本节点置为从节点,并向第三从节点发送推主信令,以推选第三从节点为主节点。

其中,第三从节点为响应降从信令的第二从节点中优先级最高的节点。

步骤405、第一从节点确定本节点为主节点,以替换离线的主节点。

步骤406、第一从节点确定本节点为主节点,向第四从节点发送升主信令,以替换离线的主节点。

图5是本发明实施例提供的又一种主节点的选举方法,该方法由第二从节点执行。参见图5,该方法流程包括如下步骤。

步骤501、第二从节点接收第一从节点发送的选主信令。

其中,选主信令是第一从节点在发现主节点离线时依据主节点在离线前发布的分组信息发送的,分组信息由主节点在离线前将所有从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,分组信息包括组标识、与组标识关联的优先级、与组标识关联的节点标识、以及与节点标识关联的优先级,第一从节点和第二从节点在同一组,第二从节点的优先级比第一从节点的优先级高。

步骤502、第二从节点向第一从节点响应降从信令,并依据分组信息确定本节点是否为第一组内优先级最高的节点。

其中,第一组为第一从节点和第二从节点所在的组。

当本节点不为第一组内优先级最高的节点时,执行步骤503;当本节点为第一组内优先级最高的节点时,执行步骤505。

步骤503、第二从节点等待接收第一从节点响应的推主信令。

当等待时间超过第三时间且未收到推主信令时,执行步骤504;当等待时间未超过第三时间且收到推主信令时,执行步骤505。

步骤504、第二从节点确定本节点为从节点,退出选举过程。

步骤505、第二从节点确定本节点为主节点,向第五从节点发送升主信令,以替换离线的主节点。

第五从节点为分组信息中所有从节点中优先级比第二从节点的优先级低的从节点。

下面结合图6,介绍主节点(不包括初始主节点)的点名维护过程,该点名维护过程包括如下步骤601-步骤604。

步骤601、基于分组信息,确定当前时间的在线从节点。

步骤601包括如下步骤6011-步骤6014。

步骤6011、基于分组信息,获取各个从节点的优先级。

步骤6012、按照优先级顺序将第四从节点划分为n组,并为n组中各个组设置优先级。

其中,n组中各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,n大于等于2。

优选地,n=s=3。分组方式可以参见步骤401b,在此不再赘述。

步骤6013、按照各个组的优先级,依次向各组中各个从节点发送点名信令,并等待接收各个从节点响应的点名应答信令。

本步骤6013同步骤401c,在此不再赘述。

步骤6014、确定响应点名应答信令的从节点为当前时间的在线从节点。

本步骤6014同步骤401d,在此不再赘述。

步骤602、基于当前时间的在线从节点,更新分组信息。

分组信息的更新方式包括:按照优先级顺序将当前时间的在线从节点分为n组,并为n组中各个组设置优先级,得到更新后的分组信息,n组中各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级。

步骤603、将更新后的分组信息发送给各个当前时间的在线从节点。

步骤604、周期性地更新分组信息,并将更新后的分组信息发送给各个在线从节点。

步骤604包括:重复执行步骤601-步骤603。

参见图7,假设在某一集群中共有10个节点,节点的标识分别为从1到10,同时假定节点的标识即为节点优先级。初始主节点为节点10。节点10失效前,集群中各节点状态如7(1)所示。主节点(圆圈所示)为节点10,节点9、8和7属于高优先级组(规则六边形所示),节点6、5和4属于中优先级组(菱形所示),节点1、2和3属于低优先级组(正方形所示)。某时刻,主节点10和高优先级组中节点9、8和7均失效(失效节点如不规则六边形所示)。中优先级组中的节点4发现主节点10失效并首先发起选举,如7(2)所示。节点4从当前在线节点中推举节点6为备选节点,最终节点6获胜成为新的主节点,过程如7(3)至7(4)所示。

图8示出了本发明实施例提供的一种服务器,该服务器可以是第一从节点。参见图8,所述服务器包括第一确定模块801、发送模块802、接收模块803和第二确定模块804。

第一确定模块801,用于在发现主节点离线时,依据主节点在离线前发布的分组信息确定本节点是否为第一组内优先级最高的节点,分组信息由主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,分组信息包括组标识、与组标识关联的优先级、与组标识关联的节点标识、以及与节点标识关联的优先级,第一组为第一从节点所在的组。

发送模块802,用于当本节点不为第一组内优先级最高的节点时,向第二从节点发送选主信令。

接收模块803,用于等待接收第二从节点响应的降从信令,第二从节点为第一组内优先级比第一从节点的优先级高的从节点。

第二确定模块804,用于当等待时间超过第一时间且未收到降从信令时,确定本节点为主节点,以替换离线的主节点。

图9示出了本发明实施例提供的又一种服务器,该服务器可以是第二从节点。参见图9,所述服务器包括接收模块901、发送模块902和确定模块903。

接收模块901,用于接收第一从节点发送的选主信令;选主信令是第一从节点在发现主节点离线时依据主节点在离线前发布的分组信息发送的,分组信息由主节点在离线前将所有在线从节点划分为若干组并为各个组设置优先级得到,各个组的优先级不同,高优先级组中的从节点的优先级高于低优先级组中的从节点的优先级,分组信息包括组标识、与组标识关联的优先级、与组标识关联的节点标识、以及与节点标识关联的优先级,第一从节点和第二从节点在同一组,第二从节点的优先级比第一从节点的优先级高。

发送模块902,用于向第一从节点响应降从信令。

确定模块903,用于依据分组信息确定本节点是否为第一组内优先级最高的节点,当本节点为第一组内优先级最高的节点时,确定本节点为主节点,以替换离线的主节点,第一组为第一从节点和第二从节点所在的组。

需要说明的是:上述实施例提供的服务器在选举主节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务器与主节点的选举方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图10示出了本发明实施例提供的又一种服务器,该服务器可以是图8或图9示出的服务器。服务器可以是一种计算机1000,包括中央处理单元(cpu)1001、包括随机存取存储器(ram)1002和只读存储器(rom)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。计算机1000还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1006,和用于存储操作系统1103、应用程序1104和其他程序模块1105的大容量存储设备1007。

基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中显示器1008和输入设备1009都通过连接到系统总线1005的输入输出控制器1100连接到中央处理单元1001。基本输入/输出系统1006还可以包括输入输出控制器1100以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1100还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。大容量存储设备1007及其相关联的计算机可读介质为计算机1000提供非易失性存储。也就是说,大容量存储设备1007可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。

根据本发明的各种实施例,计算机1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机1000可以通过连接在系统总线1005上的网络接口单元1101连接到网络1102,或者说,也可以使用网络接口单元1101来连接到其他类型的网络或远程计算机系统(未示出)。

上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由cpu1001执行。当cpu1001执行存储器中的程序时,可以实现前述图1-图6中任一图示示出的方法实现的操作。

在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器,上述指令可由计算机1000的中央处理单元1001加载并执行以完成图1-图6中任一图示实现的操作。例如,计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1