CN104702691A - 分布式负载均衡方法和装置 - Google Patents
分布式负载均衡方法和装置 Download PDFInfo
- Publication number
- CN104702691A CN104702691A CN201510112774.8A CN201510112774A CN104702691A CN 104702691 A CN104702691 A CN 104702691A CN 201510112774 A CN201510112774 A CN 201510112774A CN 104702691 A CN104702691 A CN 104702691A
- Authority
- CN
- China
- Prior art keywords
- node
- district
- main partition
- nodes
- subregion
- 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.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分布式负载均衡方法和装置。该分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区,该方法包括:在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;将该多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得该第二类节点中任意两个节点上该第一备分区个数之差都小于第二预定阈值,其中,该第二类节点为该第一主分区中第一类节点以外的节点,该第一类节点为该第一主分区所在的节点,或该第一主分区所在的节点所属的分组的节点;将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上。
Description
技术领域
本发明实施例涉及计算机领域,并且更具体地,涉及分布式负载均衡方法和装置。
背景技术
分布式系统中可以提供更为强大的处理能力,但是如果分布式系统的一个集群出现了负载不均衡的问题,那么负载最大的机器将成为影响系统整体表现的瓶颈和短板,称为单点瓶颈。为了避免单点瓶颈,必须保证分布式系统的动态负载均衡,以达到最大限度的提高资源利用率,从而提升整个分布式系统的处理能力。
负载不均匀包括数据不均匀和流量不均衡。在通常情况下,热点数据虽然因为访问频率较高对负载的贡献率相对较大,但是热点数据的占比通常较低,相反所有非热点数据对整个节点负载的贡献率总和相对较高。所以在通常情况下只要保证数据在整个集群中的所有节点上均匀分布,就可以做到分布式集群的负载均衡。
分布式系统中的数据可以分成多个数据分片,每个数据分片称为一个分区。分布式系统中的一个节点可以拥有一个或多个分区。为了提高系统的可靠性和容错性,分布式系统往往会存储一份数据的多个副本,其中一个为主副本,其他为备副本,由主副本对外提供服务。为最大限度利用服务器资源,集群的每个节点上都有部分主分区和部分备分区,不提供专门的节点只做数据备份。分布式系统的负载均衡问题就转化为所有主分区和备分区在集群节点上均匀分布的问题。
分布式系统除了提供更强的处理能力,还需要能够弹性扩展和具有高可靠性。弹性扩展的能力就是集群可以灵活的scale-out(扩容)和scale-in(缩容),高可靠性的基本要求就是要保证集群没有单点故障。一个好的分布式系统,不仅要能处理节点扩容、缩容和节点故障等场景,同时需要保证扩容、缩容和节点故障后整个系统也能负载均衡,正常的提供服务。
开源内存网格hazelcast提供了一种分布式系统中节点个数发生变化时的负载均衡方法。将分布式集群上数据的哈希空间分成多个等份,每一份就是一个分区,每个分区都有多个副本。分配主分区时,先采用Round-Robin方式将所有未分配的主分区分配到所有节点上,再从负载重的节点上移出多余主分区到负载低的节点上,达到主分区的均匀分布。分配备分区时,方法类似,不同之处在于需要先判断当前节点上是否已经存在该备分区对应的主分区。如果已经存在,则需要将备分区分配到其他节点上。这个过程只是重新计算分区分布,不做数据迁移。新的分区分布计算完成后,与老的分区分布进行对比就可以知道哪些分区存储的节点位置发生了,对这些分区进行数据迁移,就可以使集群重新负载均衡。
现有方案单点故障后数据负载将被多个节点分担,但是比较难保证数据负载被其他节点完全均匀分担,可能造成负载不均衡。当集群单点故障或缩容后,为保证数据均匀分布,需要重新调整主分区在各个节点上的分布情况,存在大量数据迁移操作。
发明内容
本发明实施例提供一种分布式负载均衡方法和分布式负载均衡装置,能够集群单点故障或缩容后,尽可能减少节点间的数据迁移操作,提高集群处理故障或缩容的效率。
第一方面,提供了一种分布式负载均衡方法,应用于分布式系统,该分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区,该方法包括:在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;将该多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得该第二类节点中任意两个节点上该第一备分区个数之差都小于第二预定阈值,其中,该第二类节点为该第一主分区中第一类节点以外的节点,该第一类节点为该第一主分区所在的节点,或该第一主分区所在的节点所属的分组的节点;将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上,其中,该高负载节点的分区个数大于第三预定阈值,该低负载节点的分区个数小于第四预定阈值。
结合第一方面,在第一种可能的实现方式中,将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上具体实现为:获取该第一备分区所分配的节点集合;将该节点集合分别与该第一主分区的所有第二类节点中该高负载节点的集合及该低负载节点的集合求交集,其中该节点集合与该高负载节点的集合的交集为第一交集,该节点集合与该低负载节点的集合的交集为第二交集;如果该第一交集中的第一节点存在该第一备分区,且该第二交集中的第二节点不存在该第一备分区,则将该第一备分区从该第一节点移动到该第二节点中。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,该方法还包括:如果该多个节点上的分区分布仍然不均衡,则将该多个节点中该高负载节点的备分区移动到该多个节点中的该低负载节点。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,该方法还包括:当该分布式系统的集群扩容时,确定扩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,该方法还包括:当该分布式系统的集群缩容时,确定缩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,该方法还包括:当该分布式系统的集群故障时,根据第二主分区在该多个节点中非故障节点对应的备分区分布,以及该多个节点中非故障节点的主分区分布,确定该多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于该第一预定阈值,其中,该第二主分区为该多个节点中故障节点的主分区,该第二备分区为该第二主分区对应的备分区;将该第二备分区升级为主分区;将该故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
第二方面,提供了一种分布式负载均衡装置,应用于分布式系统,该分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区,该装置包括:第一分配单元,用于在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;第二分配单元,用于将将该多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得该第二类节点中任意两个节点上该第一备分区个数之差都小于第二预定阈值,其中,该第二类节点为该第一主分区中第一类节点以外的节点,该第一类节点为该第一主分区所在的节点,或该第一主分区所在的节点所属的分组的节点;备分区移动单元,用于将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上,其中,该高负载节点的分区个数大于第三预定阈值,该低负载节点的分区个数小于第四预定阈值。
结合第二方面,在第一种可能的实现方式中,该备分区移动单元具体用于:获取该第一备分区所分配的节点集合;将该节点集合分别与该第一主分区的所有第二类节点中该高负载节点的集合及该低负载节点的集合求交集,其中该节点集合与该高负载节点的集合的交集为第一交集,该节点集合与该低负载节点的集合的交集为第二交集;如果该第一交集中的第一节点存在该第一备分区,且该第二交集中的第二节点不存在该第一备分区,则将该第一备分区从该第一节点移动到该第二节点中。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,该备分区移动单元还用于如果该多个节点上的分区分布仍然不均衡,则将该多个节点中该高负载节点的备分区移动到该多个节点中的该低负载节点。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,该装置还包括:第一确定单元和第二确定单元,其中,该第一确定单元用于当该分布式系统的集群扩容时,确定扩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;该第二确定单元用于根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;该备分区移动单元还用于将该所有待迁移分区迁移到对应的目的节点。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,该装置还包括:第三确定单元和第四确定单元,其中,该第三确定单元用于当该分布式系统的集群扩容时,确定缩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;该第四确定单元用于根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;该备分区移动单元还用于将该所有待迁移分区迁移到对应的目的节点。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,该装置还包括:第五确定单元、分区升级单元、第六确定单元及第七确定单元,其中,该第五确定单元用于当该分布式系统的集群故障时,根据第二主分区在该多个节点中非故障节点对应的备分区分布,以及该多个节点中非故障节点的主分区分布,确定该多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于该第一预定阈值,其中,该第二主分区为该多个节点中故障节点的主分区,该第二备分区为该第二主分区对应的备分区;该分区升级单元用于将该第二备分区升级为主分区;该第六确定单元用于将该故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;该第七确定单元用于根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;该备分区移动单元还用于将该所有待迁移分区迁移到对应的目的节点。
基于以上技术方案,本发明实施例的分布式负载均衡方法和装置,通过均匀分配主分区,再均匀分配主分区的备分区,然后在高负载节点和低负载节点实现备分区的均匀分布,从而使得分布式系统能够在发生单点故障或缩容时能够尽可能地减少数据迁移操作。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是有总控节点的分布式系统架构图。
图2是本发明实施例分布式负载均衡方法示意图。
图3示是本发明实施例分布式负载均衡方法实例图。
图4是本发明实施例分布式负载均衡装置的结构示意图。
图5是本发明实施例分布式负载均衡装置的另一结构示意图。
图6是本发明实施例分布式负载均衡装置的再一结构示意图。
图7是本发明实施例分布式负载均衡装置的再一结构示意图。
图8是本发明实施例分布式负载均衡装置的再一结构示意图。
图9是本发明实施例分布式负载均衡装置的再一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有分布式系统中,以总控节点的有无来区分的话,一般有两种架构。一种架构中,分布式系统可包括客户端、存储节点和总控节点。另一种架构中,分布式系统可包括客户端和存储节点。
图1是有总控节点的分布式系统架构图。如图1所示,分布式系统包括客户端、存储节点和总控节点。
客户端接收外部系统的数据访问请求,同时访问存储节点上对数据。总控节点存储元数据信息、节点列表和数据分布信息。存储节点上存储分布式系统的数据。
客户端一般提供多种访问接口给外部系统访问分布式系统,进行数据访问需要先从总控节点读取元数据信息和数据分布信息,通常会将这些信息缓存到本地。当元数据信息和数据分布信息变化时,会重新拉去最新当信息。
总控节点里面记录了集群当前当状态、整个集群的节点列表以及各个分区里面的数据组织情况。总控节点一般有多个,里面存储的信息完全一致。总控同时还负责定制分布策略和集群管理。当集群当存储节点个数发生变化或者有节点故障时,总控节点需要进行相关处理,同时需要重新定义数据分布,进行负载均衡。在进行负载均衡时,常常会进行数据迁移,迁移的整个调度一般由总控发起。
存储节点按照总控节点指定的分区策略来存放各个分区的数据。为保证高可靠性,一般一个分区有多个副本,这些副本至少会存放在二个存储节点上,保证当一个存储节点故障后,整个分区还有其他存储节点上有副本。
在另一种没有总控节点的分布式系统架构中,没有总控节点,通过在所有存储节点中选举出一个主(master)节点来完成总控的功能。在这种P2P系统中,元数据信息要么在所有节点上都有完整都一份,要么每个节点都有一部分元数据信息。集群管理、元数据管理和负载均衡等操作都由最终选举出来都master节点来完成。
图2是本发明实施例分布式负载均衡方法示意图。图2的方法应用于分布式系统,由分布式负载均衡装置执行。分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区,如图2所示,该方法可包括:
201,在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值。
具体地,在该多个节点上分配主分区时,应使得该多个节点中的任意两个节点的主分区个数之差不大于该第一预定阈值K1,其中,K1为正整数。为使得节点上的主分区尽可能的均匀分布,K1的取值越小越好。优选地,K1取值1,此时,该多个节点中任意两个节点上的主分区个数之差不大于1。
例如,集群中共有4个节点(节点1、节点2、节点3和节点4),共有3个主分区。分配结果为:节点1、节点2、节点3各分配1个主分区,节点4分配0个主分区。此时,任意两个节点的主分区个数之差最多为1。
202,将该多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得该第二类节点中任意两个节点上该第一备分区个数之差都小于第二预定阈值。
其中,该第二类节点为该第一主分区中第一类节点以外的节点,该第一类节点为该第一主分区所在的节点,或该第一主分区所在的节点所属的分组的节点。
具体地,在将主分区的所有备分区均匀分配到主分区的第二类节点上时,应使得主分区的第二类节点中的任意两个节点上该主分区的备分区个数之差不大于K2,K2为正整数。同理,为使得主分区的备分区尽可能地均匀分布,K2的取值越小越好。优选地,K2取值为1。
本发明的一个实施例,主分区的第一类节点为该主分区所在的节点。例如,节点1上的主分区1有2个备分区。此时,可给节点2、节点3各分配1个备分区。或者,例如,节点1上的主分区1有5个备分区。此时,可给节点2、节点3各分配2个备分区,节点4分配1个备分区。
本发明的另一个实施例,主分区的第一类节点为该主分区所在的节点所属的组。不妨假设节点1和节点2为一组,节点3和节点4为另一组。假设节点1上的主分区1有2个备分区,此时,可给节点3、节点4各分配1个备分区。或者,假设,节点1上的主分区1有5个备分区,此时,可给节点3分配2个备分区,节点4分配3个备分区,等等。
当对每个主分区都执行完步骤202后,将使得每个主分区的备分区在各个节点上分布均衡。
203,将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上。
其中,该高负载节点的分区个数大于第三预定阈值,该低负载节点的分区个数小于第四预定阈值。
当对每个主分区都执行完步骤203后,能够使得该多个节点的备分区尽可能的均匀分布。
应理解,该多个节点中,会存在高负载节点和低负载节点。步骤203中,对每个主分区而言,只在该主分区的第二类节点中将高负载节点移动到低负载节点。
本发明实施例中,通过均匀分配主分区,再均匀分配主分区的备分区,然后在高负载节点和低负载节点实现备分区的均匀分布,从而使得分布式系统能够在发生单点故障或缩容时能够尽可能地减少数据迁移操作。
可选地,步骤203具体可实现为:获取该第一备分区所分配的节点集合;将该节点集合分别与该第一主分区的所有第二类节点中该高负载节点的集合及该低负载节点的集合求交集,其中该节点集合与该高负载节点的集合的交集为第一交集,该节点集合与该低负载节点的集合的交集为第二交集;如果该第一交集中的第一节点存在该第一备分区,且该第二交集中的第二节点不存在该第一备分区,则将该第一备分区从该第一节点移动到该第二节点中。
可选地,该方法还包括:如果该多个节点上的分区分布仍然不均衡,则将该多个节点中该高负载节点的备分区移动到该多个节点中的该低负载节点。
可选地,作为一个实施例,该方法还包括:当该分布式系统的集群扩容时,确定扩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
具体地,在实现各个节点的主分区、备分区负载均衡时,可将扩容前的节点当作高负载节点,将新扩容的节点当作低负载节点,然后对各个节点进行主分区、备分区负载均衡。实现负载均衡的具体方式可参考步骤201至203,或采用其它方式,本发明实施例在此不再赘述。
可选地,作为另一个实施例,该方法还包括:当该分布式系统的集群扩容时,确定缩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
具体地,在实现各个节点的主分区、备分区负载均衡时,可将该多个节点中的缩容节点上的主分区当作未分配主分区,并将该缩容节点上的备分区当作未分配备分区,分配所有未分配的主分区和备分区,然后实现各个节点的主分区、备分区负载均衡。实现负载均衡的具体方式可参考步骤201至203,或采用其它方式,本发明实施例在此不再赘述。
可选地,作为另一个实施例,该方法还包括:当该分布式系统的集群故障时,根据第二主分区在该多个节点中非故障节点对应的备分区分布,以及该多个节点中非故障节点的主分区分布,确定该多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于该第一预定阈值,其中,该第二主分区为该多个节点中故障节点的主分区,该第二备分区为该第二主分区对应的备分区;将该第二备分区升级为主分区;将该故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
具体地,在实现各个节点的主分区、备分区负载均衡时,可将该故障节点中的所有主分区和备分区当作未分配备分区,然后将未分配备分区分配到各个节点上。当然,由于故障节点上的数据无法拷贝。此时可将其它节点上对应的主分区或备分区当作该未分配备分区的数据来源。分配未分配备分区的具体方式可参考步骤202的方法。分配完毕后,可参考步骤203的方法实现负载均衡,或者采用其它方式实现负载均衡。
下面,将结合具体的实施例,对本发明实施例的方法作进一步的描述。为方便描述,以总控节点的分布式系统为例。当然,如果应用场景为没有总控节点的分布式系统,则下述实施例的总控节点执行的方法可以由没有总控节点的分布式系统中的master节点执行。
实施例1:
分布式系统第一次启动时分区首次分配操作步骤:
(1)初始情况下,将所有主分区打乱顺序后放入一个队列中,将所有存储节点也放在一个队列中排列;
(2)从分区队列中每次取出一个主分区,轮流分配给所有节点;
(3)重复步骤(2)直到所有主分区都被分配。最终所有节点的主分区个数最多相差1,达到主分区在所有节点上均衡分布;
(4)对于所有存储节点,采用同样方法分配该节点上的主分区对应的所有备分区给除了本节点外(或本节点所在组之外)的其他所有存储节点,达到该节点上面所有主分区对应的备分区都在其他节点上均匀分布;
(5)遍历所有存储节点,计算可调整分区的个数,每个节点可调整分区的个数最多为N-1(N为集群存储节点个数)。因为其他N-1个节点对应的备分区进行分配时,节点每次最多分得一个可调整分区。
(6)在集群的所有存储节点间移动可调整分区,达到各个节点可调整分区的均衡。每次移动可调整分区时,都保证每个节点上面的主分区所对应都备分区都在其他节点(或节点组)中均匀分布。移动可调整分区的规则是:
a.计算所有节点备分区个数的平均值,将大于平均值的节点记为备分区高负载节点,小于平均值的节点记为备分区低负载节点。当然,应理解,也可以设定阈值Max1和Min1,将大于Max1的节点称为备分区高负载节点,小于Min1的节点称为备分区低负载节点。
b.对于集群中的任一个节点,找到该节点的主分区对应的备分区所分配到的所有节点。先将这些节点组成的集合A分别与上一步的备分区高负载节点集合B和备分区低负载节点集合C求交集,不妨将A与B的交集记为D,A与C的交集记为E。如果D中的节点d1存在当前节点的可调整分区,且E中的节点e1不存在当前节点的调整分区,则将对应的可调整分区从d1移动到e1,直至D中每个节点都不存在当前节点的可调整分区,或E中每个节点都已经存在当前节点的调整分区。重复这个过程,让可调整分区尽量都放在负载轻的节点中。
当然,也可以通过计算各个节点上所有分区(包括主分区和备分区)的个数平均值,将大于平均值的节点记为高负载节点,小于平均值的节点记为低负载节点,然后在高负载节点和低负载节点之间移动可调整分区,调整的方式可参考步骤(6)下面的步骤b。
(7)如果是对称情况,即整个集群中每个组中的节点个数一样的,分布完成。因为在对称情况下,移动可调整分区就可以实现备分区在所有节点上均匀分布。
(8)调节各个节点的备分区个数让所有备分区在整个集群上均匀分布。基本方法是:
a.计算所有节点中备分区的个数,并根据总的备分区个数和总的节点个数计算每个节点应该承担的备分区的平均值(向下取整)。备分区个数大于平均值的节点称为备分区高负载节点,放入备分区高负载节点列表中;备分区个数小于平均值的节点称为备分区低负载节点,放入备分区低负载节点列表中。类似地,也可以设定阈值Max2和Min2,将大于Max2的节点称为备分区高负载节点,小于Min2的节点称为备分区低负载节点。
b.从备分区高负载节点和备分区低负载节点的二个节点列表中分别选择一个节点进行分区重新分布。方法是:从高负载的节点中每次拿出一个分区分配到备分区低负载节点中,此时需要判断备分区低负载节点中是否已经有该分区。如果已经有了,就需要从备分区高负载节点中重新拿出另外一个分区进行分配,否则,就将分区分配过去。重复以上过程,直到备分区高负载节点中的多余分区已经全部分配或者备分区低负载节点已经得到足够的分区。
c.如果备分区高负载节点还有分区可以分配,则重新选择一个备分区低负载节点;否则,重新选择一个备分区高负载节点。重复以上过程,直到备分区低负载节点得到应该获取的所有分区。
类似地,也可以通过计算各个节点上所有分区(包括主分区和备分区)的个数平均值,将大于平均值的节点记为高负载节点,小于平均值的节点记为低负载节点,然后在高负载节点和低负载节点之间进行分区重新分布,调整的方式可参考步骤(8)下面的步骤b。
图3是本发明实施例可调整分区移动方法示意图。如图3所示,4个节点的平均分区个数为7.5个,分区节点1和节点2为高负载节点,节点3和节点4为低负载节点。分区调整前,节点1可调整分区数为2,节点2可调整分区数为1,节点3可调整分区数为0,节点4可调整分区数为0。此时,可对节点1进行调整,将备分区5移动到节点3。分区调整后,节点1可调整分区数为1,节点2可调整分区数为1,节点3可调整分区数为1,节点4可调整分区数为0。
本发明实施例中,通过均匀分配主分区,再均匀分配主分区的备分区,然后在高负载节点和低负载节点实现备分区的均匀分布,从而使得分布式系统能够在发生单点故障或缩容时能够尽可能地减少数据迁移操作。
实施例2:
分布式系统scale-out操作进行负载均衡的步骤:
(9)计算所有节点中主分区的个数,并根据总的主分区个数和总的节点个数计算每个节点应该承担的主分区的平均值(向下取整)。主分区个数大于平均值的节点称为主分区高负载节点,放入主分区高负载节点列表中;主分区个数小于平均值的节点称为主分区低负载节点,放入主分区低负载节点列表中。一种简单的方式,scale-out前的所有存储节点都是主分区高负载节点,scale-out新增的节点都是主分区低负载节点。
(10)从主分区高负载节点中移出多余的主分区到负载轻到节点中,让所有主分区在集群的节点上均匀分布。
(11)对于所有存储节点,采用同样方法让该节点上面所有主分区对应的备分区都在其他节点上均匀分布。
(12)参考步骤(5)(6)(7)(8)的方法,让所有备分区也在集群的所有节点上均匀分布,从而得到新的分区分布。当然,此时也可采用其它负载均衡的方法。
(13)对比新旧分区分布信息,计算出一张迁移表。迁移表里面记录主备分区所来在哪个节点上,后面需要被迁移到哪个节点上。
(14)总控节点根据迁移表发起数据迁移,数据迁移完后,整个集群就达到负载均衡。
实施例3:
分布式系统scale-in多个节点或多个组操作进行负载均衡的步骤:
(15)在总控节点的分区分布信息中将scale-in删掉的节点上面的主备分区标记为未分配。
(16)根据当前保留节点的主分区个数,将所有未分配主分区均匀地分配给集群的所有节点,使得所有节点上的主分区仍然均匀分布。具体地,可参考步骤(2)、(3)中的方法,从未分配的分区队列中每次取出一个主分区,轮流分配给所有节点轮流,并优先分配给主分区个数较少的节点,直至所有主分区都被分配。最终所有节点的主分区个数最多相差1,达到主分区在所有节点上均衡分布。当然,此时也可采用其它负载均衡的分配方法。
(17)采用同样方法分配未分配备分区,让所有节点对应的备分区在整个集群的其他节点上均匀分布。
(18)参考步骤(12)(13)(14)的方法,完成负载均衡操作。当然,此时也可采用其它负载均衡的分配方法。
实施例4:
分布式系统单个节点(或组)故障进行负载均衡步骤:
(19)故障节点上面的主分区对应的备分区都在其他节点上。根据正常节点(故障节点以外的节点)上主分区分布,以及故障节点的主分区在正常节点的备分区分布,将故障节点的每个主分区选择一个对应的备分区进行备升主的操作,使得完成之后,整个集群的主分区没有丢失,且所有主分区都在所有节点上均匀分布。图4是本发明实施例节点故障后进行负载均衡的调整方法示意图。图4中,节点4为故障节点。此时,首先需要将节点上的主分区13、14、15分别选择一个对应的备分区进行升级,且要保证升级后所有正常节点(故障节点以外的节点,图4中为节点1、2、3)的主分区均匀分布。如图4所示,可确定要升级为主分区的备分区为节点1的备分区13、节点2的备分区15及节点3的备分区14,然后将这些备分区升级为主分区。此时每个正常节点的主分区个数都为5个。
(20)此时,新增的主分区每个都缺少一个备分区,同时集群中还缺少故障节点的备分区。可将这些分区当作未分配备分区,让所有节点对应的备分区在整个集群的其他节点上均匀分布,备分区的拷贝来源可以是其它节点上的相同的备分区或对应的主分区。以图4为例,计有备分区13、14、15、8、4、12共6个备分区未分配,可将备分区8、14分配给节点1,将备分区12、13分配给节点2,将备分区4、15分配给节点3。
(21)参考步骤(12)(13)(14)的方法,完成负载均衡操作。
图5是本发明实施例负载均衡装置500的结构示意图。负载均衡装置500应用于分布式系统,该分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区。负载均衡装置500可包括:第一分配单元501、第二分配单元502和备分区移动单元503,其中,
第一分配单元501,用于在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值。
具体地,第一分配单元501在该多个节点上分配主分区时,应使得该多个节点中的任意两个节点的主分区个数之差不大于该第一预定阈值K1,其中,K1为正整数。为使得节点上的主分区尽可能的均匀分布,K1的取值越小越好。优选地,K1取值1,此时,该多个节点中任意两个节点上的主分区个数之差不大于1。
第二分配单元502,用于将将该多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得该第二类节点中任意两个节点上该第一备分区个数之差都小于第二预定阈值。
其中,该第二类节点为该第一主分区中第一类节点以外的节点,该第一类节点为该第一主分区所在的节点,或该第一主分区所在的节点所属的分组的节点。
具体地,第二分配单元502在将主分区的所有备分区均匀分配到主分区的第二类节点上时,应使得主分区的第二类节点中的任意两个节点上该主分区的备分区个数之差不大于K2,K2为正整数。同理,为使得主分区的备分区尽可能地均匀分布,K2的取值越小越好。优选地,K2取值为1。
备分区移动单元503,用于将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上。
其中,该高负载节点的分区个数大于第三预定阈值,该低负载节点的分区个数小于第四预定阈值。
具体地,对每个主分区,备分区移动单元503在该主分区的第二类节点中将该主分区的备分区从高负载节点移动到低负载节点,能够使得该多个节点的备分区尽可能的均匀分布。
本发明实施例中,负载均衡装置500通过均匀分配主分区,再均匀分配主分区的备分区,然后在高负载节点和低负载节点实现备分区的均匀分布,从而使得分布式系统能够在发生单点故障或缩容时能够尽可能地减少数据迁移操作。
可选地,备分区移动单元503具体用于:获取该第一备分区所分配的节点集合;将该节点集合分别与该第一主分区的所有第二类节点中该高负载节点的集合及该低负载节点的集合求交集,其中该节点集合与该高负载节点的集合的交集为第一交集,该节点集合与该低负载节点的集合的交集为第二交集;如果该第一交集中的第一节点存在该第一备分区,且该第二交集中的第二节点不存在该第一备分区,则将该第一备分区从该第一节点移动到该第二节点中。
可选地,备分区移动单元503还用于如果该多个节点上的分区分布仍然不均衡,则将该多个节点中该高负载节点的备分区移动到该多个节点中的该低负载节点。当调整完集群上所有节点上的可调整的备分区后,如果备分区在集群上的节点分布仍然不均匀,备分区移动单元503还可进一步均衡各个节点上的备分区,使得备分区在各个节点上均匀分布。
可选地,作为一个实施例,如图6所示,负载均衡装置500还包括:第一确定单元504和第二确定单元505。其中,第一确定单元504用于当该分布式系统的集群扩容时,确定扩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;第二确定单元505用于根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;备分区移动单元503还用于将所述所有待迁移分区迁移到对应的目的节点。
可选地,作为一个实施例,如图7所示,负载均衡装置500还包括:第三确定单元506和第四确定单元507。其中,第三确定单元506用于当该分布式系统的集群缩容时,确定缩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;第四确定单元507用于根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;备分区移动单元503还用于将该所有待迁移分区迁移到对应的目的节点。当备分区移动单元503移动完毕后,负载均衡装置500可将缩容节点从集群中移除。
可选地,作为一个实施例,如图8所示,负载均衡装置500还包括:第五确定单元508、分区升级单元509、第六确定单元510及第七确定单元511。其中,第五确定单元508用于当该分布式系统的集群故障时,根据第二主分区在该多个节点中非故障节点对应的备分区分布,以及该多个节点中非故障节点的主分区分布,确定该多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于该第一预定阈值,其中,该第二主分区为该多个节点中故障节点的主分区,该第二备分区为该第二主分区对应的备分区;分区升级单元509用于将该第二备分区升级为主分区;第六确定单元510用于将该故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;第七确定单元511用于根据调整前后各个节点的主分区及备分区信息确定该各个节点上的所有待迁移分区及对应的目的节点;备分区移动单元503还用于将该所有待迁移分区迁移到对应的目的节点。
此外,负载均衡装置500还可执行图2的方法,并实现负载均衡装置500在图2所示实施例的功能及实施例1-4的方法,本发明实施例在此不再赘述。
图9是本发明实施例负载均衡装置900的结构示意图。负载均衡装置900可包括通道接口901、处理器902和存储器903。该负载均衡装置900应用于分布式系统,该分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区。
通道接口901、处理器902和存储器903通过总线904系统相互连接。总线904可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器903,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器903可以包括只读存储器和随机存取存储器,并向处理器902提供指令和数据。存储器903可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器902,执行存储器903所存放的程序,并具体用于执行以下操作:
在该多个节点上分配该多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;
将该多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得该第二类节点中任意两个节点上该第一备分区个数之差都小于第二预定阈值,其中,该第二类节点为该第一主分区中第一类节点以外的节点,该第一类节点为该第一主分区所在的节点,或该第一主分区所在的节点所属的分组的节点;
将该多个第二类节点中的高负载节点的至少一个该第一备分区移动到该多个第二类节点中的低负载节点上,其中,该高负载节点的分区个数大于第三预定阈值,该低负载节点的分区个数小于第四预定阈值。
上述如本发明图2及实施例1-4中任一实施例揭示的负载均衡装置执行的方法可以应用于处理器902中,或者由处理器902实现。处理器902可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器903,处理器902读取存储器903中的信息,结合其硬件完成上述方法的步骤。
本发明实施例中,负载均衡装置900通过均匀分配主分区,再均匀分配主分区的备分区,然后在高负载节点和低负载节点实现备分区的均匀分布,从而使得分布式系统能够在发生单点故障或缩容时能够尽可能地减少数据迁移操作。
可选地,在用于对该多个节点中每个主分区,将在该主分区的所有第二类节点中将该主分区对应的备分区从高负载节点移动到低负载节点上的过程中,处理器902具体用于:获取该第一备分区所分配的节点集合;将该节点集合分别与该第一主分区的所有第二类节点中该高负载节点的集合及该低负载节点的集合求交集,其中该节点集合与该高负载节点的集合的交集为第一交集,该节点集合与该低负载节点的集合的交集为第二交集;如果该第一交集中的第一节点存在该第一备分区,且该第二交集中的第二节点不存在该第一备分区,则将该第一备分区从该第一节点移动到该第二节点中。
可选地,处理器902还用于如果该多个节点上的分区分布仍然不均衡,则将该多个节点中该高负载节点的备分区移动到该多个节点中的该低负载节点。当调整完集群上所有节点上的可调整的备分区后,如果备分区在集群上的节点分布仍然不均匀,处理器902还可进一步均衡各个节点上的备分区,使得备分区在各个节点上均匀分布。
可选地,作为一个实施例,处理器902还用于:当该分布式系统的集群扩容时,确定扩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
可选地,作为一个实施例,处理器902还用于:当该分布式系统的集群扩容时,确定缩容后在该分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。。当备分区移动完毕后,处理器902还可将缩容节点从集群中移除。
可选地,作为一个实施例,处理器902还用于:当该分布式系统的集群故障时,根据第二主分区在该多个节点中非故障节点对应的备分区分布,以及该多个节点中非故障节点的主分区分布,确定该多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于该第一预定阈值,其中,该第二主分区为该多个节点中故障节点的主分区,该第二备分区为该第二主分区对应的备分区;将该第二备分区升级为主分区;将该故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,该调整结果包括各个节点上的主分区和备分区的分布信息;根据调整前后各个节点的主分区及备分区分布信息确定该各个节点上的所有待迁移分区及对应的目的节点;将该所有待迁移分区迁移到对应的目的节点。
此外,负载均衡装置900还可执行图2的方法,并实现负载均衡装置900在图2所示实施例的功能及实施例1-4的方法,本发明实施例在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种分布式负载均衡方法,应用于分布式系统,其特征在于,所述分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区,所述方法包括:
在所述多个节点上分配所述多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;
将所述多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得所述第二类节点中任意两个节点上所述第一备分区个数之差都小于第二预定阈值,其中,所述第二类节点为所述第一主分区中第一类节点以外的节点,所述第一类节点为所述第一主分区所在的节点,或所述第一主分区所在的节点所属的分组的节点;
将所述多个第二类节点中的高负载节点的至少一个所述第一备分区移动到所述多个第二类节点中的低负载节点上,其中,所述高负载节点的分区个数大于第三预定阈值,所述低负载节点的分区个数小于第四预定阈值。
2.如权利要求1所述的方法,其特征在于,所述将所述多个第二类节点中的高负载节点的至少一个所述第一备分区移动到所述多个第二类节点中的低负载节点上包括:
获取所述第一备分区所分配的节点集合;
将所述节点集合分别与所述第一主分区的所有第二类节点中所述高负载节点的集合及所述低负载节点的集合求交集,其中所述节点集合与所述高负载节点的集合的交集为第一交集,所述节点集合与所述低负载节点的集合的交集为第二交集;
如果所述第一交集中的第一节点存在所述第一备分区,且所述第二交集中的第二节点不存在所述第一备分区,则将所述第一备分区从所述第一节点移动到所述第二节点中。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
如果所述多个节点上的分区分布仍然不均衡,则将所述多个节点中所述高负载节点的备分区移动到所述多个节点中的所述低负载节点。
4.如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:当所述分布式系统的集群扩容时,
确定扩容后在所述分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,所述调整结果包括各个节点上的主分区和备分区的分布信息;
根据调整前后各个节点的主分区及备分区分布信息确定所述各个节点上的所有待迁移分区及对应的目的节点;
将所述所有待迁移分区迁移到对应的目的节点。
5.如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:当所述分布式系统的集群缩容时,
确定缩容后在所述分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,所述调整结果包括各个节点上的主分区和备分区的分布信息;
根据调整前后各个节点的主分区及备分区分布信息确定所述各个节点上的所有待迁移分区及对应的目的节点;
将所述所有待迁移分区迁移到对应的目的节点。
6.如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:当所述分布式系统的集群故障时,
根据第二主分区在所述多个节点中非故障节点对应的备分区分布,以及所述多个节点中非故障节点的主分区分布,确定所述多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于所述第一预定阈值,其中,所述第二主分区为所述多个节点中故障节点的主分区,所述第二备分区为所述第二主分区对应的备分区;
将所述第二备分区升级为主分区;
将所述故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,所述调整结果包括各个节点上的主分区和备分区的分布信息;
根据调整前后各个节点的主分区及备分区分布信息确定所述各个节点上的所有待迁移分区及对应的目的节点;
将所述所有待迁移分区迁移到对应的目的节点。
7.一种分布式负载均衡装置,应用于分布式系统,其特征在于,所述分布式系统的集群中包括多个节点和多个主分区,每个主分区对应于至少一个备分区,所述装置包括:
第一分配单元,用于在所述多个节点上分配所述多个主分区,使得任意两个节点上的主分区个数差值小于第一预定阈值;
第二分配单元,用于将将所述多个主分区中的第一主分区对应的第一备分区分配到多个第二类节点中,使得所述第二类节点中任意两个节点上所述第一备分区个数之差都小于第二预定阈值,其中,所述第二类节点为所述第一主分区中第一类节点以外的节点,所述第一类节点为所述第一主分区所在的节点,或所述第一主分区所在的节点所属的分组的节点;
备分区移动单元,用于将所述多个第二类节点中的高负载节点的至少一个所述第一备分区移动到所述多个第二类节点中的低负载节点上,其中,所述高负载节点的分区个数大于第三预定阈值,所述低负载节点的分区个数小于第四预定阈值。
8.如权利要求7所述的装置,其特征在于,所述备分区移动单元具体用于:
获取所述第一备分区所分配的节点集合;
将所述节点集合分别与所述第一主分区的所有第二类节点中所述高负载节点的集合及所述低负载节点的集合求交集,其中所述节点集合与所述高负载节点的集合的交集为第一交集,所述节点集合与所述低负载节点的集合的交集为第二交集;
如果所述第一交集中的第一节点存在所述第一备分区,且所述第二交集中的第二节点不存在所述第一备分区,则将所述第一备分区从所述第一节点移动到所述第二节点中。
9.如权利要求7或8所述的装置,其特征在于,所述备分区移动单元还用于如果所述多个节点上的分区分布仍然不均衡,则将所述多个节点中所述高负载节点的备分区移动到所述多个节点中的所述低负载节点。
10.如权利要求7至9任一项所述的装置,其特征在于,所述装置还包括:第一确定单元和第二确定单元,其中,
所述第一确定单元用于当所述分布式系统的集群扩容时,确定扩容后在所述分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,所述调整结果包括各个节点上的主分区和备分区的分布信息;
所述第二确定单元用于根据调整前后各个节点的主分区及备分区分布信息确定所述各个节点上的所有待迁移分区及对应的目的节点;
所述备分区移动单元还用于将所述所有待迁移分区迁移到对应的目的节点。
11.如权利要求7至9任一项所述的装置,其特征在于,所述装置还包括:第三确定单元和第四确定单元,其中,
所述第三确定单元用于当所述分布式系统的集群缩容时,确定缩容后在所述分布式系统的集群中实现各个节点的主分区、备分区负载均衡的调整结果,所述调整结果包括各个节点上的主分区和备分区的分布信息;
所述第四确定单元用于根据调整前后各个节点的主分区及备分区分布信息确定所述各个节点上的所有待迁移分区及对应的目的节点;
所述备分区移动单元还用于将所述所有待迁移分区迁移到对应的目的节点。
12.如权利要求7至9任一项所述的装置,其特征在于,所述装置还包括:第五确定单元、分区升级单元、第六确定单元及第七确定单元,其中,
所述第五确定单元用于当所述分布式系统的集群故障时,根据第二主分区在所述多个节点中非故障节点对应的备分区分布,以及所述多个节点中非故障节点的主分区分布,确定所述多个节点的非故障节点中将要升级为主分区的第二备分区,使得升级后任意两个节点上的主分区个数差值小于所述第一预定阈值,其中,所述第二主分区为所述多个节点中故障节点的主分区,所述第二备分区为所述第二主分区对应的备分区;
所述分区升级单元用于将所述第二备分区升级为主分区;
所述第六确定单元用于将所述故障节点中的所有主分区和备分区当作未分配备分区,确定未分配备分区分配后并进行主分区、备分区负载均衡后的调整调整结果,所述调整结果包括各个节点上的主分区和备分区的分布信息;
所述第七确定单元用于根据调整前后各个节点的主分区及备分区分布信息确定所述各个节点上的所有待迁移分区及对应的目的节点;
所述备分区移动单元还用于将所述所有待迁移分区迁移到对应的目的节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510112774.8A CN104702691B (zh) | 2015-03-13 | 2015-03-13 | 分布式负载均衡方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510112774.8A CN104702691B (zh) | 2015-03-13 | 2015-03-13 | 分布式负载均衡方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104702691A true CN104702691A (zh) | 2015-06-10 |
CN104702691B CN104702691B (zh) | 2017-12-01 |
Family
ID=53349449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510112774.8A Active CN104702691B (zh) | 2015-03-13 | 2015-03-13 | 分布式负载均衡方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104702691B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107645396A (zh) * | 2016-07-21 | 2018-01-30 | 北京金山云网络技术有限公司 | 一种集群扩容方法及装置 |
CN108073448A (zh) * | 2016-11-15 | 2018-05-25 | 北京金山云网络技术有限公司 | 宿主机资源分配方法、装置、宿主机调度方法及装置 |
CN108207004A (zh) * | 2016-12-17 | 2018-06-26 | 南宁富桂精密工业有限公司 | 网络管理方法及设备 |
CN108234616A (zh) * | 2017-12-25 | 2018-06-29 | 深圳华强聚丰电子科技有限公司 | 一种高可用分布式web缓存系统和方法 |
CN108804018A (zh) * | 2017-04-26 | 2018-11-13 | 华为技术有限公司 | 一种数据分区的方法及装置 |
CN109903178A (zh) * | 2019-04-04 | 2019-06-18 | 腾讯科技(深圳)有限公司 | 一种确定共同社交对象的方法、装置、系统及计算设备 |
CN112667160A (zh) * | 2020-12-25 | 2021-04-16 | 深圳创新科技术有限公司 | 一种海量存储系统快速均衡方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055650A (zh) * | 2009-10-29 | 2011-05-11 | 华为技术有限公司 | 负载均衡方法及系统和管理服务器 |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
US20140098670A1 (en) * | 2012-10-09 | 2014-04-10 | Samsung Electronics Co., Ltd. | Method and apparatus for distributing load in wireless communication system |
CN103797770A (zh) * | 2012-12-31 | 2014-05-14 | 华为技术有限公司 | 一种共享存储资源的方法和系统 |
CN103918239A (zh) * | 2012-09-28 | 2014-07-09 | 华为技术有限公司 | 负载均衡方法、装置、系统及计算机可读介质 |
-
2015
- 2015-03-13 CN CN201510112774.8A patent/CN104702691B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055650A (zh) * | 2009-10-29 | 2011-05-11 | 华为技术有限公司 | 负载均衡方法及系统和管理服务器 |
CN103918239A (zh) * | 2012-09-28 | 2014-07-09 | 华为技术有限公司 | 负载均衡方法、装置、系统及计算机可读介质 |
US20140098670A1 (en) * | 2012-10-09 | 2014-04-10 | Samsung Electronics Co., Ltd. | Method and apparatus for distributing load in wireless communication system |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
CN103797770A (zh) * | 2012-12-31 | 2014-05-14 | 华为技术有限公司 | 一种共享存储资源的方法和系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107645396A (zh) * | 2016-07-21 | 2018-01-30 | 北京金山云网络技术有限公司 | 一种集群扩容方法及装置 |
CN107645396B (zh) * | 2016-07-21 | 2020-11-13 | 北京金山云网络技术有限公司 | 一种集群扩容方法及装置 |
CN108073448A (zh) * | 2016-11-15 | 2018-05-25 | 北京金山云网络技术有限公司 | 宿主机资源分配方法、装置、宿主机调度方法及装置 |
CN108073448B (zh) * | 2016-11-15 | 2020-11-20 | 北京金山云网络技术有限公司 | 宿主机资源分配方法、装置、宿主机调度方法及装置 |
CN108207004A (zh) * | 2016-12-17 | 2018-06-26 | 南宁富桂精密工业有限公司 | 网络管理方法及设备 |
CN108804018A (zh) * | 2017-04-26 | 2018-11-13 | 华为技术有限公司 | 一种数据分区的方法及装置 |
CN108234616A (zh) * | 2017-12-25 | 2018-06-29 | 深圳华强聚丰电子科技有限公司 | 一种高可用分布式web缓存系统和方法 |
CN109903178A (zh) * | 2019-04-04 | 2019-06-18 | 腾讯科技(深圳)有限公司 | 一种确定共同社交对象的方法、装置、系统及计算设备 |
CN112667160A (zh) * | 2020-12-25 | 2021-04-16 | 深圳创新科技术有限公司 | 一种海量存储系统快速均衡方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104702691B (zh) | 2017-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104702691A (zh) | 分布式负载均衡方法和装置 | |
CN107005596B (zh) | 用于在集群重新配置后的工作负载平衡的复制型数据库分配 | |
EP2791813B1 (en) | Load balancing in cluster storage systems | |
CN107004033B (zh) | 大规模并行处理器数据库系统和方法 | |
KR101502896B1 (ko) | 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법 | |
CN105988872B (zh) | 一种cpu资源分配的方法、装置及电子设备 | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
CN102929707B (zh) | 并行任务动态分配方法 | |
US11095715B2 (en) | Assigning storage responsibility in a distributed data storage system with replication | |
US11544226B2 (en) | Metadata control in a load-balanced distributed storage system | |
US20160162562A1 (en) | Database system, computer program product, and data processing method | |
US10810054B1 (en) | Capacity balancing for data storage system | |
US20180373456A1 (en) | Metadata Load Distribution Management | |
CN111596868B (zh) | 基于段单元的分布式存储系统的负载均衡方法和系统 | |
US8996700B2 (en) | Automated workload performance and availability optimization based on hardware affinity | |
US10102267B2 (en) | Method and apparatus for access control | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN107133228A (zh) | 一种数据重分布的方法及装置 | |
CN112463395A (zh) | 一种资源分配方法、装置、设备及可读存储介质 | |
KR20180046078A (ko) | 데이터베이스 리밸런싱 방법 | |
US10606478B2 (en) | High performance hadoop with new generation instances | |
CN111880926B (zh) | 一种负载均衡方法、装置及计算机存储介质 | |
US20140089613A1 (en) | Management of data elements of subgroups | |
KR102124897B1 (ko) | 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법 | |
CN106201711A (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 |