分布式集群节点状态的同步方法、同步系统及相关装置与流程

文档序号:16900780发布日期:2019-02-19 17:58阅读:207来源:国知局
分布式集群节点状态的同步方法、同步系统及相关装置与流程

本申请涉及数据存储领域,特别涉及一种分布式集群节点状态的同步方法、同步系统及相关装置。



背景技术:

在大数据云计算时代,海量数据的存储和计算对存储系统提出了更高的要求,高性能、持续稳定的可用性是长期大量数据存储和计算的基础,但在这个过程中难免会发生软、硬件等各种故障。在目前的存储领域中,多采用集群冗余的方法来提高存储系统存储和计算的高效性和稳定性。集群是由多个节点组成的一组节点集合,通过提供基础服务和状态管理来维护各个节点的资源,当有节点发生故障时,通过协调各节点来对外提供服务,达到持续满足客户需求的目的,这极大的提高了集群系统的高可用性,也使得存储系统更加的持续稳定和安全。

目前存在的分布式算法设计复杂并且调试困难,大多数系统设计者采用一种典型的分布式主从设计方案,包括一个主节点和一组从节点。主机命令从机来执行他们的任务并且监控它们运行状态。主节点包含系统的全部信息,其它节点只包含各自部分的信息。如果有从节点发生故障,可以通过主节点协调各节点状态信息继续运行,如果主节点发生故障,状态协调设计十分困难。



技术实现要素:

本申请的目的是提供一种分布式集群节点状态的同步方法、同步系统、一种计算机可读存储介质和一种服务器,解决了现有的分布式集群过分依赖主节点带来的集群可用性差的问题。

为解决上述技术问题,本申请提供一种分布式集群节点状态的同步方法,具体技术方案如下:

建立虚拟节点与所有节点的状态管理模块的连接;

当所述状态管理模块接收事项内容时,所述虚拟节点按照所述状态管理模块接收的顺序同步接收所述事项内容;

当所述分布式集群中第一节点故障时,所述虚拟节点接收所述第一节点的故障信息,并将所述故障信息同步至其他所有节点;

当第二节点加入所述分布式集群时,所述虚拟节点将自身保存的所述事项内容同步至所述第二节点。

其中,还包括:

所述虚拟节点为所述状态管理模块分配额外内存。

其中,建立虚拟节点与所有节点的状态管理模块的连接之后,还包括:

所述虚拟节点将所述状态管理模块初始化。

其中,还包括:

所述分布式集群的主节点同步第二事项内容至从节点时,所述虚拟节点获取所述第二事项内容并保存。

本申请还提供一种分布式集群节点状态的同步系统,具体技术方案如下:

连接建立模块,用于建立虚拟节点与所有节点的状态管理模块的连接;

同步接收模块,用于当所述状态管理模块接收事项内容时,所述虚拟节点按照所述状态管理模块接收的顺序同步接收所述事项内容;

第一同步模块,用于当所述分布式集群中第一节点故障时,所述虚拟节点接收所述第一节点的故障信息,并将所述故障信息同步至其他所有节点;

其中,还包括:

第二同步模块,用于当第二节点加入所述分布式集群时,所述虚拟节点将自身保存的所述事项内容同步至所述第二节点。

其中,还包括:

内存分配模块,用于为所述状态管理模块分配额外内存。

其中,还包括:

初始化模块,用于将所述状态管理模块初始化。

其中,还包括:

主节点同步模块,用于所述分布式集群的主节点同步第二事项内容至从节点时,获取所述第二事项内容并保存。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的同步方法的步骤。

本申请还提供一种分布式集群,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的同步方法的步骤。

本申请提供一种分布式集群节点状态的同步方法,包括:建立虚拟节点与所有节点的状态管理模块的连接;当所述状态管理模块接收事项内容时,所述虚拟节点按照所述状态管理模块接收的顺序同步接收所述事项内容;当所述分布式集群中第一节点故障时,所述虚拟节点接收所述第一节点的故障信息,并将所述故障信息同步至其他所有节点。

本申请通过建立与节点相连的虚拟节点,利用虚拟节点协调节点中的状态管理模块,同步保存分布式集群中节点的状态信息,当节点发生故障或者存在加入集群的节点时,记录故障信息或同步状态信息,保证集群系统持续稳定运行,有效提高集群系统的高可用性和安全性。本申请还提供一种分布式集群节点状态的同步系统、一种计算机可读存储介质和一种分布式集群,具有上述有益效果,此处不再赘述。

