一种应用归属服务集群的分配方法和装置与流程

文档序号:11237116阅读:407来源:国知局
一种应用归属服务集群的分配方法和装置与流程

本申请涉及数据处理技术领域,特别是涉及一种应用归属服务集群的分配方法和一种应用归属服务集群的分配装置。



背景技术:

在一个典型的分布式系统中,为了便于对存储和计算进行管理,比较好的方式是以应用的形式对数据和任务进行隔离,将应用作为一个整体分配至一个由若干相互独立、通过网络互联的计算机组成的集群。同一集群上的不同应用拥有各自独立的存储空间,但共享集群的计算能力。

在这种架构的分布式系统中,其消耗主要为集群的一次性购置成本和集群间跨集群通讯而产生的累积性带宽消耗成本。其中,跨集群通讯主要是由于处于不同集群的应用之间相互访问数据造成,由此,产生了对应用归属服务集群的分配优化需求,以使得在满足计算、存储等约束条件的同时可以最大限度降低集群的购置成本和带宽消耗成本。

目前对应用归属服务集群的分配方法中,主要是依赖于用户凭借经验进行分配,但该方法需要耗费大量的人力物力和时间,造成分配效率较低的问题。而且,分配方案可能并非是最优方案,造成了成本的浪费。

此外,分布式系统中会不断增加新的应用和下线部分过期应用,集群也会进行机器扩容、机器报废等的处理,应用和集群处于一个动态变化的过程中,针对于动态变化的分布式系统,分配方案也需要检验是否适用于当前的分布式系统,当不适用时需要重新确定分配方案。因此,目前的分配方法可能需要人工重新进行多次分配,增加了对人力物力和时间的耗费,进一步降低了分配效率。



技术实现要素:

鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用归属服务集群的分配方法和相应的一种 应用归属服务集群的分配装置。

为了解决上述问题,本申请公开了一种应用归属服务集群的分配方法,包括:

将多个应用分配至多个服务集群,获得初始分配结果;

多次更换所述应用归属的服务集群,获得多个新增分配结果;

计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量;

选择资源消耗量最小的分配结果作为最优分配结果。

优选地,所述将多个应用分配至多个服务集群为:

按照排序针对各服务集群进行应用分配,直至所有应用均分配至某个服务集群;其中,针对排序在后的服务集群,在排序在前的服务集群分配后剩余的应用中进行应用分配。

优选地,在所述将多个应用分配至多个服务集群之前,所述方法还包括:

按照所述服务集群的至少一种负载性能,对多个服务集群进行排序。

优选地,在所述按照排序针对各服务集群进行应用分配之前,所述方法还包括:

计算任意两个应用之间的关联权重;

所述按照排序针对各服务集群进行应用分配包括:

从当前可选的多个应用中,选择关联权重最大的两个目标应用,并选择与所述目标应用之一的关联权重排序靠前的多个关联应用,分配至所述服务集群。

优选地,所述按照排序针对各服务集群进行应用分配还包括:

若至少一个应用未分配至所述服务集群,则将未分配的应用按照所需资源消耗量进行排序;

按照排序逐个将未分配的应用随机分配至某一服务集群。

优选地,在所述将多个应用分配至多个服务集群之前,所述方法还包括:

以所述应用为节点,以具备数据交换的两个应用为相邻节点,构建包括多个应用的节点网络图,所述关联权重为连接两个应用的边的边权重。

优选地,所述选择关联权重最大的两个目标应用包括:

查找所述节点网络图中边权重最大的目标边。

优选地,所述选择与所述目标应用之一的关联权重排序靠前的多个关联应用包括:

在包含所述目标边的子图中,以所述目标边的两个目标节点为起点,进行广度优先搜索;

从搜索的多个关联节点中,按照与所述目标节点的边权重从大到小,在未超出所述服务集群的负载性能的条件下,选择最多数量的关联节点。

优选地,在所述多次更换所述应用归属的服务集群,获得多个新增分配结果之后,所述方法还包括:

确定更换后的新增分配结果未超出各服务集群的负载性能。

优选地,所述多次更换所述应用归属的服务集群,获得多个新增分配结果包括:

在随机选择的两个服务集群中,分别随机选择一个应用进行交换,直至获得多个新增分配结果。

优选地,所述多次更换所述应用归属的服务集群,获得多个新增分配结果还包括:

针对当前获得的分配结果,依次选择两个分配结果,随机从两个分配结果中选择两个应用,并对选择的两个应用所归属的服务集群进行交换,获得多个新增分配结果;

和/或,随机选择一个应用并对所选择的应用归属的服务集群进行修改,获得多个新增分配结果。

