本发明涉及一种QoS感知的服务动态调度方法。
背景技术:
目前商用绝大多数的服务调度通常采用轮询方法等进行负载均衡。这些服务调度方法通常是面向广域网络上超大规模的用户访问,为实现高负载、低时延,采用负载均衡器/反向代理+集群的方式,采用复杂度低的负载均衡策略,来支持大规模的用户访问需要,当无法为所有用户提供高质量服务时,会采用接纳控制、延迟等待等方式,损失一批用户的服务质量来保持系统持续运行。但是在某些专用的应用领域,尤其是内部网络服务,虽然用户规模相比要相对少一些,但用户根据不同的应用等级具有不同的优先级,一些专用应用中用户的服务质量保障要求严格,损失部分用户的服务质量要求甚至是拒绝访问会带来不可预估的代价,因此互联网上通常追求的整体或平均服务质量的提升不能满足上述应用需求。在一些内部专用应用,用户的优先级有差别,用户的服务质量需求又是业务的重要要素,必须得到保障。例如,医疗系统的医疗信息服务,不同的科室(急诊室、内外科等)、普通用户对服务对其响应时间要求各有差别;财务系统的相关服务,普通员工和财务人员对服务的质量需求也有差别,这些服务质量要求的违背是无法容忍的。同时注意到,互联网上用户规模十分庞大,因此轮询等简单、时间复杂度(根据用户数成级数增长)低、整体性能优化的算法比较适用,而专业或内部应用中用户相对较少,因此采用时间复杂度稍高、服务质量保障严格的最优化调度算法则更为妥当。从这个角度出发,本发明设计多约束的服务调度策略,满足这些应用的服务调度需求。
技术实现要素:
发明目的:本发明的目的是提供一种能够解决现有技术中存在的缺陷的QoS感知的服务动态调度方法。
技术方案:
本发明所述的QoS感知的服务动态调度方法,包括以下步骤:
S1:确定调度的角色与问题:模型角色包括用户节点、服务调度节点和服务节点,调度的目的是服务调度节点将用户的请求发往相应的服务节点,要求能够满足用户的QoS需求,服务节点不能超负荷,并且保证满足的用户尽可能多;
S2:问题分析与形式化定义:考虑服务调度的对象、目标、相关参数与约束条件,对服务动态调度问题进行形式化建模;
S3:复杂度分析与问题归约:根据所建模型,分析问题的复杂度,寻找可归约的形式化模型;
S4:算法设计:提出QoS感知的服务动态调度算法,给出算法的执行序列;
S5:执行算法得到调度结果。
进一步,所述步骤S4包括以下步骤:
S4.1:获取算法所需参数:所述调度算法的主要参数包括:服务节点距离的远近、服务节点可靠性参数和服务节点的处理能力参数;
S4.2:执行算法:构造一个图G=(V0∪VS∪VC∪V1,E),其中V0对应于起点vs,V1对应于起点vs,每个服务器节点V∈VS对应于S中的一个元素,每个用户节点V∈VC也对应于C中的一个元素;网络是容量网络;在V0与i∈VS之间存在一条边,其允许流过的最大流量为min{Ui,Bi};在i∈VS和j∈VC之间存在一条边,即(i,j)∈E,当且仅当Si能满足Cj的服务质量需求,其允许流过的最大流量为Rj;在j∈VC和V1之间存在一条边,其允许流过的最大流量为Rj;从任意一条可行流x出发,判断网络G中是否有关于x的s-t增广路:如果没有这样的增广路,则x就是最大流;如果存在增广路,则通过对增广路上流量进行增广,得到一个新的流量更大的可行流x;继续对可行流x重复上述操作,直到网络中不存在增广路为止,得到的最大流是满足QoS要求的最大用户数;
S4.3:优化调整:若根据分配其用户请求总量占容量的比例小于给定阈值Tr,即∑j:f(cj)=siRcj<Tr,则调整大于Tr的某用户到该服务节点分配,直到不存在小于Tr的服务节点或者按照服务质量需求不能继续调整为止。
有益效果:与现有技术相比,本发明具有如下的有益效果:
1)目前互联网常用的服务调度策略通常采用轮询方法等进行负载均衡,追求的整体或平均服务质量的提升,没有考虑用户不同的应用等级具有不同的优先级,而本发明更关注每个个体的服务质量要求都能够得到保证;
2)目前商用的调度方法主要采用负载均衡器/反向代理+集群的方式,集群采用相同的配置部署相同的服务,所以没有考虑服务节点负载能力的差别和网络延迟的差别,而本发明充分考虑了这些约束条件;
3)本发明针对如何准确、高效地调度用户到最合适的服务节点,不仅让用户都能不拥塞、不冲突地获取所需服务,而且能保证其响应时间等QoS需求的问题,提供满足所有用户服务质量需求的调度策略,以满足军事应用的服务调度需求。
附图说明
图1为本发明的QoS感知的服务调度问题示意图;
图2为本发明的最大流问题示意图;
图3为本发明步骤S4中的算法的示例图,其中:
图3(a)为第一条可行流的示意图;
图3(b)为标有权值的第一条可行流的示意图;
图3(c)为第一条可行流的反向流的示意图;
图3(d)为第一条增广路的示意图;
图3(e)为第一条增广路的反向流的示意图;
图3(f)为第二条增广路的示意图;
图3(g)为第二条增广路的反向流的示意图;
图3(h)为第三条增广路的示意图;
图3(i)为第三条增广路的反向流的示意图。
具体实施方式
下面结合附图和具体实施方式,对本发明的技术方案作进一步介绍。
本发明针对如何准确、高效地调度用户到最合适的服务节点,公开了一种QoS感知的服务动态调度方法,不仅让用户都能不拥塞、不冲突地获取所需服务,而且能保证其响应时间等QoS需求的问题,提供满足所有用户服务质量需求的调度策略,以满足军事应用的服务调度需求。
本发明所述的QoS感知的服务动态调度方法,包括以下步骤:
S1:确定调度的角色与问题:模型角色包括用户节点、服务调度节点和服务节点,如图1所示,调度的目的是服务调度节点将用户的请求发往相应的服务节点,要求能够满足用户的QoS需求,服务节点不能超负荷,并且保证满足的用户尽可能多;
S2:问题分析与形式化定义:给定一个无向图G=(V,E),每条边(u,v)∈E的时延是luv,任何一对节点{u,v}之间的最短路径长度是d(u,v),0.1s到10分钟,采用最短路径算法,如Dijkstra算法,得出AB间最短路径为4,即网络距离为4。对用户节点集合中的每个用户c来说,其用户请求数据率记为Rc,例如4kbps-100Mbps,QoS需求记为Qc,0.1s到10分钟;对服务器节点集合中的每个服务器S来说,其处理容量记为Us(10,5000),传输容量记为Bs(5,500),传输时间记为tr,计算时间记为tc;QoS感知的服务调度问题的目标是找到一个函数f:C→S,使得满足响应时间要求的用户数最大,并同时满足如下两个限制条件:1)时延限制:对每个用户c∈C,d(c,f(c))+tr+tc≤Qc;2)容量限制:对每个服务器s∈D,∑c∈C:f(c)=s,Rc≤min{Us,Bs};
S3:复杂度分析与问题归约:根据所建模型,分析问题的复杂度,寻找可归约的形式化模型,具体包括以下步骤:
S3.1:最大流问题定义:1)网络有一个起点vs和一个终点vt,若有几个起点或终点,则可以通过增加虚拟节点而转化为一个起点和一个终点;2)网络是容量网络,即流有方向性。如果是无向网络或混合网络,则应转化为容量网络;3)在网络各条弧上都有一个权,表示允许流过的最大流量。若以cij表示由vi到vj的弧上允许流过的最大流量,以vt表示实际流过该弧的流量,则存在vt;4)网络中,对于除起点和终点之外的任何节点,流入量的总和应该等于流出量的总和,即∑fij=∑fji,i≠s,t;
S3.2:归约过程:构造一个图G=(V0∪VS∪VC∪V1,E),其中V0对应于起点vs,V1对应于起点vs,每个服务器节点V∈VS对应于S中的一个元素,每个用户节点V∈VC也对应于C中的一个元素(图2给出了一个示例)。网络是容量网络。在V0与i∈VS之间存在一条边,其允许流过的最大流量为min{Ui,Bi};在i∈VS和j∈VC之间存在一条边,即(i,j)∈E(当且仅当Si能满足Cj的服务质量需求),其允许流过的最大流量为Rj;在j∈VC和V1之间存在一条边,其允许流过的最大流量为Rj;不难看出,因此,这些符合最大流问题最优解的元素组成了QoS感知的服务调度问题的最优解,反之亦然;如图2所示;
S4:算法设计:提出QoS感知的服务动态调度算法,给出算法的执行序列;根据前文给出的问题定义与归约,由于QoS感知的服务调度问题可归约为最大流问题,因此算法的基本思想是基于网络最大流问题的算法(Max-Flow Based Algorithm,MFBA),但可以看到,当节点容量充足时,为了在保障所有QoS的同时可以均衡负载,因此需要在最大流算法的基础上进行调整,既获得服务质量的保障,又达到负载均衡的目标,提高系统实际运行的吞吐量;
算法的基本思想是从任意一条可行流x(如零流)出发,判断网络G中是否有关于x的s-t增广路;如果没有这样的增广路,则x就是最大流;如果存在增广路,则可以通过对增广路上流量进行增广,得到一个新的流量更大的可行流x;继续对可行流x重复上述操作,直到网络中不存在增广路;此时,根据增广路定理,可行流x即为网络的最大流;求出网络中的最大流后,即得到了一个用户节点集合C到服务节点集合S的分配,使得用户的服务质量能够满足需求;由于最大流没有考虑到服务节点的剩余容量,因此在此基础上对容量进行一次调整,对那些剩余容量高的服务节点s,将已分配给其他节点的用户,如果s能够满足其QoS需求,则将部分用户重新分配给s,达到负载均衡,以进一步提升系统性能;
所述的调度策略具体如下:
S4.1:获取算法所需参数,本发明调度算法的主要参数包括:
1)服务节点距离的远近Dij:这项参数主要是由网络拓扑的响应时延来表示,通过计算网络上两点间的最短路径时延长度给出服务节点网络距离;例如服务请求节点A与服务节点B在网络中,该网络拓扑可表示为带权无向图G,G=(V,T),其中V为结点集合V={A,B,C,D},T为边的集合T={(A、B),(A、C),(A、D),(B、C),(B、D)},边的权值(即网络延迟)为表示为W={4,3,2,4,3},采用最短路径算法(如Dijkstra算法)得出AB间最短路径为4,即网络距离为4;
2)服务节点可靠性参数Rj:这项参数表示的是某服务节点运行的可靠性,即提供给用户有效服务的比例,参照服务节点历史数据。例如A服务节点在过去几个月里平均每周无故障为160个小时,则其服务可靠性为95.24%;
3)服务节点的处理能力参数Cj:即可处理用户数,根据服务节点的性能最大连接数减去当前用户数获得。例如在开始的性能测试中服务节点的最大处理能力为500并发访问量,而现有处理用户数为200,那么服务节点的现有处理能力为300;
S4.2:从任意一条可行流x(如零流)出发,判断网络G中是否有关于x的s-t增广路:如果没有这样的增广路,则x就是最大流;如果存在增广路,则可以通过对增广路上流量进行增广,得到一个新的流量更大的可行流x;继续对可行流x重复上述操作,直到网络中不存在增广路。得到的最大流是满足QoS要求的最大用户数;
具体举例如图3;首先寻找一条可行流s→v1→v3→v2→v4→t,如图3(a),根据路径上权值设置,可行流的最大流值为4,网络G记录为3(b)。在现有图上迭代减去目前的最大流量,并添加反向流t→v4→v2→v3→v1→s,路径权值为4,如图3(c),在新图上寻找增广路s→v1→v2→v4→v3→t,此路径最大流为7,则此时最大流为11,如图3(d);继续添加反向流并寻找增广路s→v2→v1→v3→t,此路径最大流为8,如图3(e)和图3(f);依次类推,继续添加反向流并寻找增广路s→v2→v3→t,此路径最大流为4,如图3(g)和图3(h),到图3(i)网络中不存在增广路为止;则此图中的最大流为11+12=23,如图3(h);
S4.3:若根据分配其用户请求总量占容量的比例小于给定阈值Tr(如50%~80%之间的任意值),即∑j:f(cj)=siRcj<Tr,则调整大于Tr的某用户到该服务节点分配,直到不存在小于Tr的服务节点,或者按照服务质量需求不能继续调整;
S5:执行算法得到调度结果。