负载均衡控制方法和装置、存储介质及电子设备与流程

文档序号:23719693发布日期:2021-01-24 07:20阅读:184来源:国知局
负载均衡控制方法和装置、存储介质及电子设备与流程

[0001]
本发明涉及计算机领域,具体而言,涉及一种负载均衡控制方法和装置、存储介质及电子设备。


背景技术:

[0002]
随着信息技术的发展,信息存储总容量爆炸式的增长。像云计算这类pb级数据密集型的应用对后端存储产生了大量的请求。对象存储系统实现了元数据和文件内容(数据)的物理分离,元数据由元数据服务器(metadata server,简称mds)管理,而数据由对象存储设备(object storage device,简称osd)管理,对象存储系统兼具存储区域网络(storage area network,简称san)的快速访问和网络附属存储(network attached storage,简称nas)的安全数据共享,是大数据存储技术的未来。
[0003]
在分布式文件系统中,对象存储系统io性能很大程度上依赖于元数据处理性能。然而,采用了集中式元数据处理方式的文件系统,它们的性能和可用性受限于单mds。因此,以ceph为代表的采用多个服务器组成mds集群的分布式处理场景受到越来越多的关注。为了达到mds集群元数据处理性能的最大化,同时避免在一定条件下mds成为系统瓶颈,mds上的负载均衡问题就显得尤为重要。
[0004]
目前,在相关技术提供的负载均衡方法中,单个mds往往并未真正的过载,盲目地启动负载迁移不但导致mds自身能力的浪费,而且没必要的负载迁移还会消耗原本就紧张的网络带宽、中央处理单元(central processing unit,简称cpu)和内存等资源。
[0005]
针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