优选地,在所述在随机选择的两个服务集群中,分别随机选择一个应用进行交换,直至获得多个新增分配结果之后,所述方法还包括:

筛选资源消耗量从小到大排序靠前的多个分配结果。

优选地,所述计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量包括:

计算所述初始分配结果和所述新增分配结果各自所需的集群购置成本;

和/或,计算所述初始分配结果和所述新增分配结果中各个应用跨集群的带宽消耗成本;加和各个应用的带宽消耗成本,得到所述初始分配结果和所述新增分配结果的总带宽消耗成本。

优选地,所述选择资源消耗量最小的分配结果作为最优分配结果包括:

针对当前获得的新增分配结果,若所述当前获得的新增分配结果的资源消耗量小于所述初始分配结果的资源消耗量,则将所述当前获得的新增分配结果作为当前最优分配结果,并与下一个新增分配结果进行比较,直至获得最优分配结果。

本申请还提供了一种应用归属服务集群的分配装置,包括:

应用初始分配模块,用于将多个应用分配至多个服务集群,获得初始分配结果;

应用多次更换模块,用于多次更换所述应用归属的服务集群,获得多个新增分配结果;

资源消耗量计算模块,用于计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量;

最优分配结果选择模块,用于选择资源消耗量最小的分配结果作为最优分配结果。

优选地,所述应用初始分配模块具体用于:

按照排序针对各服务集群进行应用分配,直至所有应用均分配至某个服务集群;其中,针对排序在后的服务集群,在排序在前的服务集群分配后剩余的应用中进行应用分配。

优选地,所述装置还包括:

服务集群排序模块,用于按照所述服务集群的至少一种负载性能,对多个服务集群进行排序。

优选地,所述装置还包括:

关联权重计算模块,用于计算任意两个应用之间的关联权重;

所述应用初始分配模块包括:

关联应用分配子模块,用于从当前可选的多个应用中,选择关联权重最 大的两个目标应用,并选择与所述目标应用之一的关联权重排序靠前的多个关联应用,分配至所述服务集群。

优选地,所述装置还包括:

应用排序模块,用于若至少一个应用未分配至所述服务集群,则将未分配的应用按照所需资源消耗量进行排序;

未分配应用随机分配模块,用于按照排序逐个将未分配的应用随机分配至某一服务集群。

优选地,所述装置还包括:

节点网络图构建模块,用于以所述应用为节点,以具备数据交换的两个应用为相邻节点,构建包括多个应用的节点网络图,所述关联权重为连接两个应用的边的边权重。

优选地,所述关联应用分配子模块包括:

目标边查找子单元,用于查找所述节点网络图中边权重最大的目标边。

优选地,所述关联应用分配子模块包括:

广度优先搜索子单元,用于在包含所述目标边的子图中,以所述目标边的两个目标节点为起点,进行广度优先搜索;

关联节点选择子单元,用于从搜索的多个关联节点中,按照与所述目标节点的边权重从大到小,在未超出所述服务集群的负载性能的条件下,选择最多数量的关联节点。

优选地,所述装置还包括:

新增分配结果确定模块,用于确定更换后的新增分配结果未超出各服务集群的负载性能。

优选地,所述应用多次更换模块包括:

应用交换子模块,用于在随机选择的两个服务集群中,分别随机选择一个应用进行交换,直至获得多个新增分配结果。

优选地,所述应用多次更换模块包括:

服务集群交互子模块,用于针对当前获得的分配结果,依次选择两个分配结果,随机从两个分配结果中选择两个应用,并对选中的两个应用所归属 的服务集群进行交换,获得多个新增分配结果

服务集群修改子模块,用于随机选择一个应用并对所选择的应用归属的服务集群进行修改,获得多个新增分配结果。

优选地,所述装置还包括:

分配结果筛选模块,用于筛选资源消耗量从小到大排序靠前的多个分配结果。

优选地,所述资源消耗量计算模块包括:

集群购置成本计算子模块,用于计算所述初始分配结果和所述新增分配结果各自所需的集群购置成本;

带宽消耗成本计算子模块,用于计算所述初始分配结果和所述新增分配结果中各个应用跨集群的带宽消耗成本;加和各个应用的带宽消耗成本,得到所述初始分配结果和所述新增分配结果的总带宽消耗成本。

优选地,所述最优分配结果选择模块包括:

分配结果比较子模块,用于针对当前获得的新增分配结果,若所述当前获得的新增分配结果的资源消耗量小于所述初始分配结果的资源消耗量,则将所述当前获得的新增分配结果作为当前最优分配结果,并与下一个新增分配结果进行比较,直至获得最优分配结果。

本申请实施例包括以下优点:

根据本申请实施例,基于初始分配结果进行应用归属的服务集群的多次更换处理,以获得多个新增分配结果,通过对多个新增分配结果对服务集群的资源消耗量的计算和比较,由此确定最优分配结果,从而提升了应用归属服务集群的分配效率,同时保证了得到的分配方案可以有效地节省服务集群的资源消耗成本。

而且,本申请实施例可以针对动态变化的分布式系统而自动确定出最优分配结果,无须人工进行多次分配,进一步提升了应用归属服务集群的分配效率。

附图说明

图1是本申请的一种应用归属服务集群的分配方法实施例一的步骤流程 图;

图2是本申请的一种应用归属服务集群的分配方法实施例二的步骤流程图;

图3是本申请的一种应用归属服务集群的分配装置实施例一的结构框图;

图4是本申请的一种应用归属服务集群的分配装置实施例二的结构框图;

图5是本申请一种基于节点网络图的构建示意图;

图6是本申请一种应用归属服务集群的分配结果示意图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

参照图1,示出了本申请的一种应用归属服务集群的分配方法实施例一的步骤流程图,具体可以包括如下步骤:

步骤101,将多个应用分配至多个服务集群,获得初始分配结果。

上述的应用可以为一组数据和程序的集合,用于将不同归属的数据和计算,在逻辑上进行相互隔离的单位。也可以将应用理解为关系型数据库中数据实例的概念。一个分布式系统可以具有多个服务集群。服务集群由若干台相互独立、通过网络互联的计算机组成的计算机群或服务器组。一个服务集群以一个整体的方式提供存储和计算能力。不同服务集群之间可以通过网络传输的方式进行数据交互等的通讯任务。

在本申请实施例的具体实现中,可以首先将多个应用分配至多个服务集群,得到初始的分配结果。初始的分配方式可以有多种,例如可以随机分配,也可以按照服务集群的负载性能对多个服务集群进行排序,按照排序分配应用。

步骤102,多次更换所述应用归属的服务集群,获得多个新增分配结果。

针对初始分配结果,可以多次更换应用归属的服务集群。每一次更换都会产生一个新的分配结果,多次更换后即可获得多个新的分配结果。更换时 可以随机更换,也可以按照一定的规则进行更换。例如,针对服务集群编号,按照编号顺序更换,本申请实施例对更换的方式不作限制。

随机更换应用归属的服务集群的方式可以有多种,例如,可以在服务集群中随机选择两个服务集群,分别随机选择一个应用,交换分配至所选择的另一个服务集群;或者,可以在任意两个服务集群中分别随机选择两个应用,将两个应用归属的服务集群进行交换。本领域技术人员可以根据实际需要,采用各种方式更换应用归属的服务集群,以获得多个分配结果。

作为本申请实施例的优选示例,在所述步骤102之后,所述方法可以还包括:

确定更换后的新增分配结果未超出各服务集群的负载性能。

作为最优分配结果的候选分配结果需要符合服务集群的负载性能,以保证分配结果可以实施。因此,更换应用归属的服务集群后,需要确定更换后的分配结果中,各个服务集群的负载性能依然能满足实现该分配结果。

步骤103,计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量。

需要说明的是,服务集群根据其所包含的计算机数量具有不同的购置成本、最大存储量和cpu总核数,各服务集群也具有一定的出口带宽;分配于服务集群中的每个应用需要一定的存储空间,应用之间也可能需要进行数据交互,即具有一定的数据交换量。跨集群的数据交互需要消耗一定的集群的出口带宽,造成出口带宽成本。由此,不同的应用分配方案,会产生不同的集群购置成本和带宽消耗成本。而且,根据集群的最大存储量和cpu总核数,每个集群所能存储和运行的应用也会受到一定约束条件的分配限制。假设系统中具有n个服务集群和m个应用,需要将m个应用分配至n’(n’≤n)个服务集群,最优的分配结果可以为n’个集群的总购置成本+跨集群的带宽消耗成本最小。实际应用中,最优的分配结果可以由本领域技术人员根据实际情况进行定义,例如仅将集群的总购置成本最小作为最优的分配结果,或集群总购置成本+维护成本最小作为最优的分配结果。

服务集群的资源消耗量可以包括集群购置成本和/或带宽消耗成本,也可 以是其他的配置集群和运行集群所消耗的成本。

可以计算初始分配结果和多个新增分配结果各自对服务集群的资源消耗量,以便进一步比较各个分配结果的资源消耗量。

步骤104,选择资源消耗量最小的分配结果作为最优分配结果。

在得到多个候选的分配结果及计算得到各自的资源消耗量后,可以从中选择资源消耗量最小的分配结果作为最优分配结果。实际应用中,也可以在得到一个新增分配结果后,与初始分配结果进行比较,若新增分配结果的资源消耗量小于初始分配结果的资源消耗量,则将新增分配结果作为最优分配结果。也可以进一步地获取下一个新增分配结果,与上一个新增分配结果进行比较,重复多次的新增分配结果获取和比较,直到得到最优的分配结果。还可以经过一定次数的与新增分配结果比较后,将资源消耗最小的分配结果作为最优分配结果。

根据本申请实施例,基于初始分配结果进行应用归属的服务集群的多次更换处理,以获得多个新增分配结果,通过对多个新增分配结果对服务集群的资源消耗量的计算和比较,由此确定最优分配结果,从而提升了应用归属服务集群的分配效率,同时保证了得到的分配方案可以有效地节省服务集群的资源消耗成本。

而且,本申请实施例可以针对动态变化的分布式系统而自动确定出最优分配结果,无须人工进行多次分配,进一步提升了应用归属服务集群的分配效率。

参照图2,示出了本申请的一种应用归属服务集群的分配方法实施例二的步骤流程图,具体可以包括如下步骤:

步骤201,按照所述服务集群的至少一种负载性能,对多个服务集群进行排序。

上述的负载性能可以包括每一个服务集群的最大存储量、cpu总核数、各服务集群间的出口平均带宽成本中至少一种。负载性能也可以包括其他的服务集群的处理能力指标。可以按照服务集群的负载性能对多个服务集群进 行排序。具体的排序方式可以有多种,例如分别按照不同的负载性能进行排序,或者针对负载性能设置权重,根据服务集群的多个负载性能的综合权重排序。排序可以是升序,也可以是降序。本领域技术人员可以根据实际情况,按照负载性能进行排序,本申请实施例对此不作限制。

步骤202,按照排序针对各服务集群进行应用分配,直至所有应用均分配至某个服务集群;其中,针对排序在后的服务集群,在排序在前的服务集群分配后剩余的应用中进行应用分配,获得初始分配结果。

在确定服务集群的排序后,可以按照排序进行应用分配。分配时可以优先将应用分配至排序靠前的服务集群,排序在前的服务集群分配完毕后再将剩余的应用分配至排序在后的服务集群。

实际应用中,分配可以具有一定的约束条件,例如,服务集群所能分配的应用的总数据量不超过服务集群的最大存储量的90%;或者,服务集群内的应用在任一时间点对服务集群的内存和cpu消耗不超过其最大处理能力的80%;或者,单个应用不得分别分配至不同的服务集群,而必须完整地分配至同一个服务集群;也可以采用上述多个约束条件的组合。当然,本领域技术人员可以根据实际情况设定各种约束条件或约束条件的组合,本申请实施例不限制约束条件的具体内容和约束条件的组合方式。

对各服务集群进行应用分配的处理,可以循环处理直至所有应用均分配至某个应用,并最终得到初始分配结果。或者,直至无法再满足约束条件为止。

作为本申请实施例的优选示例,在所述按照排序针对各服务集群进行应用分配之前,所述方法可以还包括:

计算任意两个应用之间的关联权重。

所述按照排序针对各服务集群进行应用分配可以包括:

从当前可选的多个应用中,选择关联权重最大的两个目标应用,并选择与所述目标应用之一的关联权重排序靠前的多个关联应用,分配至所述服务集群。

可以计算任意两个应用之间的数据交换量,以作为应用之间的关联权 重。在计算得到全部应用之间的关联权重后,可以选择关联权重最大的两个应用作为目标应用。基于选择的两个目标应用,可以继续选择与任意一个目标应用的关联权重较大的其他关联应用,分配至与目标应用所属的服务集群中。

因为处于同一服务集群中的应用之间在交换数据时可以不占用服务集群的出口带宽,因此,可以尽量将相互间数据交换量较大的应用分配至同一个服务集群中,以减少服务集群间的数据交换量,降低对服务集群的带宽占用。

作为本申请实施例的优选示例,所述按照排序针对各服务集群进行应用分配还包括:

若至少一个应用未分配至所述服务集群,则将未分配的应用按照所需资源消耗量进行排序;按照排序逐个将未分配的应用随机分配至某一服务集群。

对于剩余的未分配应用,可以按照未分配应用所需资源消耗量进行降序排序,按照排序逐个将未分配应用随机分配至一个可容纳该应用的服务集群中。其中,随机分配可能要反复若干次,直至分配到可容纳该应用的服务集群。所需资源消耗量可以为购置成本,带宽占用,应用所需的存储空间,应用运行时需要占用的内存等资源消耗量中至少一种或多种的组合。

作为本申请实施例的优选示例,在所述步骤202之前,所述方法可以还包括:

以所述应用为节点,以具备数据交换的两个应用为相邻节点,构建包括多个应用的节点网络图,所述关联权重为连接两个应用的边的边权重。

