CN105338028B - 一种分布式服务器集群中主从节点选举方法及装置 - Google Patents

一种分布式服务器集群中主从节点选举方法及装置 Download PDF

Info

Publication number
CN105338028B
CN105338028B CN201410369701.2A CN201410369701A CN105338028B CN 105338028 B CN105338028 B CN 105338028B CN 201410369701 A CN201410369701 A CN 201410369701A CN 105338028 B CN105338028 B CN 105338028B
Authority
CN
China
Prior art keywords
node
host node
current slice
server
fragment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410369701.2A
Other languages
English (en)
Other versions
CN105338028A (zh
Inventor
陶明渊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Uniview Technologies Co Ltd
Original Assignee
Zhejiang Uniview Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Uniview Technologies Co Ltd filed Critical Zhejiang Uniview Technologies Co Ltd
Priority to CN201410369701.2A priority Critical patent/CN105338028B/zh
Publication of CN105338028A publication Critical patent/CN105338028A/zh
Application granted granted Critical
Publication of CN105338028B publication Critical patent/CN105338028B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式服务器集群中主从节点选举方法及装置,应用于服务器的当前分片,由当前分片首先向协调管理系统的服务器管理目录注册,并在当前分片所在的服务器中所有分片都已经注册完成后,向协调管理系统对应的分片管理目录注册;进一步根据当前分片所在的服务器的所有分片的注册信息,以及当前分片所在分片管理目录中的分片注册信息,选举主从节点;最后根据选举结果分别进行处理,并绑定对应主节点管理目录下的节点信息,将自身的最终状态写入到协调管理系统的服务器管理目录和分片管理目录下。本发明还公开了实现上述方法的装置。本发明的方法和装置使集群中的分布式服务器合理利用每台服务器的性能,充分发挥了集群的性能优势。

Description

一种分布式服务器集群中主从节点选举方法及装置
技术领域
本发明属于服务器负载均衡技术领域,尤其涉及一种分布式服务器集群中主从节点选举方法及装置。
背景技术
搜索引擎服务器作为一种可伸缩的、致力于信息检索的、可以处理海量信息的应用服务器,在数据检索方面具有得天独厚的优势,能很好的弥补云存储数据库检索的不足。但随着数据量的不断增长,单台搜索引擎服务器也很快达到了性能的瓶颈。这时候往往需要使用分布式搜索引擎来满足大数据量的检索性能,分布式不但能将多台服务器的资源综合利用,而且可以通过备份机制避免由于单个节点失效而影响数据查询结果的风险。分布式搜索引擎往往使用主从模式实现数据的备份和容灾功能,如何均衡的利用每台搜索引擎的性能并且如何实现容灾恢复策略,是分布式搜索引擎的关键。
现有技术搜索引擎服务器在主从模式的选举上的方法主要是最早注册原则,各个分片注册到协调管理系统,协调管理系统反馈当前分片是第几个注册到分片管理目录的,当前分片判断自身是否是最早注册到分片管理目录的,如果是则将自身信息写入到协调管理系统的主节点管理目录下,成为主节点。其中,协调管理系统往往选择zookeeper来实现协调功能,zookeeper作为hadoop的子项目为分布式系统提供可靠地协调功能,如提供包括配置维护、分布式同步、事件触发等功能,是当前分布式系统最常用的协调管理系统。
现有技术的主要缺点是主从节点分配不合理,往往会出现一台服务器A存在多个主节点,而另一台服务器B存在多个从节点的情况。当用户进行查询时集群只会向主节点发送查询请求,导致服务器A需要完成多个分片的查询工作,而另一台服务器B处于完全空闲的状态。查询性能不均衡。
这主要是由于以下两个原因导致的:
第一、因为每个分片的注册线程是完全独立的,每台服务器上有多个不同的分片需要注册,而由于服务器的启动速度和网络情况都不相同,往往会出现一台服务器上的多个分片都首先注册到zookeeper的分片管理目录下而成为主节点,而注册速度较慢的服务器上的分片都会成为从节点。
第二、即使首次创建时主节点的分配是均衡的,假设每台服务器上有一个主节点和一个从节点,但是当某个服务器出现宕机情况时,该服务器上的主节点会被其他服务器上的从节点取代,等到宕机的服务器重新上线时,曾经的主节点也会成为从节点,导致负载不均衡情况的出现。
发明内容
本发明的目的是提供一种分布式服务器集群中主从节点选举方法及装置,用于服务器的当前分片与协调管理系统交互选举出主从节点,实现性能负载均衡和容灾恢复。
为了实现上述目的,本发明技术方案如下:
一种分布式服务器集群中主从节点选举方法,所述分布式服务器集群包括N个服务器,并做M个数据备份,用于所述服务器的当前分片,所述当前分片与协调管理系统交互选举出主从节点,所述协调管理系统设置有服务器管理目录、分片管理目录和主节点管理目录,所述主从节点选举方法包括步骤:
步骤1、当前分片向协调管理系统的服务器管理目录注册,并接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;
步骤2、在所在的服务器中所有分片都已经注册完成后,当前分片向协调管理系统对应的分片管理目录注册;
步骤3、根据所在的服务器的所有分片的注册信息、所在分片管理目录中的分片注册信息,以及M、N的大小关系,当前分片确定自身为主节点或临时主节点或从节点,如果当前分片是主节点或者临时主节点,则进入下一步,否则转入步骤5;
步骤4、当前分片向协调管理系统主节点管理目录写入自身信息,并且在写入自身信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前分片删除所述临时主节点;
步骤5、在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将自身状态信息写入协调管理系统。
本发明的一种情况,当所述M小于N时,所述步骤3具体包括步骤:
步骤3.1、根据所在服务器的所有分片的注册信息,当前分片判断自身是否是主节点,如果是转入步骤4,否则进入步骤3.2;
步骤3.2、如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理目录中没有确定主节点,则当前分片为临时主节点,进入步骤4,否则当前分片为从节点,转入步骤5。
其中,所述根据所在服务器的所有分片的注册信息,当前分片判断自身是否是主节点,是按照如下主节点确定策略来判断:
对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+1,N),…,mod(n+M-1,N)共M个连续的分片,则服务器n中分片n为主节点。mod(a,b)为余数函数,表示a除以b的余数。
本发明采用的主节点确定策略,设定服务器分片链表里特定位置的分片为主节点,能够使得当前分片在根据自身信息以及服务器数量和备份数量的情况下,根据服务器的分片链表判断出自身是否是主节点。有力的保证了各服务器之间的负载均衡,使主节点分布在不同的服务器上。
本发明的另一种情况,所述M等于N时,所述步骤2在向协调管理系统对应的分片管理目录注册前,还需要等待比自身小的分片都已经完成主从节点选举。
进一步地,所述步骤3具体包括步骤:
步骤3.1)、当前分片判断所在的分片管理目录中是否有主节点,如果是,则当前分片为从节点,转入步骤5,否则进入步骤3.2);
步骤3.2)、当前分片判断所在的服务器中比自身小的分片是否有主节点,如果没有主节点,则当前分片为主节点,转入步骤4,如果有则进入步骤3.3);
步骤3.3)、判断自身是否是所在分片管理目录中最早注册的分片,如果是则当前分片为临时主节点,进入步骤4,否则为从节点转入步骤5
在M=N时,各分片按名称大小顺序依次进行注册选举,并根据每个分片的注册顺序以及该服务器中其他先注册的分片的主从情况来确定自身是否为主节点。也可以实现各服务器之间的负载均衡,使主节点分布在不同的服务器上。
本发明还提出了一种分布式服务器集群中主从节点选举装置,所述分布式服务器集群包括N个服务器,并做M个数据备份,所述主从节点选举装置应用于所述服务器的当前分片,所述主从节点选举装置与协调管理系统交互选举出主从节点,所述协调管理系统设置有服务器管理目录、分片管理目录和主节点管理目录,所述主从节点选举装置包括:
服务器管理目录注册模块,用于向协调管理系统的服务器管理目录注册,并接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;
分片管理目录注册模块,用于在当前分片所在的服务器中所有分片都已经注册完成后,向协调管理系统对应的分片管理目录注册;
主从节点选举模块,用于根据当前分片所在的服务器的所有分片的注册信息、所在分片管理目录中的分片注册信息,以及M、N的大小关系,确定当前分片为主节点或临时主节点或从节点,如果当前分片是主节点或者临时主节点,则进入主节点处理模块进行处理,否则进入从节点处理模块进行处理;
主节点处理模块,用于向协调管理系统主节点管理目录写入当前分片信息,并且在写入当前分片信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前分片删除所述临时主节点;并在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统;
从节点处理模块,用于在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统。
当所述M小于N时,所述主从节点选举模块执行如下主从节点选举操作:
根据所在服务器的所有分片的注册信息,判断当前分片是否是主节点,如果是转入主节点处理模块处理,否则进入下一步;
如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理目录中没有确定主节点,则当前分片为临时主节点,进入主节点处理模块处理,否则当前分片为从节点,转入从节点处理模块处理。
进一步地,所述根据所在服务器的所有分片的注册信息,当前分片判断当前分片是否是主节点,是按照如下主节点确定策略来判断:
对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+1,N),…,mod(n+M-1,N)共M个连续的分片,则服务器n中分片n为主节点。
当所述M等于N时,所述分片管理目录注册模块在向协调管理系统对应的分片管理目录注册前,还需要等待比当前分片小的分片都已经完成主从节点选举。
进一步地,所述主从节点选举模块执行如下主从节点选举操作:
判断当前分片所在的分片管理目录中是否有主节点,如果是,则当前分片为从节点,转入从节点处理模块处理,否则进入下一步;
判断当前分片所在的服务器中比当前分片小的分片是否有主节点,如果没有主节点,则当前分片为主节点,转入主节点处理模块处理,如果有则进入下一步;
判断当前分片是否是所在分片管理目录中最早注册的分片,如果是则当前分片为临时主节点,进入主节点处理模块处理,否则为从节点转入从节点处理模块处理。
本发明提出了一种分布式服务器集群中主从节点选举方法及装置,通过在zookeeper上增加服务器管理目录,结合主节点确定策略,能够在M小于N的情况下,确定当前分片自身是否是主节点;并在M等于N的情况下按大小顺序抢占式注册模式确定主从节点。从而保证了搜索引擎服务器集群的性能负载尽量处于均衡状态,当出现集群中某台服务器宕机的情况时能自动实现主从节点的切换,并且在该服务器恢复正常工作时自动恢复负载均衡。本发明使服务器集群合理利用每台服务器的性能,充分发挥了集群的性能优势。
附图说明
图1为本发明实施例循环链表服务器分片示意图;
图2为本发明实施例一主从节点选举方法流程图;
图3为本发明协调管理系统目录结构图;
图4为本发明实施例二主从节点选举方法流程图;
图5为本发明主从节点选举装置结构示意图。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。
本实施例以搜索引擎服务器集群为例来进行说明,假设搜索引擎服务器集群共有N台服务器,并做M个数据备份,其中M≤N。
在建立搜索引擎服务器集群时,需要确认集群中每台服务器的主节点确定策略。本发明基于循环链表数据结构来确定服务器的主节点确定策略,如图1所示,将每台服务器设置具有M个分片,每个服务器的起始分片相隔为1。每个相同名称的分片相互备份,则每两台服务器中有M-1个分片进行数据备份,相同名称的分片中有一个分片为主节点,本实施例设定每个服务器的分片链表里第一个分片为主节点。则得到如下服务器与分片的关系表:
表1
可见对于任意服务器n,其挂载的分片包括:n,mod(n+1,N),…,mod(n+M-1,N)共M个连续的分片,其中mod(a,b)为余数函数,表示a除以b的余数,则服务器n中分片n为主节点。
为了方便描述,以下以N=3,M=2为例进行详细阐述,在3个服务器做2备份的情况下,服务器分片关系表如下:
服务器 分片
服务器1 分片1(主),分片2
服务器2 分片2(主),分片3
服务器3 分片3(主),分片1
表2
可以发现,当前有三台服务器组成一个集群,考虑到服务器存在宕机的风险,每台服务器具有两个分片,保存服务器集群2/3的数据。这样可以保证在一台服务器宕机的情况下依然能检索到完整的数据结果,当宕机的服务器重新上线时,不影响检索的基本功能。
值得注意的是,每个服务器都是单独的硬件,服务器中名称相同的分片进行数据备份。除了M=N的特殊情况外,每台服务器的分片情况都是唯一的,在已知服务器数和备份数的情况下,每个分片根据自身所在服务器上所有分片的信息,即可确定自身是否是主节点。换句话说,每个服务器具有M个分片,其中只有一个设定的分片确定是主节点,本实施例每个服务器的分片链表里第一个分片为主节点,其他分片都只能成为临时主节点。服务器分片链表数据只是用来说明主节点确定策略,实际服务器挂载分片不需要组成链表。
例如对于名称为分片1的相互备份的分片中,以服务器1中的分片1为主节点;对于名称为分片2的相互备份的分片中,以服务器2中的分片2为主节点;对于名称为分片3的相互备份的分片中,以服务器3中的分片3为主节点。
基于上述主节点确定策略,本发明一种分布式服务器集群中主从节点选举方法的实施例一如图2所示,用于服务器的当前分片与协调管理系统交互选举出主从节点,包括如下步骤:
步骤S201、判断选举任务的类型,如果是分片注册则向协调管理系统的服务器管理目录注册,接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;如果是事件触发则向协调管理系统查询并接收当前分片所在服务器的所有分片注册信息。
当服务器初次启动或重启时,服务器的各分片需要发起分片注册,从而引发主从节点选举任务。或当一个服务器宕机时,与该服务器中作为主节点的分片绑定的所有其他服务器的分片需要重新选举主从节点,这种情况下则产生事件触发选举任务。
因此首先判断选举任务类型,如果是分片注册,则向协调管理系统的服务器管理目录注册,并接收协调管理系统的返回信息;如果是事件触发,则直接向协调管理系统查询,并接收协调管理系统的返回信息。
其中,向协调管理系统的服务器管理目录注册,是将自身信息写入到服务器管理目录下对应的服务器目录。分片的自身信息包括分片的IP地址和分片的名称。
本实施例协调管理系统为zookeeper,每个服务器都可以安装一个zookeeper,也可以几个服务器共用一个zookeeper,协调管理系统zookeeper设置有分片管理目录、服务器管理目录和主节点管理目录。其中分片管理目录用来记录每个分片名称对应的分片信息,服务器管理目录用来记录每个服务器对应的各分片信息,而主节点管理目录用来记录主节点分片信息。对于N=3,M=2的搜索服务器集群,zookeeper目录结构如图3所示。
无论是分片注册还是事件触发,最终都是由当前分片发起主从节点选举,下面以3个服务器,2备份的搜索引擎服务器集群中服务器1为例来进行说明。
步骤S202、在当前分片所在的服务器中所有分片都已经注册完成后,向协调管理系统对应的分片管理目录注册或查询。
例如服务器1中的分片1作为当前分片,则分片1通过注册到协调管理系统的服务器管理目录,或查询协调管理系统的服务器管理目录,即可以接收到协调管理系统返回的服务器1中所有分片的注册信息。然后首先判断服务器1中是否所有分片都注册完成,如果未完成则等待直到所有分片都注册完成。通常一个服务器启动后,其所有的分片都会进行注册,不考虑分片损坏的情况。
等到所有分片都注册后,分片1向协调管理系统对应的分片管理目录注册,即向协调管理系统的分片管理目录中的Shard1写入自身信息,对应的信息为Shard1_server1。
对于服务器1中的分片2作为当前分片时,也作同样处理,向协调管理系统的分片管理目录中shard2写入自身信息,对应的信息为Shard2_server1。
值得注意的是,在事件触发进行主从节点选举任务时,当前分片只需向分片管理目录查询对应目录下的注册信息即可,只有在分片注册的选举任务时,才需要重新注册。
步骤S203、根据当前分片所在的服务器的所有分片的注册信息,判断当前分片是否是主节点,如果是转入步骤S206,否则进入下一步。
每个分片具有自己的IP地址和分片名称等自身信息,再从协调管理系统zookeeper获取集群中服务器数量N和备份数量M,根据当前分片在服务器分片链表中的位置确定自己是否是主节点。
服务器1的分片1根据服务器1中所有分片的注册信息,例如分片1和分片2的注册信息,再结合服务器集群中所有服务器数量3和备份数量2,由于分片1位于服务器1分片链表的第一位,根据主节点确定策略确定分片1是主节点,转入步骤S206。
服务器1的分片2根据服务器1中所有分片的注册信息,例如分片1和分片2的注册信息,再结合服务器集群中所有服务器数量3和备份数量2,由于分片2位于服务器1分片链表的第二位,根据主节点确定策略确定分片2不是主节点,进入下一步。
本实施例的主节点确定策略是每个服务器的分片链表里第一个分片为主节点,因此可以根据当前服务器的分片链表,如果是第一分片,则是主节点。本发明不限于主节点确定策略的具体形式,如果统一确定分片链表的第二分片为主节点,也一样适用,这里不再赘述。采用主节点确定策略来确定主节点,将保证各服务器之间的负载均衡,使主节点分布在不同的服务器上。
步骤S204、判断当前分片在所在分片管理目录中是否是最早注册的分片,如果是进入下一步,否则转入步骤S207。
对于分片2,由于其不是主节点,需进一步判断自身在所在分片管理目录中是否是最早注册的分片,如果不是最早注册的分片则肯定是从节点,直接转入步骤S207。
具体地,根据分片管理目录对应的Shard2目录,如果分片2(Shard2_server1)在Shard2目录下的分片中是最早注册的,则进入下一步,否则转入步骤S207。
步骤S205、判断当前分片所在的分片管理目录中,是否没有主节点,如果有则转入步骤207,否则进入下一步。
对于分片2,当是最早注册的分片时,需要进一步判断当前分片所在分片管理目录中,当前已经注册的分片中是否没有主节点,如果有则分片2也是从节点,转入步骤S207;否则进入下一步,即当服务器2的分片2还未注册时,选举服务器1的分片2为临时主节点,进入下一步。
步骤S206、删除协调管理系统之前在主节点管理目录下对应的分片信息,向协调管理系统对应的主节点管理目录写入自身信息。
如果服务器1的分片1被确定为主节点,则删除协调管理系统主节点管理目录下之前的shard1_leader对应的分片信息,如果之前没有对应的信息,则直接写入自身的信息,记录为:shard1_leader。
而如果服务器1的分片2被选举为临时主节点,则删除协调管理系统主节点管理目录下之前的shard2_leader对应的分片信息,如果之前没有对应的信息,则直接写入自身的信息,记录为:shard2_leader。
值得注意的是,在删除之前在主节点管理目录下对应的分片信息后,与该分片信息绑定的所有分片需要重新选举。
步骤S207、在主节点完成向主节点管理目录写入后,绑定对应主节点管理目录下的节点信息。
当前分片无论选举为主节点、临时主节点还是从节点,都需要与主节点管理目录下该主节点信息绑定,在实际使用中,万一该主节点宕机,则会触发与其绑定的所有分片重新选举。
步骤S208、将自身的最终状态写入到协调管理系统的服务器管理目录和分片管理目录下。
在确定分片的主从节点身份后,将自身的最终状态写入到协调管理系统的服务器管理目录和分片管理目录下。
考虑一种特殊情况:即M=N,此时所有服务器的分片情况都是分片1到分片N。分片无法根据所在服务器所有分片的信息来确定自身是否为主节点,本发明指定选举策略:根据每个分片的注册顺序以及该服务器中其他先注册的分片的主从情况来确定自身是否为主节点。
具体地,当M=N时,本发明一种分布式服务器集群中主从节点选举方法的实施例二如图4所示,包括如下步骤:
步骤S401、判断选举任务的类型,如果是分片注册则向协调管理系统的服务器管理目录注册,接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;如果是事件触发则向协调管理系统查询并接收当前分片所在服务器的所有分片注册信息。
本实施例二以2个服务器,做2备份来进行说明,则服务器1和服务器2都各自具有分片1和分片2,互为备份。
步骤S402、在当前分片所在的服务器中所有分片都已经注册完成,并当比自身小的分片都已经完成节点选举后,向协调管理系统对应的分片管理目录注册或查询。
与实施例一不同的是,本实施例中服务器中的各分片按名称大小顺序依次进行注册选举,当前分片只有在比自身小的分片都已经完成节点选举后,才向协调管理系统对应的分片管理目录注册或查询。
例如服务器1中的分片2作为当前分片时,需要等分片1选举完毕后才能开始向协调管理系统的分片管理目录中shard2写入自身信息,对应的信息为Shard2_server1。而当分片2是事件触发时,仅需要向分片管理目录查询即可。
步骤S403、判断当前分片所在的分片管理目录中是否有主节点,如果是则转入步骤S407,否则进入下一步。
分片注册到协调管理系统对应的分片管理目录后,则首先判断当前分片管理目录中是否有主节点,如果已经有主节点了,则当前分片做从节点,转入步骤S407。
如果当前分片管理目录中还没有主节点,则当前分片有可能会被选举为临时主节点,因此进入下一步判断。
例如服务器1的分片1为当前分片,首先查看Shard1目录下的注册分片,如果已经有主节点,则当前分片作为从节点;否则进入下一步判断。
同理对于服务器1的分片2,首先查看Shard2目录下的注册分片,如果已经有主节点,则当前分片作为从节点;否则进入下一步判断。
步骤S404、判断当前分片所在服务器中比自身小的分片是否有主节点,如果有则进入下一步,否则转入步骤S406。
这里当前分片判断所在服务器中比自身小的分片是否有主节点,如果没有,则自己选举为主节点;如果有,则进入下一步,看自己在自己对应的分片管理目录中是否会被选为主节点。
对于服务器1的分片1为当前分片时,由于其在当前服务器1中是最小的分片,因此被选举为主节点,进入步骤S406。
而对于服务器1的分片2为当前分片时,由于其在当前服务器1中有比自身小的分片1已经当选为主节点,则进入下一步判断。
步骤S405、判断自身是否是所在分片管理目录中最早注册的分片,如果是则进入下一步,否则转入步骤S407。
在所在分片管理目录中,如果是最早注册的分片,则被选举为临时主节点;如果不是,则作为从节点。
对于服务器1的分片2为当前分片时,如果在Shrad2目录中是最早注册的,则被选举为临时主节点,否则作为从节点。
但是当服务器2的分片2为当前分片时,其在步骤S404中,由于在服务器2中比自身小的分片不是主节点,因此选举服务器2的分片2为主节点,则替换了服务器1的分片2成为新的主节点。这样的设置有利于服务器间的负载均衡,主节点位于不同的服务器上。
步骤S406、删除协调管理系统之前在主节点管理目录下对应的分片信息,向协调管理系统对应的主节点管理目录写入自身信息。
在当前分片被选举为主节点或临时主节点后,则删除协调管理系统之前在主节点管理目录下对应的分片信息,向协调管理系统对应的主节点管理目录写入自身信息。
值得注意的是,在删除之前在主节点管理目录下对应的分片信息后,与该分片信息绑定的所有分片需要重新选举。
步骤S407、在主节点完成向主节点管理目录写入后,绑定对应主节点管理目录下的节点信息。
当前分片无论选举为主节点、临时主节点还是从节点,都需要与主节点管理目录下该主节点信息绑定,在实际使用中,万一该主节点宕机,则会触发与其绑定的所有分片重新选举。
步骤S408、将自身的最终状态写入到协调管理系统的服务器管理目录和分片管理目录下。
在确定分片的主从节点身份后,将自身的最终状态写入到协调管理系统的服务器管理目录和分片管理目录下。
图5示出了本发明提出的一种分布式服务器集群中主从节点选举装置,应用于服务器的当前分片,与协调管理系统交互选举出主从节点,该主从节点选举装置包括:
服务器管理目录注册模块,用于向协调管理系统的服务器管理目录注册,并接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;
分片管理目录注册模块,用于在当前分片所在的服务器中所有分片都已经注册完成后,向协调管理系统对应的分片管理目录注册;
主从节点选举模块,用于根据当前分片所在的服务器的所有分片的注册信息、所在分片管理目录中的分片注册信息,以及M、N的大小关系,确定当前分片为主节点或临时主节点或从节点,如果当前分片是主节点或者临时主节点,则进入主节点处理模块进行处理,否则进入从节点处理模块进行处理;
主节点处理模块,用于向协调管理系统主节点管理目录写入当前分片信息,并且在写入当前分片信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前分片删除所述临时主节点;并在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统;
从节点处理模块,用于在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统。
当M小于N时,主从节点选举模块执行如下主从节点选举操作:
根据所在服务器的所有分片的注册信息,判断当前分片是否是主节点,如果是转入主节点处理模块处理,否则进入下一步;
如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理目录中没有确定主节点,则当前分片为临时主节点,进入主节点处理模块处理,否则当前分片为从节点,转入从节点处理模块处理。
进一步地,根据所在服务器的所有分片的注册信息,当前分片判断当前分片是否是主节点,是按照如下主节点确定策略来判断:
对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+1,N),…,mod(n+M-1,N)共M个连续的分片,则分片n为服务器n的主节点。
当M等于N时,分片管理目录注册模块在向协调管理系统对应的分片管理目录注册前,还需要等待比当前分片小的分片都已经完成主从节点选举。
进一步地,主从节点选举模块执行如下主从节点选举操作:
判断当前分片所在的分片管理目录中是否有主节点,如果是,则当前分片为从节点,转入从节点处理模块处理,否则进入下一步;
判断当前分片所在的服务器中比当前分片小的分片是否有主节点,如果没有主节点,则当前分片为主节点,转入主节点处理模块处理,如果有则进入下一步;
判断当前分片是否是所在分片管理目录中最早注册的分片,如果是则当前分片为临时主节点,进入主节点处理模块处理,否则为从节点转入从节点处理模块处理。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

