一种集群选举方法及系统与流程

文档序号:12491360阅读:201来源:国知局
一种集群选举方法及系统与流程

本发明涉及大数据运算领域,更具体地,涉及一种大数据运算的集群选举方法及系统。



背景技术:

现在的大数据运算各有各的集群处理模式,算法不统一。公司自研的系统甚至没有做集群,导致当系统崩溃后无法正常工作,影响大数据处理的正常执行。而且现存很多老系统都没有考虑高可用集群处理方案,或者只采用简单的vrrp协议进行高可用处理。当虚拟化系统中的控制节点或者网络节点因为各种原因停止服务时,系统就无法控制虚拟化系统的计算机网络功能,只能等待服务的恢复。而使用vrrp的方案,一般只有两台机器执行热备模式,容易发生脑裂导致ip冲突,无法正常服务。



技术实现要素:

本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种使普通非高可用的系统实现高可用功能的集群选举方法。

本发明还提供一种使普通非高可用的系统实现高可用功能的集群选举系统。

为解决上述技术问题,本发明的技术方案如下:

一种集群选举方法,包括:

从服务器无法获得主服务器的心跳时,从服务器的状态改为候选服务器,并向其余服务器发出请求选为主服务器的投票请求;

当候选服务器收到超过预设阈值数量的服务器投票,则选举成为主服务器并更改状态为主服务器;

当候选服务器在等待投票结果时其他服务器成为主服务器,则候选服务器更改状态为从服务器;

当没有任一候选服务器选举为主服务器时,候选服务器重新发送投票请求直至有一候选服务器成为主服务器为止。

本发明在主服务器停止服务时,采用投票选举的方式来重新选出主服务器,其他服务器作为从服务器,该方法在不影响原有系统功能前提下,改变原有系统的部署方案,使用分布式选举协议来组成各种应用集群,使本来不具备高可用的系统具备了高可用能力,此方法对于简单的应用系统非常适用,不需要在设计阶段过多地考虑高可用方案,集中业务实现。

上述方案中,当候选服务器选举成为主服务器并更改状态为主服务器后,该新主服务器还向其他服务器发送主服务器心跳,其他服务器收到心跳后更改状态为从服务器。新主服务器通过发出心跳方式来通知其他服务器,其他服务器可以及时将状态更改为从服务器,使新的主服务器能够及时接管服务,使系统恢复正常的工作状态。

上述方案中,所述预设阈值数量为所有服务器的一半。

上述方案中,候选服务器更改状态为从服务器后,主服务器和从服务器同步状态信息。状态信息的同步不但可以使系统能够恢复到正常状态,而且还能够使系统恢复到停止服务前的状态,保证信息的完整性。

一种集群选举系统,包括服务器,服务器包括:

状态更改模块,用于当服务器无法获得主服务器的心跳时,更改状态为候选服务器;

投票请求模块,用于向其余服务器发出请求选为主服务器的投票请求;

投票结果接收模块,用于接收服务器投票结果,当收到超过预设阈值数量的服务器投票时选举成为主服务器并通知状态更改模块更改状态为主服务器;

状态更改模块还用于服务器选举成为主服务器时更改状态为主服务器;

主服务器通知模块,用于获知其他服务器成为主服务器并通知状态更改模块;

状态更改模块还用于当获知其他服务器成为主服务器后更改状态为从服务器。

本发明的系统在主服务器停止服务时,利用各个模块基于投票选举的方式来重新选出主服务器,其他服务器作为从服务器,该系统在不影响原有系统功能前提下,改变原有系统的部署方案,使用投票请求模块中的分布式选举协议来组成各种应用集群,使本来不具备高可用的系统具备了高可用能力,此系统对于简单的应用系统非常适用,不需要在设计阶段过多地考虑高可用方案,集中业务实现。

上述方案中,投票请求模块还用于当状态更改模块将状态改为候选服务器后的一定时间内未再次更改状态时,重新向其余服务器发出投票请求。设定重新投票请求机制,可以使得系统可以自发性地重新发出投票请求直至重新选出新的主服务器为止,保证系统在停止服务后能选出新服务器来重新启动系统的服务。