[0006]
本发明实施例提供了一种负载均衡控制方法和装置、存储介质及电子设备,以至少解决相关技术提供的负载均衡控制方法中存在对象存储资源浪费的技术问题。
[0007]
根据本发明实施例的一个方面,提供了一种负载均衡控制方法,包括:获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及位于上述元数据服务器集群中当前元数据服务器的当前负载值;在上述当前元数据服务器的上述当前负载值大于上述平均负载值的情况下,确定上述当前元数据服务器处于相对过载状态;在上述当前元数据服务器处于相对过载状态的情况下,比对上述当前负载值和为上述当前元数据服务器配置的负载上限值;在上述当前负载值大于为上述当前元数据服务器配置的上述负载上限值的情况下,确定上述当前元数据服务器处于过载状态;对处于上述过载状态下的上述当前元数据服务器中进行元数据迁移。
[0008]
根据本发明实施例的一个方面,提供了一种负载均衡控制方法,包括:获取元数据服务器集群中各个元数据服务器的负载值;根据上述负载值确定出上述元数据服务器集群中的当前元数据服务器处于过载状态;从上述当前元数据服务器中确定出待迁移的目标元数据子树,并从上述元数据服务器集群中上述当前元数据服务器之外的其他元数据服务器
中确定出目标元数据服务器,其中,上述目标元数据服务器处于非过载状态:将上述目标元数据子树迁移到上述目标元数据服务器中。
[0009]
根据本发明实施例的又一方面,还提供了一种负载均衡控制装置,包括:获取单元,用于获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及位于上述元数据服务器集群中当前元数据服务器的当前负载值;第一确定单元,用于在上述当前元数据服务器的上述当前负载值大于上述平均负载值的情况下,确定上述当前元数据服务器处于相对过载状态;比对单元,用于在上述当前元数据服务器处于相对过载状态的情况下,比对上述当前负载值和为上述当前元数据服务器配置的负载上限值;第二确定单元,用于在上述当前负载值大于为上述当前元数据服务器配置的上述负载上限值的情况下,确定上述当前元数据服务器处于过载状态;迁移单元,用于对处于上述过载状态下的上述当前元数据服务器中进行元数据迁移。
[0010]
根据本发明实施例的又一方面,还提供了一种负载均衡控制装置,包括:获取单元,用于获取元数据服务器集群中各个元数据服务器的负载值:第一确定单元,用于根据上述负载值确定出上述元数据服务器集群中的当前元数据服务器处于过载状态;第二确定单元,用于从上述当前元数据服务器中确定出待迁移的目标元数据子树,并从上述元数据服务器集群中上述当前元数据服务器之外的其他元数据服务器中确定出目标元数据服务器,其中,上述目标元数据服务器处于非过载状态:迁移单元,用于将上述目标元数据子树迁移到上述目标元数据服务器中。
[0011]
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述负载均衡控制方法。
[0012]
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的负载均衡控制方法。
[0013]
在本发明实施例中,在获取到元数据服务器集群中各个元数据服务器的负载状态信息后,确定该元数据服务器集群的平均负载值,当前元数据服务器的当前负载值,及为该当前元数据服务器配置的负载上限值。然后在确定当前负载值大于平均负载值,且大于负载上限值的情况下,确定对该当前元数据服务器执行迁移。也就是将相对过载评估绝对过载评估结果与绝对过载评估结果结合,不仅能更充分地利用当前元数据服务器的能力,而且能更好地平衡元数据服务器集群中负载的分布特性和局部特性,最终综合性地提升元数据服务器集群的整体性能,进而避免负载均衡控制过程中出现的对象存储资源浪费的问题。
附图说明
[0014]
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0015]
图1是根据本发明实施例的一种可选的负载均衡控制方法的应用环境的示意图;
[0016]
图2是根据本发明实施例的一种可选的负载均衡控制方法的流程图;
[0017]
图3是根据本发明实施例的另一种可选的负载均衡控制方法的流程图;
[0018]
图4是根据本发明实施例的又一种可选的负载均衡控制方法的流程图;
[0019]
图5是根据本发明实施例的一种可选的负载均衡控制方法的示意图;
[0020]
图6是根据本发明实施例的一种可选的负载均衡控制方法的参考示意图;
[0021]
图7是根据本发明实施例的另一种可选的负载均衡控制方法的参考示意图;
[0022]
图8是根据本发明实施例的一种可选的负载均衡控制方法的迁移示意图;
[0023]
图9是根据本发明实施例的一种可选的负载均衡控制方法的迁移示意图;
[0024]
图10是根据本发明实施例的又一种可选的负载均衡控制方法的流程图;
[0025]
图11是根据本发明实施例的又一种可选的负载均衡控制方法的流程图;
[0026]
图12是根据本发明实施例的一种可选的负载均衡控制装置的结构示意图;
[0027]
图13是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
[0028]
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0029]
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0030]
在本申请中提供的实施例,可以但不限于用于云存储场景中,这里云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
[0031]
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(id,identity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
[0032]
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(raid,redundant array of independent disk)的组别,预先将物理存储空间划分成
分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
[0033]
根据本发明实施例的一个方面,提供了一种负载均衡控制方法,可选地,作为一种可选的实施方式,上述负载均衡控制方法可以但不限于应用于如图1所示的环境中。在该环境中可以包括但不限于多个元数据服务器(metadata server,简称mds)组成的元数据服务器集群(multi-mds),如图1所示包括m1至mn的n个元数据服务器mds。其中,每个元数据服务器mds是文件存储系统中管理和提供元数据服务的核心组件,用于在存储系统上构建文件系统层级结构,负责目录和文件的创建与删除、限额管理、访问控制等,并通过分布式锁机制来确保各个mds之间的数据一致性,集群成员之间通过相互协作,共同承担文件存储系统的管理和元数据服务任务。
[0034]
在本申请实施例中,上述图1所示的元数据服务器集群(multi-mds)m1至mn中的每个mds都分别单独决策,集群中并无主控制节点。进一步,这里mds集群中各个节点mds通过心跳信息交换彼此最新的负载情况,在收集到所有其他mds的负载情况后启动过载评估,判定自己是否过载,如果判定过载,将依据一定的策略挑选合适的元数据子树迁移到其他的轻载mds。
[0035]
此外,在本实施例中,上述multi-mds中的节点mds如果退出,无需任何配置或操作;如果有新的节点mds加入,只需要给新mds手动配置一组合理的负载运行参数,如负载能力值、迁移负载量比例ratio、迁移子树个数上限。此外,在本实施例中,在增加mds集群的节点mds的数量后,集群性能也将随着节点mds数目线性增长。
[0036]
可选地,在本实施例中上述mdf元数据服务器可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络服务器cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。但并不局限于此。服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。上述仅是一种示例,本实施例中对此不作任何限定。
[0037]
可选地,作为一种可选的实施方式,如图2所示,上述负载均衡控制方法包括:
[0038]
s202,获取元数据服务器集群中当前元数据服务器之外的其他元数据服务器各自定期发送的心跳信息,其中,心跳信息中携带有元数据服务器的负载状态信息;
[0039]
s204,根据其他元数据服务器各自的负载状态信息及当前元数据服务器的当前负载状态信息,确定元数据服务器集群的平均负载值;
[0040]
s206,在当前负载状态信息指示当前元数据服务器的当前负载值大于平均负载值,且大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0041]
s208,从当前元数据服务器中确定出待迁移的目标元数据子树,并从其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器的负载值小于平均负载值;
[0042]
s210,将目标元数据子树迁移至目标元数据服务器。
[0043]
可选地,在本实施例中,上述负载均衡控制方法可以但不限于应用于cephfs multi-mds动态负载均衡过程中。通过结合元数据服务器集群中当前元数据服务器的当前负载值与元数据服务器集群的平均负载值之间的比对结果,及当前负载值与当前元数据服务器的负载上限值之间的比对结果,从而实现将相对过载评估绝对过载评估结果与绝对过载评估结果结合,来优化cephfs multi-mds过载评估过程,而不再只采用相对过载评估方
法,以避免对象存储资源浪费的问题,即减少对网络带宽、cpu和内存等资源的不必要的消耗占用。
[0044]
需要说明的是,在相关技术中为了保持mds集群的负载均衡,通常会在mds集群中直接采用相对过载评估,将mds集群中的节点mds简单划分为过载和轻载两个mds集合。但元数据在mds集群的分布特性,往往牺牲了元数据的局部(locality)特性。元数据分布特性的增强可以提升mds集群的整体能力,但元数据局部特性破坏却降低了mds集群的整体能力,元数据分布与局部特性共同决定了mds集群的最终整体能力。如果根据mds自身绝对承受负载能力,相对过载mds可能并未真过载。在此情况下,相对过载mds完全没必要做元数据子树迁出,因为此时元数据子树的迁出虽然可以进一步提升元数据分布特性,但同时也会降低元数据局部特性。此时元数据分布特性提升对mds集群整体能力的正面贡献,要远远小于元数据局部特性降低导致的mds集群整体能力的负面影响。
[0045]
因而,为了克服上述问题,本申请实施例中提供的过载评估过程可以包括但不限于:相对过载评估和绝对过载评估,其中,相对过载评估是依据mds负载值与multi-mds集群平均负载值,评估mds是否过载。绝对过载评估是依据mds负载值与自身绝对负载承担能力,评估mds是否过载。
[0046]
具体的,上述相对过载评估是将mds集群平均负载值作为相对过载线,将mds集群中的各个成员mds划分成相对轻载和相对过载两个集合,负载值超过相对过载线的mds为相对过载,负载值低于相对过载线的mds为相对轻载。由于相对过载mds承担的负载比相对轻载mds多,需要通过向相对轻载mds迁出负载而达到mds集群成员平均承担负载的目的。而上述绝对过载评估指的是通过mds自身的实时状态参数和自身设定的参数上限做比较,去判定该mds是否过载,超过设定的参数上限为过载,低于设定的参数上限为轻载。
[0047]
在本实施例中,采用将相对过载评估绝对过载评估结果与绝对过载评估结果结合的方式,是指对mds先做相对过载评估,若mds被判定为相对过载,则启动绝对过载评估,只有mds同时被判定为相对过载和绝对过载的情况下,才能最终判定该mds处于过载状态。进一步才能启动负载迁移,而其他情况将视为轻载状态,不启动负载迁移。
[0048]
可选地,在本实施例中,上述负载状态信息中可以包括但不限于以下至少之一:用于指示元数据服务器的负载能力的负载量、元数据服务器在单位时间内处理请求的数量(如用req_rate表示)及元数据服务器的cpu使用率。也就是说,上述当前元数据服务器(可简称为当前mds)的当前负载值可以但不限于:当前负载量、单位时间内当前请求量、当前cpu使用率等。
[0049]
进一步,在本实施例中,上述相对过载评估过程中用于比对当前负载值与平均负载值时所使用的状态参数,与上述绝对过载评估过程中用于比对当前负载值与负载上限值时所使用的状态参数,可以为同一个状态参数,也可以为不同状态参数。例如,在相对过载的判定过程中,当前负载值为当前mds的当前负载量的情况下,平均负载值可以是mdf集群的平均负载量;而在绝对过载的判定过程中,当前负载值为当前mds的当前负载量的情况下,对应的负载上限值可以是当前mdf允许承担的负载上限量(即最大负载量)。又例如,在相对过载的判定过程中,当前负载值为当前mds的当前负载量的情况下,平均负载值可以是mdf集群的平均负载量;而在绝对过载的判定过程中,当前负载值为当前mds单位时间内处理请求的数量(如用req_rate表示)的情况下,对应的负载上限值可以是当前mdf单位时间
内处理请求的数量上限量(即最大请求量req_rate_max)。上述为示例,本实施例中对此不作任何限定。
[0050]
可选地,在本实施例中,从当前元数据服务器中确定出待迁移的目标元数据子树的方式可以包括但不限于以下一种策略:1)根据预先设定的迁移负载量上限来确定;2)根据预先设定的迁移子树个数上限来确定。从而避免在单次负载均衡过程中涉及大量的子树负载迁移,而使得迁移中的子树被加锁保护,所导致的客户端在访问这些子树的时候出现卡顿过久的问题。进而实现单次负载均衡的迁移负载量可调、可控,缩短客户端在访问这些子树时的卡顿时间的效果。
[0051]
具体结合图3所示示例进行说明:
[0052]
如步骤s302,判断元数据服务器集群(multi-mds)中当前元数据服务器mds的计时器(ticker)是否到时?在到时的情况下执行步骤s304-s306,当前mds向multi-mds中其他mds发送心跳信息,并接收其他mds发送的心跳信息。然后如步骤s308,确定是否收到元数据服务器集群(multi-mds)中全部mds发送的所有心跳信息,若没有收到所有心跳信息,则返回步骤s306;若收到所有心跳信息,则执行步骤s310,对当前mds进行相对过载评估和绝对过载评估。若确定当前mds并未过载,则跳转到步骤s320,结束,以等待下一个ticker到时。若确定当前mds处于过载状态,则执行步骤s314-s320,迁移目标匹配,以确定目mds,并选取迁移子树,然后执行迁移,以将选取的迁移子树迁移至目标mds中,完成迁移后结束,以等待下一个ticker到时。
[0053]
上述图3所示各个步骤内容及顺序为示例,本实施例中对此不作限定。
[0054]
通过本申请提供的实施例,在获取到元数据服务器集群中各个元数据服务器的负载状态信息后,确定该元数据服务器集群的平均负载值,当前元数据服务器的当前负载值,及为该当前元数据服务器配置的负载上限值。然后在确定当前负载值大于平均负载值,且大于负载上限值的情况下,确定对该当前元数据服务器执行迁移。也就是将相对过载评估绝对过载评估结果与绝对过载评估结果结合,不仅能更充分地利用当前元数据服务器的能力,而且能更好地平衡元数据服务器集群中负载的分布特性和局部特性,最终综合性地提升元数据服务器集群的整体性能,进而避免负载均衡控制过程中出现的对象存储资源浪费的问题。
[0055]
作为一种可选的方案,所述确定当前元数据服务器处于过载状态包括:
[0056]
s1,解析其他元数据服务器各自的负载状态信息,以获取每个元数据服务器对应的对象负载值,得到多个对象负载值;
[0057]
s2,获取多个对象负载值的平均值,作为平均负载值;
[0058]
s3,比对当前负载值和平均负载值;
[0059]
s4,在当前负载值大于平均负载值的情况下,比对当前负载值和负载上限值;
[0060]
s5,在当前负载值大于负载上限值的情况下,确定当前元数据服务器处于过载状态。
[0061]
可选地,在本实施例中,在比对当前负载值和平均负载值之后,还包括:在当前负载值小于平均负载值的情况下,确定当前元数据服务器处于第一轻载状态;在比对当前负载值和负载上限值之后,还包括:在当前负载值小于负载上限值的情况下,确定当前元数据服务器处于第二轻载状态。
[0062]
需要说明的是,上述第一轻载状态可以但不限于指当前mds的负载水平尚未达到元数据服务器集群(multi-mds)的平均水平,处于绝对的轻载状态。上述第二轻载状态可以但不限于指当前mds达到负载水平超过元数据服务器集群(multi-mds)的平均水平,但尚未达到自身的负载上限水平,处于相对自身的轻载状态。通过区分不同的轻载状态,以便于为mds迁移不同的元数据子树,从而使得元数据服务器集群(multi-mds)中的存储资源得到最大化地利用。
[0063]
具体结合图4所示示例进行说明:假设元数据服务器集群(multi-mds)中当前元数据服务器,以mds
0
为例。当mds
0
收到mds集群其他mds心跳信息后,通过解析心跳信息得到其他mds的负载状态信息,其中包括各个mds的负载值meta_load,以便于计算出mds集群的平均负载值avg_meta_load。然后执行图4所示的各个步骤:
[0064]
如步骤s402,将mds
0
自身的负载值meta_load
0
与上述平均负载值avg_meta_load做比较,如果meta_load
0
小于avg_meta_load,则mds
0
被判定为轻载,如步骤s404-1更新最近一次轻载。否则确定mds
0
为相对过载,并执行步骤s404-2。当mds
0
为相对过载时,mds
0
不会盲目地马上启动负载迁移,而是要经过绝对过载评估。假设以单位时间处理请求量req_rate为例来进行绝对过载评估。且mds
0
已预先设定的单位时间处理请求量上限为req_rate_max。判定过程可以如下:
[0065]
mds
0
会定期记录自己的单位时间处理请求量req_rate
0
,并如步骤s404-2,将当前mds
0
的req_rate
0
与req_rate_max做比较,在确定req_rate
0
>req_rate_max的情况下,确定mds
0
是绝对过载,执行步骤s406,否则为轻载,跳转到步骤s404-1。如果mds
0
同时被判定为相对过载和绝对过载,则mds
0
最终被判定为处于过载状态,然后才能启动负载迁移过程。
[0066]
进一步在本示例中,可以对上述判定处于过载状态的次数做进一步统计,如假设连续过载阈值设定为3次。则如步骤s406,在确定当前mds
0
已经连续过载超过3次,则如步骤s408,确定当前mds
0
处于过载状态,否则如步骤s410,确定为轻载状态。最后如步骤s412过载评估结束。
[0067]
需要说明的是,在本实施例中,在mds
0
同时被判定为相对过载和绝对过载的情况下,才确定该mds
0
处于过载状态。可以在mds
0
在一次判定过程中被判定为处于过载状态的情况下,就结束过载评估,也可以在mds
0
在多次判定过程中均被判定为处于过载状态的情况下,再结束过载评估。从而实现使用过载阈值对处于过载状态的mds进行一定的过滤,避免误判导致的资源浪费问题。
[0068]
此外,在本实施例中,上述mds
0
为元数据服务器集群(multi-mds)中的任意一个mds,其他mds的过载评估的判定过程均可以参考上述图4所示的流程,本实施例中不再赘述。
[0069]
需要说明的是,为了避免单点mds造成的瓶颈和故障,cephfs mds集群没有设置用来专门管理、维护集群中各个mds之间负载分配的一个全局调度器,而是由每个mds独立决策。multi-mds之间通过定期发送心跳信息,彼此交换最新的负载状态信息,以获取各个mds的负载值,在收集到所有其他mds的心跳信息后启动过载评估,过载mds将启动负载迁移过程。
[0070]
在相关技术提供的负载均衡控制方法中,主要是基于相对过载评估的判定结果来确定是否要迁出元数据子树。例如,如果mds
0
被判定为相对过载,mds
0
将直接启动负载迁移
过程,它将集群中相对轻载的mds作为负载迁出的目标mds,把自身负载值与mds集群平均负载值之差作为总负载迁出量。然后,mds
0
根据一定的策略选择待迁移的目标元数据子树负载出,然后将这些目标元数据子树依次迁移到目标mds,直到当前负载迁出量达到总负载迁出量为止。
[0071]
这里的相对过载评估可以如图5(a)所示,是将mds集群平均负载值作为相对过载线,将mds集群中的各个mds划分成轻载和过载两个集合。负载值超过相对过载线的mds为相对过载,负载值低于相对过载线的mds为相对轻载,由于相对过载mds承担的负载比相对轻载mds多,需要通过向相对轻载mds迁出负载而达到mds集群成员平均承担负载的目的。
[0072]
而本申请实施例中提供的动态负载均衡控制方法可以如图5(b)所示,结合相对过载和绝对过载两个维度,在相对过载评估结果的基础上,对50%相对过载的情况做进一步的细分,将相对过载而绝对轻载的mds(位于象限2)最终判定为轻载,而不再是过载。将相对过载且绝对过载的mds(位于象限1)最终确定为处于过载状态。
[0073]
通过本申请提供的实施例,结合相对过载和绝对过载两个维度来更加精准地确定出元数据服务器集群中真正处于过载状态的元数据服务器,从而使得每个元数据服务器可以得到充分利用,避免不必要的资源浪费的同时,提高各个元数据服务器的利用率。
[0074]
作为一种可选的方案,从当前元数据服务器中确定出待迁移的目标元数据子树包括:
[0075]
s1,获取当前负载值与平均负载值的负载差值;
[0076]
s2,将负载差值确定为当前元数据服务器所要迁移的参考迁移负载量;
[0077]
s3,获取为当前元数据服务器配置的迁移参数上限值;
[0078]
s4,根据参考迁移负载量及迁移参数上限值,确定待迁移的目标元数据子树。
[0079]
可选地,在本实施例中,上述迁移参数上限值可以包括但不限于:迁移负载量上限比例、迁移子树上限数量。也就是说,可以但不限于采用以下一种迁移控制策略:迁移负载量上限控制策略或迁移子树个数上限控制策略。
[0080]
需要说明的是,在相关技术中通常是过载mds的总迁出负载量等于自身负载量减去mds集群平均负载量,即meta_load