1.一种分布式服务器集群中主从节点选举方法,所述分布式服务器集群包括N个服务器,并做M个数据备份,其中M≤N,应用于所述服务器的当前分片,所述当前分片与协调管理系统交互选举出主从节点,其特征在于,所述协调管理系统设置有服务器管理目录、分片管理目录和主节点管理目录,所述主从节点选举方法包括步骤:
步骤1、当前分片向协调管理系统的服务器管理目录注册,并接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;
步骤2、在所在的服务器中所有分片都已经注册完成后,当前分片向协调管理系统对应的分片管理目录注册;
步骤3、根据所在服务器的所有分片的注册信息、所在分片管理目录中的分片注册信息,以及M、N的大小关系,当前分片确定自身为主节点或临时主节点或从节点,如果当前分片是主节点或者临时主节点,则进入下一步,否则转入步骤5;
步骤4、当前分片向协调管理系统主节点管理目录写入自身信息,并且在写入自身信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前分片删除所述临时主节点;
步骤5、在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将自身状态信息写入协调管理系统。
2.根据权利要求1所述的主从节点选举方法,其特征在于,所述M小于N,所述步骤3具体包括步骤:
步骤3.1、根据所在服务器的所有分片的注册信息,当前分片判断自身是否是主节点,如果是转入步骤4,否则进入步骤3.2;
步骤3.2、如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理目录中没有确定主节点,则当前分片为临时主节点,进入步骤4,否则当前分片为从节点,转入步骤5。
3.根据权利要求2所述的主从节点选举方法,其特征在于,所述根据所在服务器的所有分片的注册信息,当前分片判断自身是否是主节点,是按照如下主节点确定策略来判断:
对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+1,N),…,mod(n+M-1,N)共M个连续的分片,则服务器n中分片n为主节点。
4.根据权利要求1所述的主从节点选举方法,其特征在于,所述M等于N,所述步骤2在向协调管理系统对应的分片管理目录注册前,还需要等待分片名称比自身小的分片都已经完成主从节点选举。
5.根据权利要求4所述的主从节点选举方法,其特征在于,所述步骤3具体包括步骤:
步骤3.1)、当前分片判断所在的分片管理目录中是否有主节点,如果是,则当前分片为从节点,转入步骤5,否则进入步骤3.2);
步骤3.2)、当前分片判断所在的服务器中比自身小的分片是否有主节点,如果没有主节点,则当前分片为主节点,转入步骤4,如果有则进入步骤3.3);
步骤3.3)、判断自身是否是所在分片管理目录中最早注册的分片,如果是则当前分片为临时主节点,进入步骤4,否则为从节点转入步骤5。
6.一种分布式服务器集群中主从节点选举装置,所述分布式服务器集群包括N个服务器,并做M个数据备份,其中M≤N,所述主从节点选举装置应用于所述服务器的当前分片,所述主从节点选举装置与协调管理系统交互选举出主从节点,其特征在于,所述协调管理系统设置有服务器管理目录、分片管理目录和主节点管理目录,所述主从节点选举装置包括:
服务器管理目录注册模块,用于向协调管理系统的服务器管理目录注册,并接收协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;
分片管理目录注册模块,用于在当前分片所在的服务器中所有分片都已经注册完成后,向协调管理系统对应的分片管理目录注册;
主从节点选举模块,用于根据当前分片所在的服务器的所有分片的注册信息、所在分片管理目录中的分片注册信息,以及M、N的大小关系,确定当前分片为主节点或临时主节点或从节点,如果当前分片是主节点或者临时主节点,则进入主节点处理模块进行处理,否则进入从节点处理模块进行处理;
主节点处理模块,用于向协调管理系统主节点管理目录写入当前分片信息,并且在写入当前分片信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前分片删除所述临时主节点;并在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统;
从节点处理模块,用于在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统。
7.根据权利要求6所述的主从节点选举装置,其特征在于,所述M小于N,所述主从节点选举模块执行如下主从节点选举操作:
根据所在服务器的所有分片的注册信息,判断当前分片是否是主节点,如果是转入主节点处理模块处理,否则进入下一步;
如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理目录中没有确定主节点,则当前分片为临时主节点,进入主节点处理模块处理,否则当前分片为从节点,转入从节点处理模块处理。
8.根据权利要求7所述的主从节点选举装置,其特征在于,所述根据所在服务器的所有分片的注册信息,判断当前分片是否是主节点,是按照如下主节点确定策略来判断:
对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+1,N),…,mod(n+M-1,N)共M个连续的分片,则服务器n中分片n为主节点。
9.根据权利要求6所述的主从节点选举装置,其特征在于,所述M等于N,所述分片管理目录注册模块在向协调管理系统对应的分片管理目录注册前,还需要等待分片名称比当前分片小的分片都已经完成主从节点选举。
10.根据权利要求9所述的主从节点选举装置,其特征在于,所述主从节点选举模块执行如下主从节点选举操作:
判断当前分片所在的分片管理目录中是否有主节点,如果是,则当前分片为从节点,转入从节点处理模块处理,否则进入下一步;
判断当前分片所在的服务器中比当前分片小的分片是否有主节点,如果没有主节点,则当前分片为主节点,转入主节点处理模块处理,如果有则进入下一步;
判断当前分片是否是所在分片管理目录中最早注册的分片,如果是则当前分片为临时主节点,进入主节点处理模块处理,否则为从节点转入从节点处理模块处理。
CN201410369701.2A 2014-07-30 2014-07-30 一种分布式服务器集群中主从节点选举方法及装置 Active CN105338028B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410369701.2A CN105338028B (zh) 2014-07-30 2014-07-30 一种分布式服务器集群中主从节点选举方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410369701.2A CN105338028B (zh) 2014-07-30 2014-07-30 一种分布式服务器集群中主从节点选举方法及装置