附图说明

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

图1为本申请实施例所提供的一种分布式集群节点状态的同步方法的流程图;

图2为本申请实施例所提供的一种分布式集群节点状态的同步系统结构示意图;

图3为本申请实施例所提供的一种分布式集群节点状态的同步系统结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种分布式集群节点状态的同步方法的流程图,该同步方法包括:

s101:建立虚拟节点与所有节点的状态管理模块的连接;

本步骤旨在建立虚拟节点和分布式集群(以下可简称“集群”)中节点的连接,具体的,与节点的状态管理模块建立连接。在分布式集群中,相同的状态管理模块软件运行在所有的节点上,所有的状态管理模块都是从同样的状态开始,所有的状态管理模块都接收同样序列的事项,所有的状态管理模块都会做同样的状态变迁和响应。而本步骤旨在建立虚拟节点与状态管理模块的连接,需要注意的是,应与分布式集群中的每一个节点建立连接。由于任何一个节点的故障(或者退出集群)均会对整个集群造成影响,因此有必要监控每一个节点,即虚拟节点应与所有节点建立连接。

此外,虚拟节点并非实际存在的节点,可以认为虚拟节点实际上是分布式集群中的一项服务,因此可以通过将虚拟节点服务部署在每一个节点之上,借此实现建立虚拟节点与所有节点的状态管理模块的连接。

本步骤默认之前存在建立虚拟节点这一步骤,具体的,由于虚拟节点并非实际节点,其作为一项服务,为其配置具有下文s102、s103、s104所具有的功能即可。具体的,可以先将其部署在分布式集群的主节点或任意一个节点之上,进而再建立与其他所有节点的连接。当然,由于现有技术中主节点已经与其他所有节点建立连接,因此直接通过主节点建立虚拟节点与所有节点的连接较为方便。

值得一提的是,通常在建立虚拟节点与所有节点的状态管理模块的连接之后,还可以虚拟节点将状态管理模块初始化。此时的初始化目的是将集群中所有节点的状态信息同步为初始状态,确保所有的节点在初始时为一致的状态信息。

s102:当所述状态管理模块接收事项内容时,所述虚拟节点按照所述状态管理模块接收的顺序同步接收所述事项内容;

通常,节点在正常运行时,会产生各种事项内容,且事项内容具有时间性,即按时间顺序进行并按顺序记录在各节点,并且由各节点的状态管理模块记录并保存,而虚拟节点可以同步接收该事项内容。

可以理解的是,同步事项内容重点指的是内容上的同步,在时间上不作具体限定。

此外,容易理解的是,事项内容主要指的是节点发生的事件,例如节点的数据输入/输出、节点之间的数据交互以及节点的对外相应记录等等。当然还可以有其他事项内容,在此不一一举例限定。

s103:当所述分布式集群中第一节点故障时,所述虚拟节点接收所述第一节点的故障信息,并将所述故障信息同步至其他所有节点;

当第一节点故障时,虚拟节点接收故障信息,并将故障信息同步至其他节点。这里的第一节点可以是集群中的任意一节点,“第一”仅为区分下文的“第二节点”。也即是说,当分布式集群中存在节点故障时,通常状态管理模块会采集故障信息,此时虚拟节点可以同步故障信息。若是该节点直接宕机或者脱离分布式集群,此时虚拟节点还可以根据已知的故障内容生成故障信息,已知的故障内容通常包括故障时间、故障节点名称,甚至可以根据该节点之前的事项内容分析可能的故障原因等。

之所以需要将故障信息同步至其他节点,是为了保证分布式集群中所有节点的状态信息相同,但并不意味着某一个节点故障,将故障状态也同步至其他节点使得所有节点均出现故障,而是仅仅将故障节点的故障信息同步至其他所有节点,使得其他节点获知故障节点的信息内容。

本申请实施例提供了一种分布式集群节点状态的同步方法,通过建立与节点相连的虚拟节点,利用虚拟节点协调节点中的状态管理模块,同步保存分布式集群中节点的状态信息,当节点发生故障或者存在加入集群的节点时,记录故障信息或同步状态信息,保证集群系统持续稳定运行,有效提高集群系统的高可用性和安全性。

优选的,参见图2,图2为本申请实施例所提供的一种分布式集群节点状态的同步方法流程图,基于上述实施例,该同步方法还可以包括:

s104:当第二节点加入所述分布式集群时,所述虚拟节点将自身保存的所述事项内容同步至所述第二节点。

