一种主节点选举方法、装置及存储系统与流程

文档序号:11843101阅读:163来源:国知局
一种主节点选举方法、装置及存储系统与流程

本发明涉及分布式存储领域,尤其涉及一种主节点选举方法、装置及存储系统。



背景技术:

云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。分布式存储是云计算范畴中的一个领域,其作用是提供海量数据的分布式数据存储服务以及高速读写访问的能力。

分布式存储系统中的节点都是有状态的,即每个节点上存储的数据可能不同,节点之间无法简单的互相替换。因此,其容灾处理也更为复杂。在主从架构的分布式存储系统中,通常由主节点提供读写服务,并实时向从节点同步数据,在主节点故障时,切换到从节点进行读写,从而达到容灾目的。切换过程要求任何情况下不能产生两个及两个以上的主节点,以避免数据一致性出现问题,同时,要求切换应尽快完成,降低系统故障时间。

在传统系统规模和网络环境下,上述问题解决相对容易。通常,系统处于同一交换机内部,即拓扑结构为星型网络,每个节点只有一个网络出口。如果主节点出现网络故障,则从节点和应用服务器均无法连接到该节点。因此,只需要由从节点监测主节点状态,当主节点不可用时,自动切换状态,接管读写请求。相应的,应用服务器也能检测到主节点故障,并转移到从节点进行读写。

在分布式存储系统中,系统规模通常要大很多,会存在多个写入者通过不同网络访问数据存储系统的情形,网络连接的可靠性也大大降低,可 能出现网络分区的情形。如附图1所示,当从节点检测到主节点不可达时,主节点可能仍然工作正常。此时,如果从节点自动切换到主用状态,将产生两个及两个以上的主节点,此时应用服务器检测到了多主节点的情况就会停止写入,相关的服务就会中断或者节点之间的数据一致性出现问题。

技术实现要素:

为了解决相关技术中节点之间的数据一致性难以保证的问题,本发明提供了一种主节点选举方法、装置及存储系统,以至少解决上述问题。

根据本发明的一个方面,提供了一种主节点选举方法,包括:复制组中的第一节点与复制组中其他节点建立连接;所述第一节点判断所述其他节点中是否存在主节点;若不存在,则所述第一节点向所述其他节点发送选举请求消息,所述选举请求消息用于所述其他节点根据选举策略回复选举结果;所述第一节点根据所述选举结果确定是否切换为主节点。

可选地,所述其他节点根据选举策略回复选举结果,包括以下至少之一:所述其他节点接收的所述选举请求消息是预设时间段内第一个请求消息的情况下,所述其他节点回复同意消息,在所述同意消息的数量达到预设阈值的情况下,所述第一节点切换为主节点;所述其他节点根据所述选举请求消息中携带的数据信息以及所述选举策略,回复权重值,所述第一节点的所述权重值总和在所有节点中最大的情况下,所述第一节点切换为主节点;所述其他节点中存在主节点的情况下,所述其他节点回复拒绝消息。

可选地,所述第一节点向所述其他节点发送选举请求消息之前,包括:在所述第一节点的优先级符合选举条件的情况下,向所述其他节点发送选举请求消息,其中,所述优先级是预先设定的。

可选地,所述复制组中的第一节点与复制组中其他节点建立连接,包括:所述复制组中与所述第一节点建立连接的节点数量达到预设阈值。

可选地,所述复制组为至少两个,且均设置在同一个物理服务器上。

可选地,所述复制组中的节点数量为至少三个。

根据本发明的另一个方面,提供了一种主节点选举装置,设置于所述第一节点上,包括:连接模块,用于与复制组中其他节点建立连接;查询 模块,用于判断所述其他节点中是否存在主节点;选举请求模块,用于在所述其他节点中不存在主节点的情况下,向所述其他节点发送选举请求消息,所述选举请求消息用于所述其他节点根据选举策略回复选举结果;切换模块,用于根据所述选举结果确定是否将所述第一节点切换为主节点。