avg_meta_load=总迁出负载量。例如,假设mds集群中包括mds
0
、mds
1
、mds
2
,其中当前元数据服务器仍以mds
0
为例。进一步,假设如图6(a)所示mds
0
处于过载状态,且其他两个mds(即mds
1
、mds
2
)处于轻载状态。因此mds
0
需要向其他两个mds(即mds
1
、mds
2
)迁移负载(即元数据子树),如图6(b)所示mds
0
中超出平均负载线的负载量迁移至mds
1
、mds
2
中,以达到如图6(c)所示3个mds平均承担mds集群负载的目的。
[0081]
在采用相关技术提供的负载均衡方法时,mds
0
可以通过一定的策略选择若干元数据子树,将这些元数据子树依次迁移到其他两个mds,直到被迁移的这些元数据子树的负载量之和达到了mds
0
的总迁出负载量为止。由此可见,过载mds负载均衡的过程是以达到自身总迁出负载量为结束条件的。但被迁移的元数据子树在迁移过程中会被加锁保护,导致cephfs客户端在访问这些元数据子树时出现卡顿时间过久的问题。因而,在本申请实施例中不再采用上述如图7(a)至图7(b)所示的迁移方式,也就是不再将mds
0
中的元数据子树依次迁移到其他两个mds(即mds
1
、mds
2
),结果如图7(c)所示。
[0082]
为了克服上述相关技术中存在的技术问题,在本申请实施例中,对每个mds设置了迁移参数上限值(如迁移负载量上限或迁移子树个数上限),结合当前元数据服务器所要迁
移的参考迁移负载量和迁移参数上限值,来对单次负载均衡迁出负载量进行灵活地控制,进而避免访问时出现的卡顿时间太久的问题。
[0083]
通过本申请提供的实施例,根据参考迁移负载量及迁移参数上限值,确定待迁移的所述目标元数据子树。从而实现对单次负载均衡迁出负载量进行灵活地控制,调节,进而避免单次负载迁移量过大导致的卡顿问题。
[0084]
作为一种可选的方案,根据参考迁移负载量及迁移参数上限值,确定待迁移的目标元数据子树包括:
[0085]
s1,在迁移参数上限值为迁移负载量上限比例的情况下,获取参考迁移负载量与迁移负载量上限比例二者的乘积,得到目标迁移负载量;
[0086]
s2,按照目标迁移负载量确定目标元数据子树。
[0087]
可选地,在本实施例中,按照目标迁移负载量确定目标元数据子树包括:遍历当前元数据服务器中存储的元数据子树,重复执行以下操作,直至已完成迁移的迁移负载量达到目标迁移负载量:
[0088]
s21,确定当前已完成迁移的当前迁移负载量;
[0089]
s22,在当前迁移负载量尚未达到目标迁移负载量的情况下,从当前元数据服务器中获取当前元数据子树,其中,当前元数据子树对应的负载量为当前数据负载量;
[0090]
s23,将当前元数据子树确定为目标元数据子树,并在完成对当前元数据子树的迁移后,更新当前迁移负载量,其中,更新前的当前负载量与更新后的当前负载量之间的差值为当前数据负载量。
[0091]
具体结合图8所示示例进行说明:假设mds集群中包括mds
0
、mds
1
、mds
2
,其中当前元数据服务器仍以mds
0
为例。进一步,假设如图8(a)所示mds
0
处于过载状态(超过平均负载线,同时超过绝对负载线),且其他两个mds(即mds
1
、mds
2
)处于轻载状态。进一步假设迁移参数上限值为迁移负载量上限比例,且迁移负载量上限比例ratio=1/3。
[0092]
在mds
0
通过自身负载量meta_load减去平均负载量avg_meta_load(即平均负载线),得到参考迁移负载量amount(如图8(a)所示用高度l1表示上述amount)。根据上述迁移控制策略确定目标迁移负载量=amount*1/3。然后重复执行以下操作:
[0093]
在每次迁移完一个元数据子树后,mds
0
都将计算当前已完成迁移的当前迁移负载量cur_amount。如果当前迁移负载量cur_amount<目标迁移负载量amount*1/3,则继续获取元数据子树进行迁移。而如果当前迁移负载量cur_amount>=目标迁移负载量amount*1/3,则终止本次负载均衡过程,表示完成迁移。如图8(b)所示为迁移结果:将目标迁移负载量amount*1/3(如图中黑色实心方块)迁移至mds
1
中。
[0094]
也就是说,在每一个子树负载被迁出后,都会判定当前已完成迁移的当前迁移负载量是否达到目标迁移负载量,如果达到目标迁移负载量就马上结束本次负载均衡过程。
[0095]
通过本申请提供的实施例,将迁移负载量上限比例作为迁移负载量控制评估条件,在每次完成迁移后,都进行评估判定,从而实现减少单次负载均衡过程的迁移负载量,达到提高对负载均衡控制的灵活性。
[0096]
作为一种可选的方案,根据参考迁移负载量及迁移参数上限值,确定待迁移的目标元数据子树包括:
[0097]
s1,在迁移参数上限值为迁移子树上限数量的情况下,将迁移子树上限数量作为
目标迁移子树数量;
[0098]
s1,按照目标迁移子树数量确定目标元数据子树。
[0099]
可选地,在本实施例中,按照目标迁移子树数量确定目标元数据子树包括:遍历当前元数据服务器中存储的元数据子树,重复执行以下操作,直至已完成迁移的迁移子树数量达到目标迁移子树数量:
[0100]
s21,确定当前已完成迁移的当前迁移子树数量;
[0101]
s22,在当前迁移子树数量尚未达到目标迁移子树数量的情况下,从当前元数据服务器中获取当前元数据子树;
[0102]
s23,将当前元数据子树确定为目标元数据子树,并在完成对当前元数据子树的迁移后,对当前迁移子树数量进行减一处理。
[0103]
具体结合图9所示示例进行说明:假设mds集群中包括mds
0
、mds
1
、mds
2
,其中当前元数据服务器仍以mds
0
为例。进一步,假设如图8(a)所示mds
0
处于过载状态(超过平均负载线,同时超过绝对负载线),且其他两个mds(即mds
1
、mds
2
)处于轻载状态。进一步假设迁移参数上限值为迁移子树上限数量,且迁移子树上限数量max=4。
[0104]
在mds
0
通过自身负载量meta_load减去平均负载量avg_meta_load(即平均负载线),得到参考迁移负载量amount(如图9(a)所示用高度l1表示上述amount)。根据上述迁移控制策略确定目标迁移子树数量=4。然后重复执行以下操作:
[0105]
在每次迁移完一个元数据子树后,mds
0
都统计当前已被迁移的当前迁移子树数量cur_count_subtree。如果当前迁移子树数量cur_count_subtree<目标迁移子树数量4,则继续获取元数据子树进行迁移。而如果当前迁移子树数量cur_count_subtree>=目标迁移子树数量4,则终止本次负载均衡过程,表示完成迁移。如图9(b)所示为迁移结果:将元数据子树1、元数据子树3和元数据子树6迁移至mds
1
中,将元数据子树2迁移至mds
2
中,当前迁移子树数量已达到目标迁移子树数量4。
[0106]
也就是说,在每一个子树负载被迁出后,都会判定当前已完成迁移的当前迁移子树数量是否达到目标迁移子树数量,如果达到目标迁移子树数量就马上结束本次负载均衡过程。
[0107]
通过本申请提供的实施例,将迁移子树上限数量作为迁移负载量控制评估条件,在每次完成迁移后,都进行评估判定,从而实现减少单次负载均衡过程的迁移负载量,达到提高对负载均衡控制的灵活性。
[0108]
作为一种可选的方案,在确定元数据服务器集群的平均负载值之后,还包括:
[0109]
s1,根据当前负载状态信息获取当前负载值,其中,当前负载状态信息中包括以下至少一种状态参数的参数值:当前元数据服务器在单位时间内处理请求的数量、当前元数据服务器的处理器使用率、所述当前元数据服务器的负载量;
[0110]
s2,获取与当前负载值匹配的负载上限值。
[0111]
需要说明的是,上述用于进行绝对过载判定的状态参数可以包括但不限于以下至少之一:当前元数据服务器在单位时间内处理请求的数量、当前元数据服务器的处理器使用率、所述当前元数据服务器的负载量。也就是说,每个状态参数都可以单独用于绝对过载评估,对应的状态参数上限值都可以作为绝对过载的判定阈值条件。其中,在包括至少两个状态参数,可以但不限于获取上述至少两个状态参数的加权求和结果或乘积,来作为最终
用于判定的负载值。本实施例中对此不作任何限定。
[0112]
图10所示为本申请实施例中负载均衡控制的全流程图。假设mds集群中包括mds
0
、mds
1
、mds
2
,其中当前元数据服务器仍以mds
0
为例。其中假设mds
0
处于过载状态(超过平均负载线,同时超过绝对负载线),且其他两个mds(即mds
1
、mds
2
)处于轻载状态。确定需要将mds
0
中的部分元数据子树迁移

