一种分布式服务器集群中主从节点选举方法及装置的制造方法
【技术领域】
[0001] 本发明属于服务器负载均衡技术领域,尤其涉及一种分布式服务器集群中主从节 点选举方法及装置。
【背景技术】
[0002] 搜索引擎服务器作为一种可伸缩的、致力于信息检索的、可W处理海量信息的应 用服务器,在数据检索方面具有得天独厚的优势,能很好的弥补云存储数据库检索的不足。 但随着数据量的不断增长,单台搜索引擎服务器也很快达到了性能的瓶颈。送时候往往需 要使用分布式搜索引擎来满足大数据量的检索性能,分布式不但能将多台服务器的资源综 合利用,而且可W通过备份机制避免由于单个节点失效而影响数据查询结果的风险。分布 式搜索引擎往往使用主从模式实现数据的备份和容灾功能,如何均衡的利用每台搜索引擎 的性能并且如何实现容灾恢复策略,是分布式搜索引擎的关键。
[0003] 现有技术搜索引擎服务器在主从模式的选举上的方法主要是最早注册原则,各个 分片注册到协调管理系统,协调管理系统反馈当前分片是第几个注册到分片管理目录的, 当前分片判断自身是否是最早注册到分片管理目录的,如果是则将自身信息写入到协调管 理系统的主节点管理目录下,成为主节点。其中,协调管理系统往往选择ZOOkeeper来实现 协调功能,ZOOkeeper作为hadoop的子项目为分布式系统提供可靠地协调功能,如提供包 括配置维护、分布式同步、事件触发等功能,是当前分布式系统最常用的协调管理系统。
[0004] 现有技术的主要缺点是主从节点分配不合理,往往会出现一台服务器A存在多个 主节点,而另一台服务器B存在多个从节点的情况。当用户进行查询时集群只会向主节点 发送查询请求,导致服务器A需要完成多个分片的查询工作,而另一台服务器B处于完全空 闲的状态。查询性能不均衡。
[0005] 送主要是由于W下两个原因导致的:
[0006] 第一、因为每个分片的注册线程是完全独立的,每台服务器上有多个不同的分片 需要注册,而由于服务器的启动速度和网络情况都不相同,往往会出现一台服务器上的多 个分片都首先注册到ZOOkeeper的分片管理目录下而成为主节点,而注册速度较慢的服务 器上的分片都会成为从节点。
[0007] 第二、即使首次创建时主节点的分配是均衡的,假设每台服务器上有一个主节点 和一个从节点,但是当某个服务器出现若机情况时,该服务器上的主节点会被其他服务器 上的从节点取代,等到若机的服务器重新上线时,曾经的主节点也会成为从节点,导致负载 不均衡情况的出现。
【发明内容】
[0008] 本发明的目的是提供一种分布式服务器集群中主从节点选举方法及装置,用于服 务器的当前分片与协调管理系统交互选举出主从节点,实现性能负载均衡和容灾恢复。
[0009] 为了实现上述目的,本发明技术方案如下:
[0010] 一种分布式服务器集群中主从节点选举方法,所述分布式服务器集群包括N个服 务器,并做M个数据备份,用于所述服务器的当前分片,所述当前分片与协调管理系统交互 选举出主从节点,所述协调管理系统设置有服务器管理目录、分片管理目录和主节点管理 目录,所述主从节点选举方法包括步骤:
[0011]步骤1、当前分片向协调管理系统的服务器管理目录注册,并接收协调管理系统返 回的当前分片所在的服务器中所有分片的注册信息;
[0012] 步骤2、在所在的服务器中所有分片都已经注册完成后,当前分片向协调管理系统 对应的分片管理目录注册;
[0013] 步骤3、根据所在的服务器的所有分片的注册信息、所在分片管理目录中的分片注 册信息,W及M、N的大小关系,当前分片确定自身为主节点或临时主节点或从节点,如果当 前分片是主节点或者临时主节点,则进入下一步,否则转入步骤5;
[0014] 步骤4、当前分片向协调管理系统主节点管理目录写入自身信息,并且在写入自身 信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前分片删除所述临 时主节点;
[0015] 步骤5、在主节点或临时主节点完成向主节点管理目录写入后,当前分片绑定对应 主节点管理目录下的节点信息,并将自身状态信息写入协调管理系统。
[0016] 本发明的一种情况,当所述M小于N时,所述步骤3具体包括步骤:
[0017] 步骤3. 1、根据所在服务器的所有分片的注册信息,当前分片判断自身是否是主节 点,如果是转入步骤4,否则进入步骤3. 2;
[0018] 步骤3. 2、如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理 目录中没有确定主节点,则当前分片为临时主节点,进入步骤4,否则当前分片为从节点,转 入步骤5。
[0019] 其中,所述根据所在服务器的所有分片的注册信息,当前分片判断自身是否是主 节点,是按照如下主节点确定策略来判断:
[0020] 对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+l,脚,…, mod(n+M-l,脚共M个连续的分片,则服务器n中分片n为主节点。mod(a,b)为余数函数, 表示a除Wb的余数。
[0021] 本发明采用的主节点确定策略,设定服务器分片链表里特定位置的分片为主节 点,能够使得当前分片在根据自身信息W及服务器数量和备份数量的情况下,根据服务器 的分片链表判断出自身是否是主节点。有力的保证了各服务器之间的负载均衡,使主节点 分布在不同的服务器上。
[0022] 本发明的另一种情况,所述M等于N时,所述步骤2在向协调管理系统对应的分片 管理目录注册前,还需要等待比自身小的分片都已经完成主从节点选举。
[0023] 进一步地,所述步骤3具体包括步骤:
[0024] 步骤3.1)、当前分片判断所在的分片管理目录中是否有主节点,如果是,则当前分 片为从节点,转入步骤5,否则进入步骤3.2);
[0025] 步骤3. 2)、当前分片判断所在的服务器中比自身小的分片是否有主节点,如果没 有主节点,则当前分片为主节点,转入步骤4,如果有则进入步骤3.3);
[0026] 步骤3. 3)、判断自身是否是所在分片管理目录中最早注册的分片,如果是则当前 分片为临时主节点,进入步骤4,否则为从节点转入步骤5
[0027] 在M=N时,各分片按名称大小顺序依次进行注册选举,并根据每个分片的注册顺 序W及该服务器中其他先注册的分片的主从情况来确定自身是否为主节点。也可W实现各 服务器之间的负载均衡,使主节点分布在不同的服务器上。
[0028] 本发明还提出了一种分布式服务器集群中主从节点选举装置,所述分布式服务器 集群包括N个服务器,并做M个数据备份,所述主从节点选举装置应用于所述服务器的当前 分片,所述主从节点选举装置与协调管理系统交互选举出主从节点,所述协调管理系统设 置有服务器管理目录、分片管理目录和主节点管理目录,所述主从节点选举装置包括:
[0029] 服务器管理目录注册模块,用于向协调管理系统的服务器管理目录注册,并接收 协调管理系统返回的当前分片所在的服务器中所有分片的注册信息;
[0030] 分片管理目录注册模块,用于在当前分片所在的服务器中所有分片都已经注册完 成后,向协调管理系统对应的分片管理目录注册;
[0031] 主从节点选举模块,用于根据当前分片所在的服务器的所有分片的注册信息、所 在分片管理目录中的分片注册信息,W及M、N的大小关系,确定当前分片为主节点或临时 主节点或从节点,如果当前分片是主节点或者临时主节点,则进入主节点处理模块进行处 理,否则进入从节点处理模块进行处理;
[0032] 主节点处理模块,用于向协调管理系统主节点管理目录写入当前分片信息,并且 在写入当前分片信息之前,如果所述协调管理系统主节点管理目录下有临时主节点,当前 分片删除所述临时主节点;并在主节点或临时主节点完成向主节点管理目录写入后,当前 分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系统;
[0033] 从节点处理模块,用于在主节点或临时主节点完成向主节点管理目录写入后,当 前分片绑定对应主节点管理目录下的节点信息,并将当前分片状态信息写入协调管理系 统。
[0034] 当所述M小于N时,所述主从节点选举模块执行如下主从节点选举操作:
[0035] 根据所在服务器的所有分片的注册信息,判断当前分片是否是主节点,如果是转 入主节点处理模块处理,否则进入下一步;
[0036] 如果当前分片是所在分片管理目录中最早注册的分片且所在分片管理目录中没 有确定主节点,则当前分片为临时主节点,进入主节点处理模块处理,否则当前分片为从节 点,转入从节点处理模块处理。
[0037] 进一步地,所述根据所在服务器的所有分片的注册信息,当前分片判断当前分片 是否是主节点,是按照如下主节点确定策略来判断:
[0038] 对于当前分片所在的服务器n,该服务器n挂载有分片n,mod(n+l,脚,…, mod(n+M-1,脚共M个连续的分片,则服