可选地,所述切换模块包括以下至少之一:第一触发单元,用于在所述同意消息的数量达到预设阈值的情况下,将所述第一节点切换为主节点,其中,所述同意消息是所述其他节点在接收的所述选举请求消息是预设时间段内第一个请求消息的情况下回复的;第二触发单元,用于所述第一节点的权重值总和在所有节点中最大的情况下,所述第一节点切换为主节点,其中,所述权重值是由所述其他节点根据所述选举请求消息中携带的数据信息以及所述选举策略回复的;其中,所述其他节点中存在主节点的情况下,所述其他节点回复拒绝消息。

可选地,所述选举请求模块,包括:优先级单元,用于在所述第一节点的优先级符合选举条件的情况下,触发所述选举请求模块向所述其他节点发送选举请求消息,其中,所述优先级是预先设定的。

可选地,所述复制组中的第一节点与复制组中其他节点建立连接,包括:所述复制组中与所述第一节点建立连接的节点数量达到预设阈值。

可选地,所述复制组为至少两个,且均设置在同一个物理服务器上。

可选地,所述复制组中的节点数量为至少三个。

根据本发明的再一个方面,提供了一种存储系统,所述存储系统包括至少一个复制组,所述复制组包括:

第一节点,包括:

连接模块,用于与复制组中其他节点建立连接;查询模块,用于判断所述其他节点中是否存在主节点;选举请求模块,用于在所述其他节点中不存在主节点的情况下,向所述其他节点发送选举请求消息,所述选举请求消息用于所述其他节点根据选举策略回复选举结果;切换模块,用于根据所述选举结果确定是否切换为主节点;

其他节点,用于根据所述选举请求消息及选举策略回复选举结果。

通过本发明,复制组中的第一节点与复制组中其他节点建立连接;所述第一节点判断所述其他节点中是否存在主节点;若不存在,则所述第一节点向所述其他节点发送选举请求消息,所述选举请求消息用于所述其他节点根据选举策略回复选举结果;所述第一节点根据所述选举结果确定是否切换为主节点。使得分布式存储系统内复制组中的主节点始终保持为一个,避免了节点之间的数据一致性出现问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的分布式系统中网络分区的示意图;

图2是根据本发明实施例的主节点选举方法流程图一;

图3是根据本发明实施例的主节点选举方法流程图二;

图4是根据本发明实施例的主节点选举装置结构框图一;

图5是根据本发明实施例的主节点选举装置结构框图二;

图6是根据本发明实施例的存储系统应用示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本发明实施例提供了一种主节点选举方法,图2是根据本发明实施例的主节点选举方法流程图一,如图2所示,该方法包括:

S202,复制组中的第一节点与复制组中其他节点建立连接,其中,复制组中的各个节点互相连接在一起并存储相同的数据,该复制组可以通过节点的冗余以及相关调度算法,保证所存储数据的可用性及一致性。分布式存储系统可以由一个或多个这样的复制组构成,并向应用服务器提供数 据存储服务。

S204,该第一节点判断该复制组内的其他节点中是否存在主节点,可以采用的方式为轮询所有节点身份,查找并判断是否存在主节点。

S206,若不存在主节点,则第一节点向复制组内的其他节点发送选举请求消息,其他节点收到上述选举请求消息后根据相应的选举策略回复其选举的结果。

S208,第一节点根据其他节点回复的选举结果确定其自身是否切换为主节点。

其中,如果在判断过程中发现已经存在一个主节点,则该第一节点保持为从节点身份。并且可以启动数据实时同步流程,同时监控主节点状态,在发现主节点失效时重新执行步骤S204。

通过本发明实施例,复制组中的第一节点与复制组中其他节点建立连接,第一节点判断其他节点中是否存在主节点,若不存在,则第一节点向其他节点发送选举请求消息,其他节点收到选举请求消息后根据选举策略回复选举结果,第一节点根据选举结果确定是否切换为主节点。使得分布式存储系统内复制组中的主节点始终保持为一个,避免了节点之间的数据一致性出现问题。