上述方案中,服务器还包括:

心跳发送模块,用于在状态更改模块更改状态为主服务器后,向其他服务器发送主服务器心跳;

状态更改模块还用于在收到新主服务器发送的心跳后更改状态为从服务器。

设置心跳发送模块用于向等待选举结果的服务器发出通知,使其他服务器能够结束投票请求的过程,重新修改状态为从服务器,以确保及时重新启动系统的服务。

上述方案中,所述预设阈值数量为所有服务器的一半。

上述方案中,服务器还包括:

状态同步模块,用于在状态更改模块更改状态为从服务器或主服务器后,与其他服务器进行状态信息同步操作。状态同步模块的设置不但可以使系统能够恢复到正常状态,而且还能够使系统恢复到停止服务前的状态,保证信息的完整性。

与现有技术相比,本发明技术方案的有益效果是:

本发明使用分布式选举协议来组成大数据运算的集群的高可用方案,其在不影响原有系统功能的前提下,稍微改变了原有系统的部署方案,通过协议选举主服务器,其余服务器作为从服务器,当主服务器停止服务器时,从服务器冲洗选出主服务器,新的主服务器接管服务,使得普通非高可用的系统实现高可用功能,保证系统崩溃后能够通过自发性的选举来恢复系统的正常工作,保证了大数据处理的正常执行。对于简单的应用系统尤其适用,不需要在设计阶段过多考虑高可用方案,实用性强。

附图说明

图1为本发明一种集群选举方法具体实施例的流程图。

图2为本发明一种集群选举系统具体实施例的架构图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

在本发明的描述中,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以是通过中间媒介间接连接,可以说两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明的具体含义。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1

如图1所示,为本发明一种集群选举方法具体实施例的流程图。参见图1,本具体实施例一种集群选举方法的具体步骤包括:

S1.从服务器无法获得主服务器的心跳时,所有从服务器的状态改为候选服务器,并向其余服务器发出请求选为主服务器的投票请求。

通常系统启动或者主服务器掉线时都会导致从服务器无法获得主服务器的心跳,此时可以通过预设一定的时间阈值或者无法获得主服务器心跳的次数来给予从服务器等待主服务器心跳的时间,当超过一定的时间阈值或者超过一定次数无法获得主服务器心跳(如3次无法获得主服务器心跳)后从服务器仍无法获得主服务器的心跳时,从服务器即可启动状态更改步骤,将其自身状态修改为候选服务器,并各自向除自身之外的其他服务器发出投票请求。时间阈值的设定一方面可以保证等待心跳的时间,另一方面又可以保证从服务器能够及时地启动投票选举步骤来重新选出主服务器,以保证系统能够在崩溃后的一定时间内及时恢复正常工作。

S2.当候选服务器收到超过预设阈值数量的服务器投票,则选举成为主服务器并更改状态为主服务器;预设的阈值数量可以预先设定,比如设定预设的阈值数量为所有服务器数量的一半,由于此时原主服务器处于掉线状态,因此,所述所有服务器指的是除掉掉线的原主服务器外的其他所有服务器。通常从服务器发出投票包,其余候选服务器收到投票包后进行是否同意的投票,当总数量超过一半的服务器同意则对应的从服务器被选举为新的主服务器。

当候选服务器在等待投票结果时其他服务器成为主服务器,则候选服务器更改状态为从服务器;

当没有任一候选服务器选举为主服务器时,候选服务器重新发送投票请求重新执行步骤S2。

在步骤S2中,当候选服务器选举成为主服务器并更改状态为主服务器后还执行步骤S3:

S3.该新主服务器还向其他服务器发送主服务器心跳,其他服务器收到心跳后更改状态为从服务器。此步骤的设置目的在于通过发出心跳方式来通知其他服务器已经选出主服务器,其他服务器可以及时将状态更改为从服务器,使新的主服务器能够及时接管服务,使系统恢复正常的工作状态。