从图的角度考虑,可以基于应用构成图模型,通过图算法的方式得到初始分配结果。具体地,可以以应用作为图的节点,以具备数据交换的任意两个应用作为相邻的节点,代表应用之间数据交换量的关联权重作为两个应用节点的边的边权重,从而构建包括有多个应用的节点网络图。

作为本申请实施例的优选示例,所述选择关联权重最大的两个目标应用包括:

查找所述节点网络图中边权重最大的目标边。

节点网络图中的两个节点的边权重表示两个应用之间的关联权重,选择关联权重最大的两个目标应用,可以通过在节点网络图中查找边权重最大的目标边而实现,查找到的目标边所连接两个节点,即对应于关联权重最大的两个目标应用。

作为本申请实施例的优选示例,所述选择与所述目标应用之一的关联权重排序靠前的多个关联应用可以包括:

子步骤s11,在包含所述目标边的子图中,以所述目标边的两个目标节点为起点,进行广度优先搜索。

子步骤s12,从搜索的多个关联节点中,按照与所述目标节点的边权重从大到小,在未超出所述服务集群的负载性能的条件下,选择最多数量的关联节点。

可以将包含有目标边的节点形成一个子图,以目标节点为起点进行广度优先搜索(breadthfirstsearch,bfs)。广度优先搜索是一种图搜索算法,区别于深度优先搜索,其从某个节点开始,沿着图的宽度遍历各个节点,直至图中的全部节点被访问完毕才终止搜索计算。

从搜索得到的多个关联节点中,可以按照与目标节点的边权重从大到小的顺序,在满足服务集群的负载性能的条件下,选择数量最多的关联节点,即选择了与任意一个目标应用的关联权重排序靠前的多个关联应用。

为了便于本领域技术人员理解本申请实施例,图5示出了本申请一种基于节点网络图的构建示意图。从图中可见,将应用作为节点,将应用间的关联权重作为节点的边权重。其中,首先查找到未被分配的、边权重最大的目标边,同时目标边连接的两个节点所对应的目标应用需要满足一定的约束条件。在包含有目标边的子图中,以目标节点为起点进行广度优先搜索,不断地将与目标节点相邻的其他节点、按照边权重从大到小的顺序进行扩展,将子图中的其他节点加入到由目标节点及多个关联节点形成的图块中,直至子图中所有节点均被关联,或已无法满足约束条件。图5中的节点1、节点2、节点3和节点4形成一个图块,节点5、节点6和节点9以及节点7和节点 8分别形成另外的图块。即,应用1、应用2、应用3和应用4被分配至一个服务集群,应用5、应用6和应用9以及应用7和应用8分别分配至其他的两个服务集群。相应的,参考图6示出了本申请一种应用归属服务集群的分配结果示意图。如图6,上述9个应用分别被分配至服务集群a、服务集群b和服务集群c。

利用应用和应用间的关联权重构建基于边权重关联各个节点的节点网络图,可以将如何使得分配至同一服务集群的应用之间的数据交换量尽量大、同时使得服务集群之间的数据交换量尽量小的问题,转换成如何使得图块之内的多个应用间边权重尽量大、而图块间的边权重尽量小的问题。通过以目标节点展开广度优先搜索,按照其他节点的边权重大小顺序进行扩展关联,使得图块之内多个节点之间的边权重之和尽量大,而图块之间的边权重之和尽量小。即,同一服务集群的应用之间的数据交换量尽量大,而服务集群之间的数据交换量尽量小。

步骤203,多次更换所述应用归属的服务集群,获得多个新增分配结果。

作为本申请实施例的优选示例一,所述步骤203可以包括:

子步骤s21,在随机选择的两个服务集群中,分别随机选择一个应用进行交换,直至获得多个新增分配结果。

针对于初始分配结果中的多个服务集群,可以在服务集群中随机选择两个服务集群,分别随机选择一个应用,交换分配至所选择的另一个服务集群,从而可以获得新增的分配结果。可以反复进行多次的交换,以获得多个新增分配结果。新增分配结果的具体数量可以由本领域技术人员根据实际情况设定。作为本申请实施例的优选示例,在所述子步骤s21之后,所述方法可以还包括:筛选资源消耗量从小到大排序靠前的多个分配结果。

具体地,可以针对当前获得的多个新增分配结果,可以按照其资源消耗量从小到大进行排序,将排序靠前的若干个分配结果筛选出。

作为本申请实施例的优选示例二,所述步骤203可以包括:子步骤s22,针对当前获得的分配结果,依次选择两个分配结果,随机从两个分配结果中选择两个应用,并对选择的两个应用所归属的服务集群进行交换,获得多个 新增分配结果。