mds
1
、mds
2
中。迁移过程可以如下:
[0113]
如步骤s1002,判断mds
0
中元数据子树是否遍历结束?在mds
0
中元数据子树未遍历结束的情况下,执行步骤s1004,确定当前的元数据子树t0是否处于闲置?若确定前的元数据子树t0并非处于闲置,则返回步骤s1002。若确定处于闲置,则执行步骤s1006,将该元数据子树t0作为待迁移的目标元数据迁移子树,迁移该闲置的元数据子树t0。完成迁移后执行步骤s1008,根据迁移控制策略判定是否达到目标迁移负载量(根据迁移负载量上限比例计算得到)或目标迁移子树数量(迁移子树上限数量),若未达到,则返回步骤s1002,若达到则如步骤s1018结束。
[0114]
而在mds
0
中元数据子树遍历结束的情况下,则执行步骤s1010,确定轻载mds是否遍历结束?假设当前轻载mds为mds
1
,轻载mds尚未遍历结束,则如步骤s1012,判断mds
0
中元数据子树是否遍历结束?若mds
0
中元数据子树遍历并未结束,则如步骤s1014,确定当前轻载mds
1
中的负载总量是否已达标(即是否达到mds
1
的负载量上限)?若未达标,则表示mds
1
可以继续接受迁移,并如步骤s1016,根据迁移控制策略判定是否达到目标迁移负载量(根据迁移负载量上限比例计算得到)或目标迁移子树数量(迁移子树上限数量)。若达标,则表示mds
1
无法继续接受迁移,返回以获取下一个轻载mds,如mds
2
,以将尚未完成迁移的元数据子树迁移至mds
2
,从而便于完成对mds
0
中参考迁移负载量的全部迁移。最后在迁移完成后结束,如步骤s1018。
[0115]
在本申请实施例中,对元数据服务器集群进行动态负载均衡地优化调整,以更充分得挖掘、利用mds集群中每一个mds的能力,避免了mds能力的浪费和没必要的元数据子树迁移,综合性的提升了cephfs multi-mds集群的服务能力,提高了cephfs的整体性能。此外,在相同负载情况下,本申请实施例中能使cephfs multi-mds集群中每个mds多输出10%的能力。从另一角度看,cephfs multi-mds集群原本最大可以提供n个mds节点的服务能力,采用本申请实施例中后,就能够多提供n*10%个mds节点的服务能力。如果n个mds节点的服务能力已经满足当前业务需求,采用本申请实施例中后,就可以裁撤掉1-1/(1+10%)=9%的mds节点,很好的节省了集群建设的成本。
[0116]
根据本发明实施例的另一个方面,如图11所示,还提供了一种上述负载均衡控制方法,该方法包括:
[0117]
s1102,获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及位于元数据服务器集群中当前元数据服务器的当前负载值;
[0118]
s1104,在当前元数据服务器的当前负载值大于平均负载值的情况下,确定当前元数据服务器处于相对过载状态;
[0119]
s1106,在当前元数据服务器处于相对过载状态的情况下,比对当前负载值和为当前元数据服务器配置的负载上限值;
[0120]
s1108,在当前负载值大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0121]
s1110,对处于过载状态下的当前元数据服务器中进行元数据迁移。
[0122]
可选地,在本实施例中,获取元数据服务器集群中各个元数据服务器的负载值的平均负载值包括:获取各个元数据服务器对应的对象负载值,得到多个对象负载值;获取多个对象负载值的平均值,作为平均负载值。
[0123]
可选地,在本实施例中,在获取元数据服务器集群中各个元数据服务器的负载值的平均负载值之后,还包括:在当前负载值小于等于平均负载值的情况下,确定当前元数据服务器处于第一轻载状态;在比对当前负载值和为当前元数据服务器配置的负载上限值之后,还包括:在当前负载值小于等于负载上限值的情况下,确定当前元数据服务器处于第二轻载状态。
[0124]
具体实施例可以参考上述方法实施例,这里不再赘述。
[0125]
根据本发明实施例的又一个方面,还提供了一种上述负载均衡控制方法,该方法包括:
[0126]
s1,获取元数据服务器集群中各个元数据服务器的负载值;
[0127]
s2,根据负载值确定出元数据服务器集群中的当前元数据服务器处于过载状态;
[0128]
s3,从当前元数据服务器中确定出待迁移的目标元数据子树,并从元数据服务器集群中当前元数据服务器之外的其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器处于非过载状态:
[0129]
s4,将目标元数据子树迁移到目标元数据服务器中。
[0130]
可选地,在本实施例中,根据负载值确定出元数据服务器集群中的当前元数据服务器处于过载状态包括:获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及当前元数据服务器的当前负载值;在当前元数据服务器的当前负载值大于平均负载值,且当前负载值大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态。
[0131]
可选地,在本实施例中,从元数据服务器集群中当前元数据服务器之外的其他元数据服务器中确定出目标元数据服务器包括:获取元数据服务器集群中各个元数据服务器的负载值的平均负载值;将元数据服务器集群中负载值小于平均负载值的元数据服务器,确定为处于第一轻载状态;将元数据服务器集群中负载值小于平均负载值,且小于对应配置的负载上限值的元数据服务器,确定为处于第二轻载状态;从处于第一轻载状态中的元数据服务器和处于第二轻载状态中的元数据服务器中,确定出目标元数据服务器。
[0132]
可选地,在本实施例中,从当前元数据服务器中确定出待迁移的目标元数据子树包括:
[0133]
遍历处于过载状态的当前元数据服务器中的元数据子树,依次执行以下操作:
[0134]
在当前元数据服务器中的元数据子树尚未完成全部遍历的情况下,获取当前元数据子树;
[0135]
在当前元数据子树处于闲置的情况下,将当前元数据子树确定为目标元数据子树,并更新迁移状态参数,其中,迁移状态参数包括以下至少之一:当前元数据服务器已迁出的迁移负载量,已确定的目标元数据子树的数量;
[0136]
在更新后的迁移状态参数并未达到迁移结束条件的情况下,获取下一个元数据子树,作为当前元数据子树。
[0137]
可选地,在本实施例中,将目标元数据子树迁移到目标元数据服务器中包括:
[0138]
遍历目标元数据服务器,依次执行以下操作:
[0139]
在目标元数据服务器尚未完成全部遍历的情况下,获取当前参考元数据服务器,并遍历当前参考元数据服务器中的元数据子树;
[0140]
在当前参考元数据服务器中的元数据子树尚未完成全部遍历的情况下,获取当前参考元数据服务器当前的负载总量;
[0141]
在当前参考元数据服务器当前的负载总量尚未达到为当前参考元数据服务器配置的负载上限值的情况下,确定当前参考元数据服务器为接收所要迁移的目标元数据子树的当前候选元数据服务器,并获取当前的迁移状态参数;
[0142]
在当前的迁移状态参数并未达到迁移结束条件的情况下,将目标元数据子树向确定出的当前候选元数据服务器中的闲置元数据子树进行元数据迁移;
[0143]
在当前的迁移状态参数达到迁移结束条件的情况下,停止,向确定出的当前候选元数据服务器中的闲置元数据子树进行元数据迁移;
[0144]
在当前参考元数据服务器中的元数据子树完成全部遍历的情况下,从其他元数据服务器中获取下一个参考元数据服务器,作为当前参考元数据服务器;
[0145]
在目标元数据服务器完成全部遍历的情况下,或达到迁移结束条件的情况下,提示完成元数据迁移,其中,迁移结束条件包括以下至少之一:已迁出的迁移负载量达到目标负载量,已迁移的目标元数据子树的数量达到目标迁移子树数量。
[0146]
具体实施例可以参考上述方法实施例,这里不再赘述。
[0147]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0148]
根据本发明实施例的另一个方面,还提供了一种用于实施上述负载均衡控制方法的负载均衡控制装置。如图12所示,该装置包括:
[0149]
1)第一获取单元1202,用于获取元数据服务器集群中当前元数据服务器之外的其他元数据服务器各自定期发送的心跳信息,其中,心跳信息中携带有元数据服务器的负载状态信息;
[0150]
2)第一确定单元1204,用于根据其他元数据服务器各自的负载状态信息及当前元数据服务器的当前负载状态信息,确定元数据服务器集群的平均负载值;
[0151]
3)第二确定单元1206,用于在当前负载状态信息指示当前元数据服务器的当前负载值大于平均负载值,且大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0152]
4)第三确定单元1208,用于从当前元数据服务器中确定出待迁移的目标元数据子树,并从其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器的负载值小于平均负载值;
[0153]
5)迁移控制单元1210,用于将目标元数据子树迁移至目标元数据服务器。
[0154]
可选地,在本实施例中,第二确定单元1206,包括:
[0155]
1)解析模块,用于解析其他元数据服务器各自的负载状态信息,以获取每个元数据服务器对应的对象负载值,得到多个对象负载值;
[0156]
2)第一获取模块,用于获取多个对象负载值的平均值,作为平均负载值;
[0157]
3)第一比对模块,用于比对当前负载值和平均负载值;
[0158]
4)第二比对模块,用于在当前负载值大于平均负载值的情况下,比对当前负载值和负载上限值;
[0159]
5)第一确定模块,用于在当前负载值大于负载上限值的情况下,确定当前元数据服务器处于过载状态。
[0160]
可选地,在本实施例中,还包括:在比对当前负载值和平均负载值之后,在当前负载值小于平均负载值的情况下,确定当前元数据服务器处于第一轻载状态。
[0161]
可选地,在本实施例中,还包括:在比对当前负载值和负载上限值之后,还包括:在当前负载值小于负载上限值的情况下,确定当前元数据服务器处于第二轻载状态。
[0162]
可选地,在本实施例中,第三确定单元1208,包括:
[0163]
1)第二获取模块,用于获取当前负载值与平均负载值的负载差值;
[0164]
2)第二确定模块,用于将负载差值确定为当前元数据服务器所要迁移的参考迁移负载量;
[0165]
3)第三获取模块,用于获取为当前元数据服务器配置的迁移参数上限值;
[0166]
4)第三确定模块,用于根据参考迁移负载量及迁移参数上限值,确定待迁移的目标元数据子树。
[0167]
可选地,在本实施例中,第三确定模块通过以下步骤实现根据参考迁移负载量及迁移参数上限值,确定待迁移的目标元数据子树:在迁移参数上限值为迁移负载量上限比例的情况下,获取参考迁移负载量与迁移负载量上限比例二者的乘积,得到目标迁移负载量;按照目标迁移负载量确定目标元数据子树。
[0168]
可选地,在本实施例中,按照目标迁移负载量确定目标元数据子树包括:遍历当前元数据服务器中存储的元数据子树,重复执行以下操作,直至已完成迁移的迁移负载量达到目标迁移负载量:
[0169]
s1,确定当前已完成迁移的当前迁移负载量;
[0170]
s2,在当前迁移负载量尚未达到目标迁移负载量的情况下,从当前元数据服务器中获取当前元数据子树,其中,当前元数据子树对应的负载量为当前数据负载量;
[0171]
s3,将当前元数据子树确定为目标元数据子树,并在完成对当前元数据子树的迁移后,更新当前迁移负载量,其中,更新前的当前负载量与更新后的当前负载量之间的差值为当前数据负载量。
[0172]
可选地,在本实施例中,第三确定模块通过以下步骤实现根据参考迁移负载量及迁移参数上限值,确定待迁移的目标元数据子树:在迁移参数上限值为迁移子树上限数量的情况下,将迁移子树上限数量作为目标迁移子树数量;按照目标迁移子树数量确定目标元数据子树。
[0173]
可选地,在本实施例中,按照目标迁移子树数量确定目标元数据子树包括:遍历当前元数据服务器中存储的元数据子树,重复执行以下操作,直至已完成迁移的迁移子树数量达到目标迁移子树数量:
[0174]
s1,确定当前已完成迁移的当前迁移子树数量;
[0175]
s2,在当前迁移子树数量尚未达到目标迁移子树数量的情况下,从当前元数据服务器中获取当前元数据子树;
[0176]
s3,将当前元数据子树确定为目标元数据子树,并在完成对当前元数据子树的迁移后,对当前迁移子树数量进行减一处理。
[0177]
可选地,在本实施例中,上述装置还包括:在确定元数据服务器集群的平均负载值之后,根据当前负载状态信息获取当前负载值,其中,当前负载状态信息中包括以下至少一种状态参数的参数值:当前元数据服务器在单位时间内处理请求的数量、当前元数据服务器的处理器使用率、当前元数据服务器的负载量;获取与当前负载值匹配的所述负载上限值。
[0178]
在本实施例中,具体的实施例可以参考上述方法中对应实施例,本实施例中对此不再赘述。
[0179]
根据本发明实施例的又一个方面,还提供了一种用于实施上述负载均衡控制方法的负载均衡控制装置。该装置包括:
[0180]
获取单元,用于获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及位于元数据服务器集群中当前元数据服务器的当前负载值;
[0181]
第一确定单元,用于在当前元数据服务器的当前负载值大于平均负载值的情况下,确定当前元数据服务器处于相对过载状态;
[0182]
比对单元,用于在当前元数据服务器处于相对过载状态的情况下,比对当前负载值和为当前元数据服务器配置的负载上限值;
[0183]
第二确定单元,用于在当前负载值大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0184]
迁移单元,用于对处于过载状态下的当前元数据服务器中进行元数据迁移。
[0185]
在本实施例中,具体的实施例可以参考上述方法中对应实施例,本实施例中对此不再赘述。
[0186]
根据本发明实施例的又一个方面,还提供了一种用于实施上述负载均衡控制方法的负载均衡控制装置。该装置包括:
[0187]
获取单元,用于获取元数据服务器集群中各个元数据服务器的负载值;
[0188]
第一确定单元,用于根据负载值确定出元数据服务器集群中的当前元数据服务器处于过载状态;
[0189]
第二确定单元,用于从当前元数据服务器中确定出待迁移的目标元数据子树,并从元数据服务器集群中当前元数据服务器之外的其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器处于非过载状态;
[0190]
迁移单元,用于将目标元数据子树迁移到目标元数据服务器中。
[0191]
在本实施例中,具体的实施例可以参考上述方法中对应实施例,本实施例中对此不再赘述。
[0192]
根据本发明实施例的又一个方面,还提供了一种用于实施上述负载均衡控制方法的电子设备,该电子设备可以是图1所示的服务器。如图13所示,该电子设备包括存储器1302和处理器1304,该存储器1302中存储有计算机程序,该处理器1304被设置为通过计算
机程序执行上述任一项方法实施例中的步骤。
[0193]
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
[0194]
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
[0195]
s1,获取元数据服务器集群中当前元数据服务器之外的其他元数据服务器各自定期发送的心跳信息,其中,心跳信息中携带有元数据服务器的负载状态信息;
[0196]
s2,根据其他元数据服务器各自的负载状态信息及当前元数据服务器的当前负载状态信息,确定元数据服务器集群的平均负载值;
[0197]
s3,在当前负载状态信息指示当前元数据服务器的当前负载值大于平均负载值,且大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0198]
s4,从当前元数据服务器中确定出待迁移的目标元数据子树,并从其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器的负载值小于平均负载值;
[0199]
s5,将目标元数据子树迁移至目标元数据服务器。
[0200]
可选地,在本实施例中,上述处理器还可以被设置为通过计算机程序执行以下步骤:
[0201]
s1,获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及位于元数据服务器集群中当前元数据服务器的当前负载值;
[0202]
s2,在当前元数据服务器的当前负载值大于平均负载值的情况下,确定当前元数据服务器处于相对过载状态;
[0203]
s3,在当前元数据服务器处于相对过载状态的情况下,比对当前负载值和为当前元数据服务器配置的负载上限值;
[0204]
s4,在当前负载值大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0205]
s5,对处于过载状态下的当前元数据服务器中进行元数据迁移。
[0206]
可选地,在本实施例中,上述处理器还可以被设置为通过计算机程序执行以下步骤:
[0207]
s1,获取元数据服务器集群中各个元数据服务器的负载值;
[0208]
s2,根据负载值确定出元数据服务器集群中的当前元数据服务器处于过载状态;
[0209]
s3,从当前元数据服务器中确定出待迁移的目标元数据子树,并从元数据服务器集群中当前元数据服务器之外的其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器处于非过载状态:
[0210]
s4,将目标元数据子树迁移到目标元数据服务器中。
[0211]
可选地,本领域普通技术人员可以理解,图13所示的结构仅为示意,电子装置电子设备也可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobile internet devices,mid)、pad等终端设备。图13其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图13中所示更多或者更少的组件(如网络接口等),或者具有与图13所示不同的配置。
[0212]
其中,存储器1302可用于存储软件程序以及模块,如本发明实施例中的负载均衡
控制方法和装置对应的程序指令/模块,处理器1304通过运行存储在存储器1302内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的负载均衡控制方法。存储器1302可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1302可进一步包括相对于处理器1304远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1302具体可以但不限于用于各个mds的负载状态信息等信息。作为一种示例,如图13所示,上述存储器1302中可以但不限于包括上述负载均衡控制装置中的第一获取单元1102、第二确定单元1104、第二确定单元1106、第三确定单元1108及迁移控制单元1110。此外,还可以包括但不限于上述负载均衡控制装置中的其他模块单元,本示例中不再赘述。
[0213]
可选地,上述的传输装置1306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1306包括一个网络适配器(network interface controller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1306为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
[0214]
此外,上述电子设备还包括:显示器1308,用于显示各个mds的负载状态信息;和连接总线1310,用于连接上述电子设备中的各个模块部件。
[0215]
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(p2p,peer to peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
[0216]
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述云存储方面各种可选实施例中提供的步骤。
[0217]
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
[0218]
s1,获取元数据服务器集群中当前元数据服务器之外的其他元数据服务器各自定期发送的心跳信息,其中,心跳信息中携带有元数据服务器的负载状态信息;
[0219]
s2,根据其他元数据服务器各自的负载状态信息及当前元数据服务器的当前负载状态信息,确定元数据服务器集群的平均负载值;
[0220]
s3,在当前负载状态信息指示当前元数据服务器的当前负载值大于平均负载值,且大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0221]
s4,从当前元数据服务器中确定出待迁移的目标元数据子树,并从其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器的负载值小于平均负载值;
[0222]
s5,将目标元数据子树迁移至目标元数据服务器。
[0223]
可选地,在本实施例中,上述计算机可读的存储介质还可以被设置为存储用于执
行以下步骤的计算机程序:
[0224]
s1,获取元数据服务器集群中各个元数据服务器的负载值的平均负载值,及位于元数据服务器集群中当前元数据服务器的当前负载值;
[0225]
s2,在当前元数据服务器的当前负载值大于平均负载值的情况下,确定当前元数据服务器处于相对过载状态;
[0226]
s3,在当前元数据服务器处于相对过载状态的情况下,比对当前负载值和为当前元数据服务器配置的负载上限值;
[0227]
s4,在当前负载值大于为当前元数据服务器配置的负载上限值的情况下,确定当前元数据服务器处于过载状态;
[0228]
s5,对处于过载状态下的当前元数据服务器中进行元数据迁移。
[0229]
可选地,在本实施例中,上述计算机可读的存储介质还可以被设置为存储用于执行以下步骤的计算机程序:
[0230]
s1,获取元数据服务器集群中各个元数据服务器的负载值;
[0231]
s2,根据负载值确定出元数据服务器集群中的当前元数据服务器处于过载状态;
[0232]
s3,从当前元数据服务器中确定出待迁移的目标元数据子树,并从元数据服务器集群中当前元数据服务器之外的其他元数据服务器中确定出目标元数据服务器,其中,目标元数据服务器处于非过载状态:
[0233]
s4,将目标元数据子树迁移到目标元数据服务器中。
[0234]
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
[0235]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0236]
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
[0237]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0238]
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0239]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0240]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0241]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1