一种集群负载分配方法及装置
技术领域
本发明涉及集群负载分配技术领域,尤其涉及一种集群负载分配方法及装置。
背景技术
现有大规模数据中心面临集群规模大、负载类型多、负载分配难的问题。通常采用时间片轮转分配法或者最小节点分配法进行负载分配。时间片轮转属于随机分配分配方式,该方式会产生节点负载分配不均、节点资源浪费的问题;最小节点分配法每次将负载分配到负载最小的节点,会导致节点状态呈“扇形”的分布,同时也会产生负载分配不均衡的问题。
发明内容
本发明实施例提供一种集群负载分配方法及装置能解决现有技术集群负载分配不均的问题。
本发明一实施例提供一种集群负载分配方法,包括:
根据集群中每一子集群内所有节点的CPU使用率以及内存使用率,计算每一所述子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值;其中,所述集群包括若干子集群,每一所述子集群包括若干节点;
根据所有所述子集群的子集群CPU使用率和子集群内存使用率,计算所述集群的集群CPU使用率和集群内存使用率;
逐一将每一所述子集群的子集群CPU使用率和子集群内存使用率,与所述集群CUP使用率和集群内存使用率进行比对,并根据比对结果将各所述子集群进行分类;
计算所述集群中负载的CPU请求量均值和内存请求量均值,继而将待分配负载的CPU请求量和内存请求量,与所述CPU请求量均值和内存请求量均值进行比对,并根据比对结果对所述待分配负载进行分类;
将与所述待分配负载所属类型互补且综合负载值最低的子集群作为目标子集群,继而将所述目标子集群中的各个节点进行分类;
根据所述待分配负载的类型以及所述目标子集群中各节点的类型,确定目标节点,继而将所述待分配负载分配至所述目标节点中。
进一步的,所述根据同一子集群内所有节点的CPU使用率以及内存使用率,计算每一所述子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值,具体包括:
通过以下公式计算每一所述子集群的子集群CPU使用率:
通过以下公式计算每一所述子集群的子集群内存使用率:
通过以下公式计算每一所述子集群的子集群综合负载值:
其中,Ci为子集群CPU使用率、Mi为子集群内存使用率、Loadi为子集群综合负载值、Nn为子集群内的节点数量、cij表示节点的CPU使用率、mij表示节点的内存使用率、1≤j≤Nn、1≤i≤n、n为所述子集群的数量。
进一步的,所述根据所有所述子集群的子集群CPU使用率和子集群内存使用率,计算所述集群的集群CPU使用率和集群内存使用率,具体包括:
其中,C为所述集群CPU使用率,M为所述集群内存使用率。
进一步的,所述逐一将每一所述子集群的子集群CPU使用率和子集群内存使用率,与所述集群CUP使用率和集群内存使用率进行比对,并根据比对结果将各所述子集群进行分类,具体包括:
若,所述子集群的CPU使用率大于所述集群CPU使用率,且所述子集群内存使用率大于所述集群内存使用率,则将所述子集群分为高CPU高内存子集群;
若,所述子集群的CPU使用率大于所述集群CPU使用率,且所述子集群内存使用率小于所述集群内存使用率,则将所述子集群分为高CPU低内存子集群;
若,所述子集群的CPU使用率小于所述集群CPU使用率,且所述子集群内存使用率大于所述集群内存使用率,则将所述子集群分为低CPU高内存子集群;
若,所述子集群的CPU使用率小于所述集群CPU使用率,且所述子集群内存使用率小于所述集群内存使用率,则将所述子集群分为低CPU低内存子集群。
进一步的,所述将待分配负载的CPU和内存,与所述CPU请求量均值和内存请求量均值进行比对,并根据比对结果对所述待分配负载进行分类,具体包括:
若,所述待分配负载的CPU请求量大于所述CPU请求量均值,且所述待分配负载的内存请求量大于所述内存请求量均值,则将所述待分配负载分为高CPU高内存负载;
若,所述待分配负载的CPU请求量大于所述CPU请求量均值,且所述待分配负载的内存请求量小于所述内存请求量均值,则将所述待分配负载分为高CPU低内存负载;
若,所述待分配负载的CPU请求量小于所述CPU请求量均值,且所述待分配负载的内存请求量大于所述内存请求量均值,则将所述待分配负载分为低CPU高内存负载;
若,所述待分配负载的CPU请求量小于所述CPU请求量均值,且所述待分配负载的内存请求量小于所述内存请求量均值,则将所述待分配负载分为低CPU低内存负载。
进一步的,所述将与所述待分配负载所属类型互补且综合负载值最低的子集群作为目标子集群,具体包括:
若,所述待分配负载为高CPU高内存负载,则将类型为低CPU低内存子集群的所有子集群中综合负载值最低的子集群作为目标子集群;
若,所述待分配负载为高CPU低内存负载,则将类型为低CPU高内存子集群的所有子集群中综合负载值最低的子集群作为目标子集群;
若,所述待分配负载为低CPU高内存负载,则将类型为高CPU低内存子集群的所有子集群中综合负载值最低的子集群作为目标子集群;
若,所述待分配负载为低CPU低内存负载,则将类型为高CPU低高存子集群的所有子集群中综合负载值最低的子集群作为目标子集群。
进一步的,所述将所述目标子集群中的各个节点进行分类,具体包括:
将所述目标子集群中的各节点作为比对节点;并逐一将每一比对节点的CPU使用率以及内存使用率,与所述目标子集群的子集群CPU使用率以及子集群内存使用率进行比对;
若所述比对节点的CPU使用率大于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率大于所述目标子集群的子集群内存使用率,则将所述对比节点分为高CPU高内存节点;
若所述比对节点的CPU使用率大于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率小于所述目标子集群的子集群内存使用率,则将所述对比节点分为高CPU低内存节点;
若所述比对节点的CPU使用率小于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率大于所述目标子集群的子集群内存使用率,则将所述对比节点分为低CPU高内存节点;
若所述比对节点的CPU使用率小于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率小于所述目标子集群的子集群内存使用率,则将所述对比节点分为低CPU低内存节点。
进一步的,所述根据所述待分配负载的类型以及所述目标子集群中各节点的类型,确定目标节点,具体包括:
若所述待分配负载为高CPU高内存负载,则在类型为低CPU低内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;
若所述待分配负载为高CPU低内存负载,则在类型为低CPU高内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;
若所述待分配负载为低CPU高内存负载,则在类型为高CPU低内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;
若所述待分配负载为低CPU低内存负载,则在类型为高CPU高内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;其中,所述满足预设条件的比对节点为,符合以下公式的比对节点:
在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
本发明另一实施例提供了一种集群负载分配装置,包括子集群数据计算模块、集群数据计算模块、子集群分类模块、待分配负载分类模块、目标子集群提取及节点分类模块和负载分配模块;
所述子集群数据计算模块,用于根据集群中每一子集群内所有节点的CPU使用率以及内存使用率,计算每一所述子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值;其中,所述集群包括若干子集群,每一所述子集群包括若干节点;
所述集群数据计算模块,用于根据所有所述子集群的子集群CPU使用率和子集群内存使用率,计算所述集群的集群CPU使用率和集群内存使用率;
所述子集群分类模块,用于逐一将每一所述子集群的子集群CPU使用率和子集群内存使用率,与所述集群CUP使用率和集群内存使用率进行比对,并根据比对结果将各所述子集群进行分类;
所述待分配负载分类模块,用于计算所述集群中负载的CPU请求量均值和内存请求量均值,继而将待分配负载的CPU请求量和内存请求量,与所述CPU请求量均值和内存请求量均值进行比对,并根据比对结果对所述待分配负载进行分类;
所述目标子集群提取及节点分类模块,用于将与所述待分配负载所属类型互补且综合负载值最低的子集群作为目标子集群,继而将所述目标子集群中的各个节点进行分类;
所述负载分配模块,用于根据所述待分配负载的类型以及所述目标子集群中各节点的类型,确定目标节点,以使用户将所述待分配负载分配至所述目标节点。
通过实施本发明实施例具有如下有益效果:
本发明实施例提供了一种集群负载分配方法及装置,所述方法首先计算集群中每个子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值,以及集群总体的集群CPU使用率、集群内存使用率,然后根据上述数据对各个子集群进行分类,紧接着对待分配负载进行分类,并根据待分配负载的类别选取与其类别互补的子集群中综合负载值最小的子集群,作为目标子集群,然后将目标子集群中各个节点进行分类;再次根据互补原则选取出目标节点,最后将待分配到目标节点进行运行计算,实现了待分配负载的分配;本发明实施例以CPU使用率,内存使用率以及综合负载值三个维度为基础,按互补原则进行分配,从而达到了负载均衡的效果,解决现有技术负载分配不均衡的问题。
附图说明
图1是本发明一实施例提供的一种集群负载分配方法的流程示意图。
图2是本发明一实施例提供的一种集群负载分配装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先本发明所提及的“负载”指代由计算机运行计算的负载任务(或者说计算任务)
如图1所示,本发明一实施例提供了一种集群负载分配方法,包括:
步骤S101:根据集群中每一子集群内所有节点的CPU使用率以及内存使用率,计算每一所述子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值;其中,所述集群包括若干子集群,每一所述子集群包括若干节点;
步骤S102:根据所有所述子集群的子集群CPU使用率和子集群内存使用率,计算所述集群的集群CPU使用率和集群内存使用率;
步骤S103:逐一将每一所述子集群的子集群CPU使用率和子集群内存使用率,与所述集群CUP使用率和集群内存使用率进行比对,并根据比对结果将各所述子集群进行分类;
步骤S104:计算所述集群中负载的CPU请求量均值和内存请求量均值,继而将待分配负载的CPU请求量和内存请求量,与所述CPU请求量均值和内存请求量均值进行比对,并根据比对结果对所述待分配负载进行分类;
步骤S105:将与所述待分配负载所属类型互补且综合负载值最低的子集群作为目标子集群,继而将所述目标子集群中的各个节点进行分类;
步骤S106:根据所述待分配负载的类型以及所述目标子集群中各节点的类型,确定目标节点,以使用户将所述待分配负载分配至所述目标节点。
对于步骤S101:将大规模数据中心按照网络结构划分为n个子集群B1,B1,…,Bn,每个子集群的节点数分别为N1,N1,…,Nn,这样集群中每一个节点Nodeij,1≤i≤n,1≤j≤Nn均隶属于一个子集群。每个子集群设定一个管理节点,管理节点除了完成管理功能,也可以兼做计算节点。
将节点Nodeij的CPU和内存使用率分别记为cij和mij;通过以下方式计算每一子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值;
通过以下公式计算每一所述子集群的子集群CPU使用率:
通过以下公式计算每一所述子集群的子集群内存使用率:
通过以下公式计算每一所述子集群的子集群综合负载值:
其中,Ci为子集群CPU使用率、Mi为子集群内存使用率、Loadi为子集群综合负载值、Nn为子集群内的节点数量、cij表示节点的CPU使用率、mij表示节点的内存使用率、1≤j≤Nn、1≤i≤n、n为所述子集群的数量。
对于步骤S102:在一个优选的实施例中,通过以下公式计算所述集群的集群CPU使用率:
其中,C为所述集群CPU使用率,M为所述集群内存使用率。
从而得到集群总体状态;
对于步骤S103:在一个优选的实施例中,通过以下方式对各个子集群进行分类,具体包括:
若,所述子集群的CPU使用率大于所述集群CPU使用率,且所述子集群内存使用率大于所述集群内存使用率,则将所述子集群分为高CPU高内存子集群;
若,所述子集群的CPU使用率大于所述集群CPU使用率,且所述子集群内存使用率小于所述集群内存使用率,则将所述子集群分为高CPU低内存子集群;
若,所述子集群的CPU使用率小于所述集群CPU使用率,且所述子集群内存使用率大于所述集群内存使用率,则将所述子集群分为低CPU高内存子集群;
若,所述子集群的CPU使用率小于所述集群CPU使用率,且所述子集群内存使用率小于所述集群内存使用率,则将所述子集群分为低CPU低内存子集群。
将各子集群与集群总体状态进行比较,将子集群分别归入以下四种分类:高CPU高内存子集群(Ci≥C&&Mi≥M,简称SC1)、高CPU低内存子集群(Ci≥C&&Mi<M,简称SC2)、低CPU高内存子集群(Ci<C&&Mi≥M,简称SC3)、低CPU低内存子集群(Ci<C&&Mi<M,简称SC4)。建立4个递增链表分别存储对应类型的子集群。将节点按照综合负载Loadi存入对应的递增链表中。
对于步骤S104:在一个优选的实施例中包括:
若,所述待分配负载的CPU请求量大于所述CPU请求量均值,且所述待分配复杂的内存请求量大于所述内存请求量均值,则将所述待分配负载分为高CPU高内存负载;
若,所述待分配负载的CPU请求量大于所述CPU请求量均值,且所述待分配负载的内存请求量小于所述内存请求量均值,则将所述待分配负载分为高CPU低内存负载;
若,所述待分配负载的CPU请求量小于所述CPU请求量均值,且所述待分配负载的内存请求量大于所述内存请求量均值,则将所述待分配负载分为低CPU高内存负载;
若,所述待分配负载的CPU请求量小于所述CPU请求量均值,且所述待分配负载的内存请求量小于所述内存请求量均值,则将所述待分配负载分为低CPU低内存负载。
具体的,计算集群中每个节点内运行负载任务(或者说计算任务)状态的平均状态
其中
表示集群负载的CPU请求量均值、
表示集群负载的内存请求量均值,即统计整个集群中所有运行中的负载任务(或者说计算任务)的CPU请求量和内存请求量,然后除以节点数目。将待分配负载(a,b)与集群负载均值
进行比较,获取待分配负载的类别,具体类别包括四种分类:高CPU高内存负载(L1)、高CPU低内存负载(L2)、低CPU高内存负载(L3)、低CPU低内存负载(L4);
对于步骤S105:在获取待分配负载的类型和各子集群的类别后,需要根据类别互补的原则,匹配与待分配负载对应的子集群类别;类别互补原则指的是:
高CPU高内存负载与低CPU低内存子集群互补;高CPU低内存负载与低CPU高内存子集群互补;低CPU高内存负载与高CPU低内存子集群互补;低CPU低内存负载与高CPU高内存子集群互补;具体的,若,所述待分配负载为高CPU高内存负载,则将类型为低CPU低内存子集群的所有子集群中综合负载值最低的子集群作为目标子集群;
若,所述待分配负载为高CPU低内存负载,则将类型为低CPU高内存子集群的所有子集群中综合负载值最低的子集群作为目标子集群;
若,所述待分配负载为低CPU高内存负载,则将类型为高CPU低内存子集群的所有子集群中综合负载值最低的子集群作为目标子集群;
若,所述待分配负载为低CPU低内存负载,则将类型为高CPU低高存子集群的所有子集群中综合负载值最低的子集群作为目标子集群。
具体到实例中,即根据待分配负载的类型,将待分配节点分配互补类型的子集群的子集群递增链表中数值最小的集群。
紧接着对目标子集群中的各个节点进行分类,具体的:
将所述目标子集群中的各节点作为比对节点;并逐一将每一比对节点的CPU使用率以及内存使用率,与所述目标子集群的子集群CPU使用率以及子集群内存使用率进行比对;
若所述比对节点的CPU使用率大于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率大于所述目标子集群的子集群内存使用率,则将所述对比节点分为高CPU高内存节点;
若所述比对节点的CPU使用率大于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率小于所述目标子集群的子集群内存使用率,则将所述对比节点分为高CPU低内存节点;
若所述比对节点的CPU使用率小于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率大于所述目标子集群的子集群内存使用率,则将所述对比节点分为低CPU高内存节点;
若所述比对节点的CPU使用率小于所述目标子集群的子集群CPU使用率,且所述比对节点的内存使用率小于所述目标子集群的子集群内存使用率,则将所述对比节点分为低CPU低内存节点。
对于步骤S106:最后根据互补原则以及预设条件,选取出目标节点,具体包括:若所述待分配负载为高CPU高内存负载,则在类型为低CPU低内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;
若所述待分配负载为高CPU低内存负载,则在类型为低CPU高内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;
若所述待分配负载为低CPU高内存负载,则在类型为高CPU低内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;
若所述待分配负载为低CPU低内存负载,则在类型为高CPU高内存节点的所有比对节点中,提取满足预设条件的比对节点,作为所述目标节点;其中,所述满足预设条件的比对节点为,符合以下公式的比对节点:
公式中a为待分配负载的CPU请求量,b为待分配负载的内存请求量,C
i、为目标子集群的子集群CPU使用率,M
i为目标子集群的子集群内存使用率,C
o为比对节点的CPU使用率,为比对节点的内存使用率
即先找到与待分配负载类型互补的对比节点,然后按公式
计算各个对比节点的值,将值最小的对比节点,作为目标节点,然后将待分配负载任务分配到目标节点中。
在上述方法项实施例的基础上,对应提供了装置项实施例;
如图2所示:本发明实施例提供的一种集群负载分配,包括:包括子集群数据计算模块、集群数据计算模块、子集群分类模块、待分配负载分类模块、目标子集群提取及节点分类模块和负载分配模块;
所述子集群数据计算模块,用于根据集群中每一子集群内所有节点的CPU使用率以及内存使用率,计算每一所述子集群的子集群CPU使用率、子集群内存使用率以及子集群综合负载值;其中,所述集群包括若干子集群,每一所述子集群包括若干节点;
所述集群数据计算模块,用于根据所有所述子集群的子集群CPU使用率和子集群内存使用率,计算所述集群的集群CPU使用率和集群内存使用率;
所述子集群分类模块,用于逐一将每一所述子集群的子集群CPU使用率和子集群内存使用率,与所述集群CUP使用率和集群内存使用率进行比对,并根据比对结果将各所述子集群进行分类;
所述待分配负载分类模块,用于计算所述集群中负载的CPU请求量均值和内存请求量均值,继而将待分配负载的CPU请求量和内存请求量,与所述CPU请求量均值和内存请求量均值进行比对,并根据比对结果对所述待分配负载进行分类;
所述目标子集群提取及节点分类模块,用于将与所述待分配负载所属类型互补且综合负载值最低的子集群作为目标子集群,继而将所述目标子集群中的各个节点进行分类;
所述负载分配模块,用于根据所述待分配负载的类型以及所述目标子集群中各节点的类型,确定目标节点,以使用户将所述待分配负载分配至所述目标节点。
可以理解的是,上述装置项实施例是与本发明方法项实施例相对应的,其可以实现本发明上述任意一项方法项实施例提供的集群负载分配方法。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。所述示意图仅仅是集群负载分配装置的示例,并不构成对集群负载分配装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
通过实施本发明实施例,本发明实施例以CPU使用率,内存使用率以及综合负载值三个维度为基础,按互补原则进行分配,从而达到了负载均衡的效果,解决现有技术负载分配不均衡的问题。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。