针对于当前获得的多个分配结果,可以从中依次选择两个分配结果,在选择的分配结果中分别选择两个应用,对所选择的两个应用所归属的服务集群进行交换,从而产生了新增分配结果。可以反复进行多次的交换,以获得多个新增分配结果。

作为本申请实施例的优选示例三,所述步骤203可以包括:

子步骤s23,随机选择一个应用并对所选择的应用归属的服务集群进行修改,获得多个新增分配结果。

可以在任意一个服务集群中,随机选择一个应用,并将选择的应用分配至其他服务集群,以获得新增分配结果。同样,可以反复多次随机选择应用并重新分配应用至其他服务集群,以获得多个新增分配结果。

步骤204,计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量。

作为本申请实施例的优选示例,所述步骤204可以包括:

子步骤s31,计算所述初始分配结果和所述新增分配结果各自所需的集群购置成本。

可以针对初始分配结果和新增分配结果,计算各个分配结果所需的集群购置成本。

和/或,子步骤s32,计算所述初始分配结果和所述新增分配结果中各个应用跨集群的带宽消耗成本;加和各个应用的带宽消耗成本,得到所述初始分配结果和所述新增分配结果的总带宽消耗成本。

可以针对初始分配结果和多个新增的分配结果,计算各个分配结果中,各个应用之间跨集群交互数据时所对服务集群的带宽消耗成本。将各个应用的带宽消耗成本加和,分别得到各个分配结果的总带宽消耗成本。

实际应用中,上述子步骤s21和步骤204可以利用模拟退火算法(simulatedannealing,sa),实现获得新增分配结果,并计算各个新增分配结果对服务集群的资源消耗量,以最终获得最优分配结果的处理。模拟退火算法是一种通用概率算法,通常用于在一个较大的搜索空间内计算最优结 果。

具体地,模拟退火算法中的初始解状态s的概念可以用于表示初始分配结果,即迭代计算的起点;s′可以表示新增分配结果。每一次的随机更换应用归属的服务集群而获得新增分配结果,即产生新解s’,并累计迭代次数一次。通过计算公式δt′=c(s′)-c(s)计算资源消耗量的增量;其中,c(s)为表示分配结果的资源消耗量的评价函数,δt′为该次迭代计算得到的资源消耗量增量。

当δt′小于0,即新增分配结果的资源消耗量小于之前的分配结果,可以接受s′作为新的当前解。重复随机更换应用归属的服务集群获得新增分配结果的步骤,以对新增分配结果的资源消耗量增量进行迭代计算,满足终止条件后则将终止迭代计算并将当前解作为最优解,即最优的分配结果。终止条件可以为连续n个新解均没有被接受,也可以为新增结果无法满足约束条件,还可以是获得足够多的被接受的当前解,当前解的数量应尽可能大,以保证后续可以获得最优解。当然,本领域技术人员也可以根据实际情况设定当前解的数量。

实际应用中,上述子步骤s22、s23和步骤204可以利用遗传算法(geneticalgorithm,ga),实现获得新增分配结果并计算各个新增分配结果对服务集群的资源消耗量,以最终获得最优分配结果的处理。遗传算法是借鉴生物界的进化规律演化而来的随机搜索方法。

具体地,可以将各个应用作为染色体进行编码,将m个应用从0-m编号,n个服务集群从0-n编号,得到一个m维的染色体向量,每一维代表一个应用,对应取值为[0,n),表示该应用当前分配的集群索引,即该应用所属的服务集群编号。

可以设置进化代数t=0,设置最大进化代数t,随机生成m个个体的集合作为初始群体p(0),即初始分配结果。计算初始群体p(0)中的适应度,适应度可以通过计算该分配结果所需资源消耗量的倒数得到。分配结果所需资源消耗量越大,表示适应度越低,反之亦然。

在实际应用中,评价函数和适应度均为分配结果所需资源消耗量的表示 方式,本领域技术人员可以根据实际情况任意选用,例如,在利用遗传算法获得新增分配结果时,可以用评价函数表示分配结果所需资源消耗量;在利用模拟退火算法获得新增分配结果时,也可以用适应度表示分配结果所需资源消耗量。

针对于上述的子步骤s22,利用遗传算法框架实现获得新增分配结果的具体处理中,可以针对染色体进行交叉运算,将交叉算子作用于群体。具体地,可以在初始群体p(0)的染色体中随机选取两个染色体,在满足约束条件的前提下相互交互取值,即对两个应用归属的服务集群进行交换,获得新增分配结果。