在本发明的一个实施方式中,其他节点收到选举请求消息后根据选举策略回复选举结果可以包括以下方式之一:

其他节点接收的选举请求消息是预设时间段内第一个请求消息的情况下,该其他节点就回复同意消息,当所回复的同意消息数量达到了预先设定阈值,上述第一节点就切换为主节点;

其他节点根据选举请求消息中携带的数据信息以及选举策略,回复权重值,其中,上述数据信息中包含该其他节点回复权重值的依据,这种依据可以是预先设置好的运算逻辑。当第一节点的上述所有权重值总和在所有节点中最大的情况下,该第一节点就切换为主节点。

以上述第一种方式举例,初始启动或主节点故障时,复制组内的从节点无法连接到主节点,则触发一次选举过程,直到自身成为新的主节点,或找到主节点为止。当选举产生主节点以后,由主节点负责处理应用服务 器的数据读写请求。图3是根据本发明实施例的主节点选举方法流程图二,如图3所示,该方法包括:

S302,从节点A可以看作本发明中的第一节点,从节点B、C相当于上述的其他节点,本实施例中,从节点A由于无法连接到一个已存在的主节点,在复制组内广播选举请求,要求从节点B、C同意其成为新的主节点;

S304,从节点B执行类似操作,发送选举请求到从节点A、C,要求成为主节点;

S306,在预设时间段T内,从节点C首先收到从节点A的选举请求,且自身无法连接到已知主节点,同意从节点A的选举请求;

S308,从节点C收到从节点B的选举请求,由于已经同意从节点A的选举请求,从节点C回复拒绝消息,拒绝从节点B的选举请求;

S310,从节点B收到节点A的选举请求,由于其自身已发送选举请求(即同意自己成为新的主节点),拒绝从节点A的选举请求;

S312,从节点A收到节点B的选举请求,由于其自身已发送选举请求(即同意自己成为新的主节点),拒绝从节点B的选举请求;

S314,假设预设的阈值为超过半数,则从节点A收集到超过半数的选举同意反馈,成为新的主节点,并完成自身服务状态的切换;

S316,从节点B未能收集到超过半数的选举同意反馈,因此选举失败,重新执行主节点查找流程;

S318,从节点B、C发现并连接到主节点A,完成复制组的初始化,选举终止。

对于步骤S302、S304中所述的选举请求,存在一个超时时间t,如果发送方在该时间t内未能收到某节点的回复,则等同于该节点投拒绝票。设置超时时间t可以避免网络原因导致的请求不可达或回复丢失。

如步骤S306、S308、S310、S312所述,当某个从节点收到其他节点发送的选举请求时,如果其本身已经连接到一个主节点,则应当拒绝该选举请求;否则,应当保证在超时时间t内,仅同意一个从节点的选举请求。

实际情况下,由于各节点的请求发送是并行的,具体时序可能与上述步骤不同,但处理方式一致。在本发明实施例中,如果复制组中超过半数的节点能够互相通讯,经过1次或多次的选举,总能选出一个主节点,完成复制组的初始化过程。

在本发明的一个实施方式中,为了避免多个节点同时发起选举的冲突问题,可以为从节点配置默认的选举发起优先级,比如,当预先配置上述第一节点为第二优先级时,此时如果该第一节点要发起选举流程,其所必须符合的选举条件即为:处于第一优先级的从节点已经发起了选举流程或者无法连接到。

在本发明的一个实施方式中,由于复制组内主从节点负载不同,可以将复制组内的节点设计为虚拟的,在一个物理服务器上部署两个或者多个复制组,每个物理服务器同时作为这些复制组中的主节点或从节点,如此可以达到平衡负载的目的。当然,不同复制组之间的选举过程都是相互独立的。其中,该复制组中的节点数量一般为3个或者多个。