Publications (2)

Publication Number Publication Date
CN105338028A CN105338028A (zh) 2016-02-17
CN105338028B true CN105338028B (zh) 2018-12-07

Family

ID=55288306

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410369701.2A Active CN105338028B (zh) 2014-07-30 2014-07-30 一种分布式服务器集群中主从节点选举方法及装置

Country Status (1)

Country Link
CN (1) CN105338028B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153594B (zh) * 2016-03-04 2020-03-17 福建天晴数码有限公司 分布式数据库系统的ha组件选主方法及其系统
CN106331098B (zh) * 2016-08-23 2020-01-21 东方网力科技股份有限公司 一种服务器集群系统
CN106559490B (zh) * 2016-11-24 2019-10-18 郑州云海信息技术有限公司 一种用于存储集群设备的管理方法
CN106993019B (zh) * 2016-11-29 2019-11-19 深圳壹账通智能科技有限公司 分布式任务调度方法和系统
CN107844328A (zh) * 2017-11-09 2018-03-27 郑州云海信息技术有限公司 一种服务器bios配置方法及系统
CN109933422A (zh) * 2017-12-19 2019-06-25 北京京东尚科信息技术有限公司 处理任务的方法、装置、介质及电子设备
CN109995835A (zh) * 2017-12-29 2019-07-09 浙江宇视科技有限公司 主节点选举方法、装置和分布式存储系统
CN110858168B (zh) * 2018-08-24 2023-08-18 浙江宇视科技有限公司 集群节点故障处理方法、装置及集群节点
CN111092921B (zh) * 2018-10-24 2022-05-10 北大方正集团有限公司 数据采集方法、装置及存储介质
CN109766222A (zh) * 2019-01-22 2019-05-17 郑州云海信息技术有限公司 一种实现web浏览器双机热备的方法及系统
CN111382141B (zh) * 2020-02-29 2023-05-26 平安科技(深圳)有限公司 主从架构配置方法、装置、设备以及计算机可读存储介质
CN113923222B (zh) * 2021-12-13 2022-05-31 云和恩墨(北京)信息技术有限公司 数据处理方法及装置
CN114301927B (zh) * 2021-12-28 2024-04-26 杭州安恒信息安全技术有限公司 一种分布式系统中主节点选取方法、装置及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025550A (zh) * 2010-12-20 2011-04-20 中兴通讯股份有限公司 一种分布式集群中数据管理的系统和方法
CN103118130A (zh) * 2013-02-25 2013-05-22 汉柏科技有限公司 一种用于分布式服务的集群管理方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8849977B2 (en) * 2012-03-09 2014-09-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and a control node in an overlay network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025550A (zh) * 2010-12-20 2011-04-20 中兴通讯股份有限公司 一种分布式集群中数据管理的系统和方法
CN103118130A (zh) * 2013-02-25 2013-05-22 汉柏科技有限公司 一种用于分布式服务的集群管理方法和系统