或者,针对于上述的子步骤s23,利用遗传算法框架实现获得新增分配的具体处理中,可以针对染色体进行变异运算,将变异算子作用于群体,即对群体中的个体串的某些基因座上的基因值作变动。具体地,可以在初始群体p(0)的染色体中随机选取一个染色体,在满足约束条件的前提下修改索引值,即随机选择一个应用并对所选择的应用归属的服务集群进行修改,获得新增分配结果。

针对于上述的步骤204,即针对交叉运算和/或变异运算后,从群体p(t)进化到下一代群体p(t+1),利用遗传算法框架计算资源消耗量的具体处理中,可以计算群体p(t+1)的适应度。当多次进化,进化代数t累计到最大进化代数t后则终止迭代计算,将进化过程中具有最大适应度的群体作为最优解,即最优分配结果。

由于每一步交叉运算和变异运算都会对进化是否满足约束条件进行检查,因此整个进化过程均可得到有效的分配结果,保证了进化的合理性。

需要说明的是,上述子步骤s21-子步骤s23的执行顺序仅为示例,实际应用中,可以根据上述提供的一种或多种方式按照不同次序的组合以获得多个新增的分配结果。例如先执行子步骤s21,再执行子步骤s23,最后执行子步骤s22。

需要说明的是,实际应用中可以采用多种方式结合模拟退火算法和遗传算法计算获得最优分配结果。例如,可以先利用模拟退火算法获得大量的分 配结果,然后利用遗传算法控制分配结果的优化方向,以便接近最优分配结果;或者也可以先利用遗传算法中的变异运算,获得若干新增分配结果,再基于得到的若干分配结果,利用模拟退火算法获得大量的分配结果,最后再利用遗传算法中的交叉运算获得最优分配结果。

当结合模拟退火算法和遗传算法获得最优分配结果时,两种算法所对应计算的资源消耗量可以为相同种类的资源的消耗,也可以不同。例如,模拟退火算法所计算的资源消耗量针对于集群购置成本的消耗,而遗传算法所计算的是带宽成本的消耗。

此外,除了使用遗传算法获得最优分配结果,本领域技术也可以采用其他的算法获得最优分配结果,例如蚁群算法、粒子群算法等。

步骤205,针对当前获得的新增分配结果,若所述当前获得的新增分配结果的资源消耗量小于所述初始分配结果的资源消耗量,则将所述当前获得的新增分配结果作为当前最优分配结果,并与下一个新增分配结果进行比较,直至获得最优分配结果。

针对于当前获得的多个新增分配结果,可以将当前获得的新增分配结果与初始分配结果的资源消耗量进行比较。若当前获得的新增分配结果的资源消耗量小于初始分配结果的资源消耗量,则将当前获得的新增分配结果作为当前最优分配结果,反之则继续将下一新增分配结果与初始分配结果的资源消耗量进行比较。针对当前最优分配结果,可以与下一个新增分配结果进行比较,反复进行比较并确定当前最优分配结果,直至获得资源消耗量最小的分配结果,将其作为最优分配结果。或者,针对出现了新增分配结果的集群购置成本大于初始分配结果的资源消耗量的比较结果的出现次数进行统计,当出现的次数超出预设次数,则将候选分配结果中资源消耗量最小的分配结果作为最优分配结果。

根据本申请实施例,通过节点网络图得到初始分配结果,并进一步通过模拟退火算法和/或遗传算法得到最优分配结果,从而提升了应用归属服务集群分配的效率。而且,所得到的分配方案更接近最优方案,节省了分布式系统部署和运行的成本。

而且,本申请实施例可以针对动态变化的分布式系统而自动确定出最优分配结果,无须人工进行多次分配,进一步提升了应用归属服务集群的分配效率。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。

参照图3,示出了本申请的一种应用归属服务集群的分配装置实施例一的结构框图,具体可以包括如下模块:

应用初始分配模块301,用于将多个应用分配至多个服务集群,获得初始分配结果。

应用多次更换模块302,用于多次更换所述应用归属的服务集群,获得多个新增分配结果。

资源消耗量计算模块303,用于计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量。

最优分配结果选择模块304,用于选择资源消耗量最小的分配结果作为最优分配结果。

根据本申请实施例,基于初始分配结果进行应用归属的服务集群的多次更换处理,以获得多个新增分配结果,通过对多个新增分配结果对服务集群的资源消耗量的计算和比较,由此确定最优分配结果,从而提升了应用归属服务集群的分配效率,同时保证了得到的分配方案可以有效地节省服务集群的资源消耗成本。

而且,本申请实施例可以针对动态变化的分布式系统而自动确定出最优分配结果,无须人工进行多次分配,进一步提升了应用归属服务集群的分配效率。

参照图4,示出了本申请的一种应用归属服务集群的分配装置实施例二的结构框图,具体可以包括如下模块:

服务集群排序模块401,用于按照所述服务集群的至少一种负载性能,对多个服务集群进行排序。

节点网络图构建模块402,用于以所述应用为节点,以具备数据交换的两个应用为相邻节点,构建包括多个应用的节点网络图,所述关联权重为连接两个应用的边的边权重。

应用初始分配模块403,用于将多个应用分配至多个服务集群,获得初始分配结果。

应用多次更换模块404,用于多次更换所述应用归属的服务集群,获得多个新增分配结果。

资源消耗量计算模块405,用于计算所述初始分配结果和所述新增分配结果各自对所述服务集群的资源消耗量。

最优分配结果选择模块406,用于选择资源消耗量最小的分配结果作为最优分配结果。

作为本申请实施例的优选示例,所述应用初始分配模块403可以具体用于:

按照排序针对各服务集群进行应用分配,直至所有应用均分配至某个服务集群;其中,针对排序在后的服务集群,在排序在前的服务集群分配后剩余的应用中进行应用分配。

作为本申请实施例的优选示例,所述装置可以还包括:

关联权重计算模块,用于计算任意两个应用之间的关联权重。

所述应用初始分配模块403可以包括:

关联应用分配子模块,用于从当前可选的多个应用中,选择关联权重最大的两个目标应用,并选择与所述目标应用之一的关联权重排序靠前的多个关联应用,分配至所述服务集群。

作为本申请实施例的优选示例,所述装置可以还包括:

应用排序模块,用于若至少一个应用未分配至所述服务集群,则将未分 配的应用按照所需资源消耗量进行排序。

未分配应用随机分配模块,用于按照排序逐个将未分配的应用随机分配至某一服务集群。

作为本申请实施例的优选示例一,所述关联应用分配子模块可以包括:

目标边查找子单元,用于查找所述节点网络图中边权重最大的目标边。

作为本申请实施例的优选示例二,所述关联应用分配子模块可以包括:

广度优先搜索子单元,用于在包含所述目标边的子图中,以所述目标边的两个目标节点为起点,进行广度优先搜索。

关联节点选择子单元,用于从搜索的多个关联节点中,按照与所述目标节点的边权重从大到小,在未超出所述服务集群的负载性能的条件下,选择最多数量的关联节点。

作为本申请实施例的优选示例,所述装置可以还包括:

新增分配结果确定模块,用于确定更换后的新增分配结果未超出各服务集群的负载性能。

作为本申请实施例的优选示例,所述应用多次更换模块404可以包括:

应用交换子模块,用于在随机选择的两个服务集群中,分别随机选择一个应用进行交换,直至获得多个新增分配结果。

作为本申请实施例的优选示例,所述应用多次更换模块404可以包括:

服务集群交互子模块,用于针对当前获得的分配结果,依次选择两个分配结果,随机从两个分配结果中选择两个应用,并对选中的两个应用所归属的服务集群进行交换,获得多个新增分配结果。

服务集群修改子模块,用于随机选择一个应用并对所选择的应用归属的服务集群进行修改,获得多个新增分配结果。

作为本申请实施例的优选示例,所述装置可以还包括:

分配结果筛选模块,用于筛选资源消耗量从小到大排序靠前的多个分配结果。

作为本申请实施例的优选示例,所述资源消耗量计算模块405可以包括:

集群购置成本计算子模块,用于计算所述初始分配结果和所述新增分配 结果各自所需的集群购置成本。

带宽消耗成本计算子模块,用于计算所述初始分配结果和所述新增分配结果中各个应用跨集群的带宽消耗成本;加和各个应用的带宽消耗成本,得到所述初始分配结果和所述新增分配结果的总带宽消耗成本。

作为本申请实施例的优选示例,所述最优分配结果选择模块406可以包括:

分配结果比较子模块,用于针对当前获得的新增分配结果,若所述当前获得的新增分配结果的资源消耗量小于所述初始分配结果的资源消耗量,则将所述当前获得的新增分配结果作为当前最优分配结果,并与下一个新增分配结果进行比较,直至获得最优分配结果。

根据本申请实施例,通过节点网络图得到初始分配结果,并进一步通过模拟退火算法和/或遗传算法得到最优分配结果,从而提升了应用归属服务集群分配的效率。而且,所得到的分配方案更接近最优方案,节省了分布式系统部署和运行的成本。

而且,本申请实施例可以针对动态变化的分布式系统而自动确定出最优分配结果,无须人工进行多次分配,进一步提升了应用归属服务集群的分配效率。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程 序产品的形式。

在一个典型的配置中,所述计算机设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitorymedia),如调制的数据信号和载波。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本申请所提供的一种应用归属服务集群的分配方法和一种应用归属服务集群的分配装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1