本发明实施例还提供了一种主节点选举装置,设置于第一节点上,图4是根据本发明实施例的主节点选举装置结构框图一,如图4所示,该装置包括:连接模块402,用于与复制组中其他节点建立连接;查询模块404,用于判断所述其他节点中是否存在主节点;选举请求模块406,用于在所述其他节点中不存在主节点的情况下,向所述其他节点发送选举请求消息,所述选举请求消息用于所述其他节点根据选举策略回复选举结果;切换模块408,用于根据所述选举结果确定是否将所述第一节点切换为主节点。

其中,如果查询模块404在判断过程中发现已经存在一个主节点,则该第一节点保持为从节点身份。并且可以启动数据实时同步流程,同时监控主节点状态,在发现主节点失效时查询模块404重新执行查询功能。

通过本发明实施例,第一节点中的连接模块402与复制组中其他节点建立连接,查询模块404判断其他节点中是否存在主节点,若不存在,则选举请求模块406向其他节点发送选举请求消息,其他节点收到选举请求消息后根据选举策略回复选举结果,切换模块408根据选举结果确定是否切换为主节点。使得分布式存储系统内复制组中的主节点始终保持为一 个,避免了节点之间的数据一致性出现问题。

图5是根据本发明实施例的主节点选举装置结构框图二,在本发明的一个实施方式中,如图5所示,切换模块508包括:

第一触发单元5004,用于在上述同意消息的数量达到预设阈值的情况下,将第一节点切换为主节点,其中,上述同意消息是其他节点在接收的选举请求消息是预设时间段内第一个请求消息的情况下回复的;

第二触发单元5006,用于第一节点的权重值总和在所有节点中最大的情况下,第一节点切换为主节点,其中,权重值是由其他节点根据选举请求消息中携带的数据信息以及选举策略回复的;

其中,在其他节点中存在主节点的情况下,其他节点回复拒绝消息。

在本发明的一个实施方式中,如图5所示,选举请求模块506包括:

优先级单元5002,用于在第一节点的优先级符合选举条件的情况下,触发选举请求模块506向其他节点发送选举请求消息,其中,该优先级是预先设定的。

本发明实施例还提供了一种存储系统,图6是根据本发明实施例的存储系统应用示意图,如图6所示,该存储系统包括至少一个复制组:由一个主节点和两个以上的从节点组成,组内的节点上存储相同的数据,通过节点的冗余以及相关调度算法,保证所存储数据的可用性及一致性。整个存储系统由1个或多个复制组构成,向应用服务器提供数据存储服务。

本发明实施例中的第一节点经过选举后成为主节点,其在复制组中是提供数据读写服务的节点,负责处理应用服务器发送的读写请求,并向从节点同步其存储的数据。

本发明实施例中的其他节点就相当于图6中的从节点,是主节点的备份节点,提供与主节点相同的数据存取能力,并从主节点同步数据,保持数据状态一致。与该第一节点一样,当这些从节点检测到主节点不可用时,也可发起选举,参与新的主节点选择过程。并根据选举结果,切换为主节点,或与新的主节点开始数据同步。

图6中的应用服务器,是部署用户特定应用程序的节点,该程序使用 该存储系统提供的数据读写服务。通常,该程序通过一个由存储系统发行的接口库进行数据读写,其本身并不是数据存储系统的一部分。为简化表述,本发明假定接口库具有区分主从节点,并自动选择主节点进行数据读写的能力。实际上,该特性可以实现在系统外部,即由用户程序完成。

其中,本发明实施例中的应用服务器与复制组中所有节点连接,复制组中所有节点也互相连接。

通过本发明实施例,该存储系统中第一节点的连接模块与复制组中其他节点建立连接,查询模块判断其他节点中是否存在主节点,若不存在,则选举请求模块向其他节点发送选举请求消息,其他节点收到选举请求消息后根据选举策略回复选举结果,切换模块根据选举结果确定是否切换为主节点。使得分布式存储系统内复制组中的主节点始终保持为一个,避免了节点之间的数据一致性出现问题。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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