一种分布式服务器集群中主从节点选举方法及装置的制造方法_2

文档序号:9581787阅读:来源:国知局
务器n中分片n为主节点。
[0039] 当所述M等于N时,所述分片管理目录注册模块在向协调管理系统对应的分片管 理目录注册前,还需要等待比当前分片小的分片都已经完成主从节点选举。
[0040] 进一步地,所述主从节点选举模块执行如下主从节点选举操作:
[0041] 判断当前分片所在的分片管理目录中是否有主节点,如果是,则当前分片为从节 点,转入从节点处理模块处理,否则进入下一步;
[0042] 判断当前分片所在的服务器中比当前分片小的分片是否有主节点,如果没有主节 点,则当前分片为主节点,转入主节点处理模块处理,如果有则进入下一步;
[0043] 判断当前分片是否是所在分片管理目录中最早注册的分片,如果是则当前分片为 临时主节点,进入主节点处理模块处理,否则为从节点转入从节点处理模块处理。
[0044] 本发明提出了一种分布式服务器集群中主从节点选举方法及装置,通过在 zooke巧er上增加服务器管理目录,结合主节点确定策略,能够在M小于N的情况下,确定当 前分片自身是否是主节点;并在M等于N的情况下按大小顺序抢占式注册模式确定主从节 点。从而保证了搜索引擎服务器集群的性能负载尽量处于均衡状态,当出现集群中某台服 务器若机的情况时能自动实现主从节点的切换,并且在该服务器恢复正常工作时自动恢复 负载均衡。本发明使服务器集群合理利用每台服务器的性能,充分发挥了集群的性能优势。
【附图说明】
[0045] 图1为本发明实施例循环链表服务器分片示意图;
[0046] 图2为本发明实施例一主从节点选举方法流程图;
[0047] 图3为本发明协调管理系统目录结构图;
[0048] 图4为本发明实施例二主从节点选举方法流程图;
[0049] 图5为本发明主从节点选举装置结构示意图。
【具体实施方式】
[0050] 下面结合附图和实施例对本发明技术方案做进一步详细说明,W下实施例不构成 对本发明的限定。
[0051] 本实施例W搜索引擎服务器集群为例来进行说明,假设搜索引擎服务器集群共有 N台服务器,并做M个数据备份,其中M《N。
[0052] 在建立搜索引擎服务器集群时,需要确认集群中每台服务器的主节点确定策略。 本发明基于循环链表数据结构来确定服务器的主节点确定策略,如图1所示,将每台服务 器设置具有M个分片,每个服务器的起始分片相隔为1。每个相同名称的分片相互备份,贝U 每两台服务器中有M-I个分片进行数据备份,相同名称的分片中有一个分片为主节点,本 实施例设定每个服务器的分片链表里第一个分片为主节点。则得到如下服务器与分片的关 系表:
[00巧] 表I
[0056] 可见对于任意服务器n,其挂载的分片包括;n,mod(n+l,N),???,mocKn+M-LN)共 M个连续的分片,其中mod(a,b)为余数函数,表示a除Wb的余数,则服务器n中分片n为 主节点。
[0057] 为了方便描述,W下WN= 3,M= 2为例进行详细阐述,在3个服务器做2备份的 情况下,服务器分片关系表如下:
[0058]
[0059]表2
[0060] 可W发现,当前有H台服务器组成一个集群,考虑到服务器存在若机的风险,每台 服务器具有两个分片,保存服务器集群2/3的数据。送样可W保证在一台服务器若机的情 况下依然能检索到完整的数据结果,当若机的服务器重新上线时,不影响检索的基本功能。
[0061] 值得注意的是,每个服务器都是单独的硬件,服务器中名称相同的分片进行数据 备份。除了M=N的特殊情况外,每台服务器的分片情况都是唯一的,在已知服务器数和备 份数的情况下,每个分片根据自身所在服务器上所有分片的信息,即可确定自身是否是主 节点。换句话说,每个服务器具有M个分片,其中只有一个设定的分片确定是主节点,本实 施例每个服务器的分片链表里第一个分片为主节点,其他分片都只能成为临时主节点。月良 务器分片链表数据只是用来说明主节点确定策略,实际服务器挂载分片不需要组成链表。
[0062] 例如对于名称为分片1的相互备份的分片中,W服务器1中的分片1为主节点;对 于名称为分片2的相互备份的分片中,W服务器2中的分片2为主节点;对于名称为分片3 的相互备份的分片中,W服务器3中的分片3为主节点。
[0063] 基于上述主节点确定策略,本发明一种分布式服务器集群中主从节点选举方法的 实施例一如图2所示,用于服务器的当前分片与协调管理系统交互选举出主从节点,包括 如下步骤:
[0064] 步骤S201、判断选举任务的类型,如果是分片注册则向协调管理系统的服务器管 理目录注册,接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;女口 果是事件触发则向协调管理系统查询并接收当前分片所在服务器的所有分片注册信息。
[0065] 当服务器初次启动或重启时,服务器的各分片需要发起分片注册,从而引发主从 节点选举任务。或当一个服务器若机时,与该服务器中作为主节点的分片绑定的所有其他 服务器的分片需要重新选举主从节点,送种情况下则产生事件触发选举任务。
[0066]因此首先判断选举任务类型,如果是分片注册,则向协调管理系统的服务器管理 目录注册,并接收协调管理系统的返回信息;如果是事件触发,则直接向协调管理系统查 询,并接收协调管理系统的返回信息。
[0067] 其中,向协调管理系统的服务器管理目录注册,是将自身信息写入到服务器管理 目录下对应的服务器目录。分片的自身信息包括分片的IP地址和分片的名称。
[0068] 本实施例协调管理系统为zookeeper,每个服务器都可W安装一个zookeeper,也 可W几个服务器共用一个zookeeper,协调管理系统ZOOkeeper设置有分片管理目录、服务 器管理目录和主节点管理目录。其中分片管理目录用来记录每个分片名称对应的分片信 息,服务器管理目录用来记录每个服务器对应的各分片信息,而主节点管理目录用来记录 主节点分片信息。对于N= 3,M= 2的搜索服务器集群,zooke巧er目录结构如图3所示。
[0069] 无论是分片注册还是事件触发,最终都是由当前分片发起主从节点选举,下面W 3 个服务器,2备份的搜索引擎服务器集群中服务器1为例来进行说明。
[0070] 步骤S202、在当前分片所在的服务器中所有分片都已经注册完成后,向协调管理 系统对应的分片管理目录注册或查询。
[0071] 例如服务器1中的分片1作为当前分片,则分片1通过注册到协调管理系统的服 务器管理目录,或查询协调管理系统的服务器管理目录,即可W接收到协调管理系统返回 的服务器1中所有分片的注册信息。然后首先判断服务器1中是否所有分片都注册完成, 如果未完成则等待直到所有分片都注册完成。通常一个服务器启动后,其所有的分片都会 进行注册,不考虑分片损坏的情况。
[0072] 等到所有分片都注册后,分片1向协调管理系统对应的分片管理目录注册,即向 协调管理系统的分片管理目录中的化ardl写入自身信息,对应的信息为化ardl_serverl。
[0073] 对于服务器1中的分片2作为当前分片时,也作同样处理,向协调管理系统的分片 管理目录中shard2写入自身信息,对应的信息为化ard2_se;rve;rl。
[0074] 值得注意的是,在事件触发进行主从节点选举任务时,当前分片只需向分片管理 目录查询对应目录下的注册信息即可,只有在分片注册的选举任务时,才需要重新注册。
[0075] 步骤S203、根据当前分片所在的服务器的所有分片的注册信息,判断当前分片是 否是主节点,如果是转入步骤S206,否则进入下一步。
[0076] 每个分片具有自己的IP地址和分片名称等自身信息,再从协调管理系统 ZOOkeeper获取集群中服务器数量N和备份数量M,根据当前分片在服务器分片链表中的位 置确定自己是否是主节点。
[0077] 服务器1的分片1根据服务器1中所有分片的注册信息,例如分片1和分片2的 注册信息,再结合服务器集群中所有服务器数量3和备份数量2,由于分片1位于服务器1 分片链表的第一位,根据主节点确定策略确定分片1是主节点,转入步骤S206。
[007引服务器1的分片2根据服务器1中所有分片的注册信息,例如分片1和分片2的 注册信息,再结合服务器集群中所有服务器数量3和备份数量2,由于分片2位于服务器1 分片链表的第二位,根据主节点确定策略确定分片2不是主节点,进入下一步。
[0079] 本实施例的主节点确定策略是每个服务器的分片链表里第一个分片为主节点,因 此可W根据当前服务器的分片链表,如果是第一分片,则是主节点。本发明不限于主节点确 定策略的具体形式,如果统一确定分片链表的第二分片为主节点,也一样适用,送里不再赏 述。采用主节点确定策略来确定主节点,将保证各服务器之间的负载均衡,使主节点分布在 不同的服务器上。
[0080] 步骤S204、判断当前分片在所在分片管理目
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1