与步骤s103中相同的是,本步骤中的“第二节点”为不属于分布式集群中的任何一节点,特别的,第二节点可以为发生故障后脱离分布式集群的第一节点,即第二节点可以原本为分布式集群中的节点,由于故障等原因脱离分布式集群后再加入集群,此时由步骤s103中的第一节点变为第二节点。

当新的节点(即第二节点)加入分布式集群时,无论该节点以前是否存在于本分布式集群,其节点上的事项内容与本集群中其他节点均不可能一样,因此虚拟节点需要将自身保存的事项内容同步至第二节点。特别的,若是第二节点之前为第一节点,或者第二节点上已经存在一定的事项内容,虚拟节点在同步过程中需要将不同于本集群的内容删除,以保证分布式集群内的所有节点的状态相同,以提升集群的可用性和安全性。

需要说明的是,上文所述的步骤s102、s103和s104中任意两个步骤之间并无既定的执行顺序关系,具体执行应视当前分布式集群中节点的实际状态而定。若节点处于正常运行状态并产生了事项内容,则执行s102;若节点故障,则执行s103;若存在新加入集群的节点,则执行s104。

基于上述实施例,作为优选的实施例,建立虚拟节点之后,还可以包括:

虚拟节点为状态管理模块分配额外内存。

虚拟节点可以为集群中节点的状态管理模块分配额外内存,使得状态管理模块可以利用虚拟节点提供的服务分配更多的空间。特别的,当状态管理模块对应的节点发生故障等情况时,此时为该状态管理模块分配额外内存,有利于提高节点状态信息的同步效率。

基于上述实施例,作为优选的实施例,还包括:

分布式集群的主节点同步第二事项内容至从节点时,虚拟节点获取第二事项内容并保存。

本步骤旨在强调现有技术中主节点与本申请所描述的虚拟节点之间的关系,当主节点依旧存在时,若主节点同步第二事项内容至从节点时,虚拟节点可以获取第二事项内容并保存。换句话说,此时虚拟节点可以执行所有主节点所执行的操作,相当于第二个主节点。此时,无论分布式集群中的节点发生故障、或者存在新的节点加入、或者节点正常工作时的事项内容记录,均可以由主节点或者虚拟节点中的任一个,或者两个相互辅助完成。而一点发生故障的节点为主节点,此时虚拟节点可以完全替代主节点的作用,保证分布式集群的正常运行。

更进一步的,基于上一实施例,分布式集群中可以不存在主节点,只需要存在虚拟节点。由于虚拟节点并非实体装置,不存在故障的可能性,且与各个节点均建立连接,不会出现因为节点故障使得虚拟节点失效的情况,此时,集群在建立的过程中无需藉由法定票数选出主节点等流程,简化了分布式集群的生成过程,同时也保证分布式集群的稳定运行,提高了集群的可用性。

下面对本申请实施例提供的一种分布式集群节点状态的同步系统进行介绍,下文描述的同步系统与上文描述的一种分布式集群节点状态的同步方法可相互对应参照。

参见图3,图3为本申请实施例所提供的一种分布式集群节点状态的同步系统结构示意图,该同步系统可以包括:

连接建立模块100,用于建立虚拟节点与所有节点的状态管理模块的连接;

同步接收模块200,用于当所述状态管理模块接收事项内容时,所述虚拟节点按照所述状态管理模块接收的顺序同步接收所述事项内容;

第一同步模块300,用于当所述分布式集群中第一节点故障时,所述虚拟节点接收所述第一节点的故障信息,并将所述故障信息同步至其他所有节点。

基于上述实施例,作为优选的实施例,所述同步系统还可以包括:

第二同步模块400,用于当第二节点加入所述分布式集群时,所述虚拟节点将自身保存的所述事项内容同步至所述第二节点。

基于上述实施例,作为优选的实施例,所述同步系统还可以包括:

内存分配模块,用于为所述状态管理模块分配额外内存。

基于上述实施例,作为优选的实施例,所述同步系统还可以包括:

初始化模块,用于将所述状态管理模块初始化。

基于上述实施例,作为优选的实施例,所述同步系统还可以包括:

主节点同步模块,用于所述分布式集群的主节点同步第二事项内容至从节点时,获取所述第二事项内容并保存。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的一种分布式集群节点状态的同步方法的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种分布式集群,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的一种分布式集群节点状态的同步方法的步骤。当然所述分布式集群还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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