一种个性化服务需求的动态匹配方法
技术领域
本发明属于互联网技术领域,涉及一种个性化服务需求的动态匹配方法。
背景技术
服务互联网(IoS,Internet of Services)是大服务的网络化形式。在IoS中,任何对象都可以作为一种服务在互联网上获得。服务作为一种封装的功能实体,包含服务提供者和客户的交互过程,并通过在网络上的分布、虚拟化和聚合,以满足客户的需求和为客户创造价值。其中发生概率小于1的那些子服务称为个性化子服务。
在子服务的资源需求中,一种技术只是固定分配子服务所需的峰值资源,以满足子服务请求的资源峰值需求,当子服务资源需求非峰值时间内,依然占用着峰值的资源块,造成资源利用率不高。即使对此有改进,一般也只是设定每个子服务资源重分配的阈值来决定何时分配资源。该技术描述如下:数据中心中有一个资源调度器,可根据用户客户端的请求管理虚拟资源(包括分配超量的虚拟资源和撤回过多的虚拟资源),如图1所示。用户客户端将应用中子服务的负载变化通知数据中心的资源调度器。设定子服务资源调整的阈值有利于解决如下两个问题:1、资源重分配频繁会增加开销,降低效率;2、资源重分配间隔太大,不能及时响应子服务的资源需求变化,会影响应用执行。初始时,根据经验值预设一个阈值Lnorm给客户端,只有当客户端感知到应用负载变化超过门限Lnorm时,才会进行资源调整,以屏蔽一些频繁震荡。以上是针对单个发生概率为1的频繁服务,对于个性化子服务由于服务的发生概率不等,门限的设定很难优化,目前此种方式存在门限设置过大过小都容易引起扰动或客户端无法执行,或因资源竞争关系,造成系统存量资源不足或应用常被打断等种种问题。以往的门限方案仅仅对单个发生概率为1的应用,根据经验值设定一个阈值。阈值有较大概率定得不合理时会造成系统陷入瘫痪,并且不能实时变化以适应系统环境的动态变化。
发明内容
为解决上述问题,本发明提出一种个性化服务需求的动态匹配方法,创造性的基于蚁群算法解决资源重分配需求时空序列的分配方案优化,是一种动态匹配问题的优化方法,对大规模云服务中个性化服务的动态匹配的问题非常适用。
为了达到上述目的,本发明提供如下技术方案:
一种个性化服务需求的动态匹配方法,包括如下步骤:
步骤1,云平台根据经验值下发初始阈值给客户端/终端;
步骤2,确定一个统计分析周期,周期内云平台计算各子任务的熵;
步骤3,应用在周期内有对资源需求的变化,客户端/终端感知变化向云平台发起资源重分配/回收的请求;
步骤4,将云平台一个周期内的所有子任务重分配方案认为是一个蚁群,针对优化目标函数,采用蚁群算法迭代子任务的分配方案,如果求解得到能够响应资源重分配/回收需求,则云平台向客户端/终端应答并分配/回收资源;
步骤5,在空间序列上完成一组离散点的优化,求得每个子任务资源分配门限的一组近似最优解,得到优化的全局资源重分配方案从而得到全局资源重分配方案的优化解。
进一步的,在每个时刻,系统存量资源应不小于系统新增需求与回收资源之差,如下式:
R为系统每个时刻可用的资源总量,r为已分配出去的资源量,S={s1,…sn}为每个子服务的熵记做。
进一步的,所述步骤3中,当客户端感知到应用的当前workload>normal workload+门限时,就请求重分配资源;当客户端感知到子服务的当前workload<normal workload-门限时,就请求云中心资源回收超分的资源。
进一步的,所述步骤4中,优化目标函数如下:
f(x)=max(∑i+j)。
进一步的,如果存量资源降低到一定比率时,提高资源重分配的阈值;如果存量资源回升到一定比率时,降低资源重分配的阈值。
与现有技术相比,本发明具有如下优点和有益效果:
本发明对于大量发生概率不等的个性化子服务集合,子服务之间存在资源竞争的约束条件时,求出一组优化解。使得一组门限满足系统资源分配上的约束,形成一组资源的全局最优解,具有较高的资源利用率。本发明不仅仅用多目标优化求解,消除资源动态匹配中的扰动。还在动态匹配中兼顾到了全局负载均衡效果。
附图说明
图1为资源分配示意图。
图2为采用蚁群算法。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
个性化子服务集合,子服务之间存在资源竞争的约束条件,每个子服务一段时间内统计分析到的发生概率定义为子服务的熵的变化,所有子任务的连续动态的资源分配问题是一个多目标优化问题。本发明针对这类大量的子服务申请资源在时间上存在竞争关系,并希望求得一组符合约束条件的优化资源分配方案的问题采用蚁群Ant-Solver算法来求解。
在子任务的熵统计周期内,可认为熵相对静止,大规模的子任务集群可以看成一个蚁群,而时间轴上由客户端提出的离散的资源重分配/回收结点,是在客户端该应用的资源变化达到门限后客户端请求云服务中心是否能够变更资源分配/回收,在一个统计周期内有足够的时间调整每个子任务的阈值和调度客户端资源分配方案。当客户端感知到应用的当前workload(任务的工作负载)>normal workload+门限时,就请求重分配资源;当客户端感知到子服务的当前workload<normal workload-门限时,就请求云中心资源回收超分的资源。云服务中心接收到客户端请求,再根据蚁群算法和约束条件,优化资源分配方案,分别响应/拒绝客户端资源变化请求,每个蚁群求得这个资源分配方案的全局最优解。
具体的说,本发明提供的个性化服务需求的动态匹配方法,包括如下步骤:
步骤1,云平台根据经验值下发初始阈值给客户端/终端;
假设根据经验值为各个子服务始分配的资源为L={L1,…,Ln},每个时刻每个子服务实际消耗资源为l={l1,…,ln},每个时刻每个子服务资源需求为r={r1,…,rn}。一般来说应用运行时,资源需求量会在0到资源需求峰值之间呈正太分布。在云服务平台虚拟资源总量一定的情况下,我们希望能尽可能提高资源利用率,这就需要提高每个子服务的调整频次,但这会带来调整扰动问题;我们同时也希望尽可能降低重分配/回收的扰动,门限值的目标又会被要求设定得较大,但这样会牺牲资源利用率。因此这是多目标问题。
多目标优化问题MOP由一个四元组(X,D,C,F)定义,X是二维决策变量矩阵,
步骤2,确定一个统计分析周期,周期内云平台计算各子任务的熵;
设系统每个时刻可用的资源总量为R,已分配出去的资源量为r;每一时刻个性化子服务的熵值都小于1,并且最多一部分子服务要求重分配资源,部分资源会被回收,最多消耗系统存量资源。定义服务执行概率为熵值,每个子服务的熵记做S={s1,…sn}。
个性化服务具备的特征,是发生概率不为1,因此系统中所有的个性化服务的熵值都小于1。
步骤3,应用在周期内有对资源需求的变化,客户端感知变化向云平台发起资源重分配/回收的请求。
当时刻t,子服务j的客户端报送资源分配/回收请求,分配资源x[j][t],i++或者回收资源x[j][t]则j++,X表示接受客户端的请求进行响应进行切换,
上式表示每个时刻,系统存量资源应不小于系统新增需求与回收资源之差。
X可看成为蚁群所经路径的各结点,0或1是门限调整的决策因子:1表示门限上调,新增资源;0表示门限下调,释放资源;决策因子乘以X时间矩阵上的资源重分配/回收变化值形成了云服务平台的资源分配方案。这个过程比拟为一个蚁群寻路的过程。
步骤4,云平台一个周期内的所有子任务资源重分配方案认为是一个蚁群,人工蚂蚁就是先期迭代的那些需要分配资源的子任务。如果求解得到资源重分配/回收的变化,则云平台向客户端应答并分配/回收资源。
提高资源利用率,希望达成以下两个目标:一方面尽可能多的响应用户的资源调整请求,另一方面分配出去的资源尽可能少,且能满足系统存量资源大于等于0,这就类似于蚂蚁在约束条件下寻找最短路径。优化目标函数如下:
优化目标还包括:希望在一个时间周期内,n个子任务的资源调整次数之和最小。
f(x)=max(∑i+j)
人工蚂蚁经过几次迭代,得到对门限切换的优化之后,后续的蚁群会参考之前人工蚂蚁找到最短路径。在此基础上得到所有蚁群优化的最短路径,即全局动态资源分配方案的优化解。这个最短路径会使得门限在时间序列上切换次数最少,系统尽快趋于资源状态的稳定。
多个蚁群有多个目标函数,一个蚁群有m个(m>=2)目标函数,并满足一定约束条件,每个周期内通过大量迭代,完成一个蚁群的完整资源重分配方案。
通过这种资源动态调整方法,可以看出那些资源需求量大的子任务在资源突发时得到优先分配,资源回收多的子任务也会优先回收。在此补充两条阈值调整规则,以降低重分配/回收扰动,并对系统整体资源的使用做一个公平约束。阈值调整规则为:如果存量资源降低到一定比率时,提高资源重分配的阈值;如果存量资源回升到一定比率时,降低资源重分配的阈值。
具体地说,当存量资源≦资源总量*δ,此时降低阈值T=T*(1-rate),rate∈[0,1]可根据全局任务资源消耗的经验值设置rate为常量如0.01。
当存量资源≦资源总量*λ(λ<δ),此时提高阈值,T=T*(1+rate),rate∈[0,1]可设置为0.01,每个子任务的T更新后由云服务平台下发给用户。由于在某一时刻系统任务处于相同的资源环境中,大量用户会在某一时间段对任务进行密集访问,可认为其他子任务的需求触发的切换阈值与初始分配资源量的比例可参考这个常值T。
蚁群算法如下:
Construction of a solution S:
Cand←v
choose vi∈Cand with probability pS(vi)//个性化子任务
add vi at the end of S
remove from Cand vertices that violate constraints
end while
一个统计周期内各种熵不同的子任务集群可看成蚁群,每只蚂蚁都是一次动态资源分配方案,每次迭代中的每一只蚂蚁都需要完成所有子任务的资源分配,这也就是一个可行解,空间构成图G=(V,E)定义依赖于问题(X,D,C,F)的求解,每轮迭代都会在一组Cand点中选一个G的顶点加到解集S中,候选顶点集删除不符合约束C的点。顶点vi通过任意选择的熵值为Ps(vi)的子任务。
每只蚂蚁开始搜索时是从任意一个节点出发,在t时刻以概率P选择下一个节点,此概率如下公式所示:
其中α表示信息素的重要程度,β表示启发因子的重要程度,η为启发因子,等等。当某一个子任务的门限值信息素浓度可初始化为一个常量,并选定一个较小的挥发系数,以此来获得更多的搜索解。一个周期过后,有部分子任务既能满足全局资源利用率最大的约束,又能满足一个任务统计周期内切换次数最小,可认为这类子任务是在当前循环中找到最优解的蚂蚁。对这类蚂蚁的信息素依照如下规则进行更新:
τij(t+1)=(1-ρ)*τij+Δτijbest
Δτijbest=1/Lbest
其中ρ表示信息素的挥发因子,0<ρ<1,Lbest为路径的最佳长度,τij为信息素的值,初始时刻Δτijk=C。
分别调校几个变量:例如:蚁群的数量设置为m+1,信息素数量设置为m,m=|F|是优化的目标数,每个蚁群使用单个不同的目标,用自己的信息素结构和遗传信息求解。经过多轮迭代,得到近似最优解。每轮迭代是一个周期内分配策略的一次调整,人工蚂蚁完成一次资源分配的调整响应被称为一次迭代,具体参数的调试过程不在本发明描述范围。
步骤5,在空间序列上完成一组离散点的优化。从而得到全局资源重分配方案的优化解。
最终求得每个子任务资源分配门限调整与否的一组近似最优解,即是否响应客户端的特定量资源重分配请求,是一个全局资源调整分配方案,在全局上满足资源总量的分配约束,因为每个子任务的切换次数控制得较好,全局资源利用率较高,在全局能达到资源的负载均衡效果。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。