在步骤S3中,候选服务器更改状态为从服务器后,主服务器和从服务器同步状态信息。状态信息的同步指的是主服务器选举成功后,向各个从服务器同步来自应用系统的状态信息。状态信息的同步不但可以使系统能够恢复到正常状态,而且还能够使系统恢复到停止服务前的状态,保证信息的完整性。

实施例2

本发明还提供一种集群选举系统来实现非高可用系统的高可用方案。

如图2所示,为本具体实施例一种集群选举系统的架构图。参见图2,本具体实施例一种集群选举系统具体包括服务器,服务器可以通过选定或者选举的方式来确定主服务器和从服务器,当主服务器停止服务器时,可以利用本发明的系统来冲洗选举出主服务器来提供服务。具体地,服务器包括:

状态更改模块110,用于当服务器无法获得主服务器的心跳时,更改状态为候选服务器;服务器的原状态为从服务器状态,系统启动或者主服务器掉线时都会导致从服务器无法获得主服务器的心跳,在无法获得主服务器心跳后,状态更改模块110可以通过预设一定的时间阈值来等待主服务器心跳,当超过一定的时间阈值后服务器仍无法获得主服务器的心跳时,状态更改模块110即可进行状态更改,将服务器的状态修改为候选服务器。

投票请求模块120,用于向其余服务器发出请求选为主服务器的投票请求;

投票结果接收模块130,用于接收服务器投票结果,当收到超过预设阈值数量的服务器投票时将本服务器选举成为主服务器并通知状态更改模块110更改状态为主服务器;预设的阈值数量可以预先设定,比如设定预设的阈值数量为所有服务器数量的一半。

状态更改模块110还用于服务器选举成为主服务器时更改状态为主服务器;

主服务器通知模块140,用于获知其他服务器成为主服务器并通知状态更改模块110;

状态更改模块110还用于当获知其他服务器成为主服务器后更改状态为从服务器。

考虑到投票选举并非每次都能够成功,比如没有一个服务器收到的服务器投票超过半数服务器时,则会导致没有一个服务器成功选举为主服务器。因此,投票请求模块120还用于当状态更改模块110将状态改为候选服务器后的一定时间内未再次更改状态时,重新向其余服务器发出投票请求。服务器状态未再次更改表示仍然处于候选服务器状态,并未更改为从服务器状态或者主服务器状态,即表示仍没有一个服务器被选举为新的主服务器。设定重新投票请求机制,可以使得系统可以自发性地重新发出投票请求直至重新选出新的主服务器为止,保证系统在停止服务后能选出新服务器来重新启动系统的服务。

为了能够及时通知其他服务器已经选举出新的主服务器,服务器中还设置了心跳发送模块150,用于在状态更改模块110更改状态为主服务器后,向其他服务器发送主服务器心跳;

状态更改模块110还用于在收到新主服务器发送的心跳后更改状态为从服务器。

设置心跳发送模块150用于向等待选举结果的服务器发出通知,使其他服务器能够结束投票请求的过程,重新修改状态为从服务器,以确保及时重新启动系统的服务。

具体实施过程中,服务器中还包括状态同步模块160,用于在状态更改模块110更改状态为从服务器或主服务器后,与其他服务器进行状态信息同步操作。状态同步模块的设置不但可以使系统能够恢复到正常状态,而且还能够使系统恢复到停止服务前的状态,保证信息的完整性。

本发明使用分布式选举协议来组成大数据运算的集群的高可用方案,其在不影响原有系统功能的前提下,稍微改变了原有系统的部署方案,通过协议选举主服务器,其余服务器作为从服务器,当主服务器停止服务器时,从服务器冲洗选出主服务器,新的主服务器接管服务,使得普通非高可用的系统实现高可用功能,保证系统崩溃后能够通过自发性的选举来恢复系统的正常工作,保证了大数据处理的正常执行。对于简单的应用系统尤其适用,不需要在设计阶段过多考虑高可用方案,实用性强。

相同或相似的标号对应相同或相似的部件;

附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

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