Also Published As

Publication number Publication date
CN105338028A (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
CN105338028B (zh) 一种分布式服务器集群中主从节点选举方法及装置
US11388043B2 (en) System and method for data replication using a single master failover protocol
US10929240B2 (en) System and method for adjusting membership of a data replication group
US11010358B2 (en) Data migration method and system
US8930312B1 (en) System and method for splitting a replicated data partition
CN106302702B (zh) 数据的分片存储方法、装置及系统
US8719225B1 (en) System and method for log conflict detection and resolution in a data store
US10445433B2 (en) Methods and systems of query engines and secondary indexes implemented in a distributed database
CN100484017C (zh) 网元管理系统中海量性能数据的统计方法
CN106936899B (zh) 分布式统计分析系统的配置方法及分布式统计分析系统
US20140108358A1 (en) System and method for supporting transient partition consistency in a distributed data grid
CN101771723A (zh) 数据同步方法
US9852220B1 (en) Distributed workflow management system
CN103488526A (zh) 在分布式系统中锁定业务资源的系统和方法
CN102594861A (zh) 一种多服务器负载均衡的云存储系统
CN106302709B (zh) 一种网络文件管理的实现方法和系统
CN107122271B (zh) 一种恢复节点事件的方法、装置及系统
US20140059315A1 (en) Computer system, data management method and data management program
WO2021057514A1 (zh) 任务调度方法、装置、计算机设备和计算机可读介质
CN104156367A (zh) 一种搜索引擎的扩容方法及搜索服务系统
CN113010496B (zh) 一种数据迁移方法、装置、设备和存储介质
US10148531B1 (en) Partitioned performance: adaptive predicted impact
US10142195B1 (en) Partitioned performance tracking core resource consumption independently
CN102710763A (zh) 一种分布式缓存池化、分片及故障转移的方法及系统
CN107038192B (zh) 数据库容灾方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant