一种面向多类型服务的粒子群优化用户请求调度方法与流程

文档序号:13673292阅读:178来源:国知局
技术领域本发明应用于服务请求调度领域,特别是涉及一种面向多类型服务的粒子群优化用户请求调度方法。

背景技术:
服务请求调度是系统中经常遇到的一种文体,服务调度模型的选择直接影响系统的效率,好的调度模型能够增加系统的吞吐量,降低用户的相应时间,从而提高系统整体的吞吐量。通常常用的服务调度模型有以下几种:先来先服务(FCFS)、优先权调度策略、时间片轮转(RR)和基于负载的调度模型。这几种调度模型各有优缺点,适应不同的应用场景。先来先服务(FirstCome,FirstServed,FCFS)是早些年用的较多的一种模型,该模型会按照请求次序进行调度。先来先服务模型会每次从缓冲队列中获取队首的服务进行相应,它只会考虑服务进入缓冲队列的先后顺序,而不考虑它占用的cpu时长以及其他计算机资源的多少。先来先服务简单易行,但性能却不太好,它的优点是有利于长作业以及cpu繁忙的作业。缺点当然是不利于短作业以及cpu空闲的作业。优先权调度策略是基于区分服务提出来的,不同优先级的请求得到不同质量的服务。该调度策略有两种方式:抢占式优先级策略和非抢占式优先级策略。非抢占式优先级算法是把后台服务器资源分配给缓冲队列中优先级最高的用户请求,该用户请求一直占用服务器资源,直到完成。而抢占式优先级策略则不同,当把后台服务器资源分配给用户使用以后,一旦出线了另一个优先级更高的用户请求以后,集群控制中心就停止现在优先级较低的用户请求,把后台服务器资源分配给优先级更高的用户请求。时间片轮转(Round-Robin)调度是一种最古老最简单最公平且使用最广的算法。每个用户请求被分配一个时间段,称作它的时间片,即该用户请求可以占用服务器资源的时间。如果在时间片结束时该用户请求还在占用服务器资源,则暂停该用户请求的使用,并放入等待队列中进行等待,服务器资源分配给另外一个等待就绪的用户请求。最后一种应用比较广泛的是基于负载的调度模型。该调度模型会根据后台服务器的资源利用情况动态的对用户请求进行调度。其中比较典型的有遗传算法、粒子群算法、模拟去火算法。其中以粒子群算法作为案例进行分析。粒子群算法源于复杂适应系统理论,该理论于1994年正式提出,复杂理论的成员成为主体。比如研究鸟群系统,每个鸟在这个系统中被称为主体,主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分为许多小的群);新的主题出现(鸟寻找食物过程中,不断发现新的食物)。粒子群算法具有搜索速度快、效率高、算法简单、适合于实数值计算等优点,但是该算法对于离散的优化问题处理不佳,容易陷入局部最优解。

技术实现要素:
本发明要解决的技术问题是:本发明的目的是提供一种面向多类型服务的粒子群优化用户请求调度方法,该面向多类型服务的粒子群优化用户请求调度方法在基于用户请求的优先级以及各个服务器资源空闲比的基础上确定各个服务器的优先级,然后对收到的用户请求依据服务器的优先级进行初始调度,最后实时动态的根据各个服务器的负载状况更改优先级,采用粒子群的思想对负载结果进行优化,防止粒子群算法陷入局部最优解。本发明为解决公知技术中存在的技术问题所采取的技术方案是:一种面向多类型服务的粒子群优化用户请求调度方法,包括以下步骤:步骤101、初始化算法的粒子群优化算法的参数,初始化种群规模以及粒子构造,计算集群中各服务类型消耗的计算机资源,计算服务器节点的负载;具体步骤为:粒子构造即为每个用户请求所对应的服务器节点这种一对多关系,在此用集合来表示。F⊆Ni×Rk]]>其中F代表调度以后的生成方案,对于每一个服务器节点Ni,负载均衡调度模块会分配多个用户请求至该节点,即服务器节点和用户请求是一对多的关系;粒子群中的粒子数目取值范围为[10,60],集群中系统的最大并发数在55个;上述计算集群中各服务类型消耗的计算机资源具体方法为:依据集群中的服务类型进行请求调度,上述服务类型包括:ConfigService、CoreService、SitaService、SNDMSGService四种服务器类型,上述四种服务类型的功能是配置用户请求、提供集群的核心服务、把其他类型的报文转换成Sita报文、把服务器中转换好的报文发送出去;负载均衡控制模块定期统计各服务器节点的状态信息,依据服务类型对资源消耗进行分类,并更新各个服务类型对服务器的负载权重是第j种服务类型对计算机总开销的贡献值,越大,执行该服务对计算机的负载越大;并且满足以下条件:Σj=1m∂j=1]]>所述计算服务器节点的负载的具体方法为:通过收集到的后台各服务器的状态信息,综合考虑服务器操作系统;依据下列公式计算服务器现在的负载状况;Ci(t)=Cinit+Σj=1m∂j.Cij.Tij(t)]]>Cij=[Cijcpu,CijI/O,Cijmem,Cijhd,Cijnet]]]>在上面两个公式中:i表示后台服务器集群中的第i个节点,j表示服务类型向量中第j种服务类型,式中分别表示第i台服务器中第j种类型服务平均消耗的计算机cpu、I/O、内存、磁盘、带宽的百分比i∈[1,s],j∈[1,m];在上面公式中,服务器节点i接受的j服务类型的数目为Tij(t),服务器操作系统;步骤102、更新服务器集群各节点的分配权重,计算集群的适应函数;上述分配权重的具体方法为:服务器节点的负载率一定程度上反映了服务器可以再次接受用户请求的能力,负载率越高,可接受用户请求的几率就越小,负载率越低,服务器的可用资源就越多,就越能为用户提供更强的处理能力;根据各个服务器节点的Ci(t)给每个节点分配一个相对应的比率,负载均衡模块根据该比率对一段时间内收到的用户请求进行调度;上述适应函数值的具体计算方法为:负载均衡模块对收到的服务请求进行初分配以后,当存在个别的服务器负载过重或者个别服务器负载过轻,影响服务器集群整体性能的发挥,此时采用粒子群算法对初次分配的结果进行优化,在此适应函数采用的是下列公式中的负载率L,通过该使用函数判断当前解的质量;L=1sΣi=1s|Ci(t)-C‾|2]]>在上述公式中是该服务器集群的平均资源消耗率,负载率L综合反映了集群中各台服务器的工作状态,负载率越大,说明用户请求安排越不合理,服务器集群资源没有充分利用;相反,负载率越小,说明负载比较均衡,计算机资源得到了很好的利用;步骤103、结合设置的粒子群参数,更新粒子群中各粒子的速度和位置,使粒子向全局最优解靠拢;更新粒子群中各粒子速度的具体方法为:由n个粒子组成的群体对Q维空间进行搜索;每个粒子表示为:xi=(xi1,xi2,xi3,...,xiQ),每个粒子对应的速度可以表示为vi=(vi1,vi2,vi3,....,viQ),每个粒子在搜索时要考虑两个因素:第一是搜索到的历史最优值pi,pi=(pi1,pi2,....,piQ),i=1,2,3,....,n;第二是全部粒子搜索到的最优值pg=(pg1,pg2,....,pgQ),此处的pg只有一个;Vidk+1=ωVidk+c1ξ(pidk-xidk)+c2η(pgdk-xidk)]]>其中ω是惯性权重,即保持原来速度的系数;c1是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识;c2是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识;ξη是[0,1]区间内均匀分布的随机数;所述更新粒子群中各粒子位置的具体方法如下面公式所示:xidk+1=xidk+rvidk+1]]>r是约束因子,即对位置更新的时候,在速度前面加的一个系数;在粒子进行随机搜索最优解的过程中,需要不断更新粒子的速度和位置,当粒子的速度和位置偏离出可行区域时,对粒子的速度和位置设定最大值和最小值,当粒子偏离解空间时,对粒子设定为最大或最小值。本发明具有的优点和积极效果是:通过采用上述技术方案,该面向多类型服务的粒子群优化用户请求调度方法在基于用户请求的优先级以及各个服务器资源空闲比的基础上确定各个服务器的优先级,然后对收到的用户请求依据服务器的优先级进行初始调度,最后实时动态的根据各个服务器的负载状况更改优先级,采用粒子群的思想对负载结果进行优化,防止粒子群算法陷入局部最优解。附图说明:图1系统调度模型图图2用户只请求SENDMSGService服务的响应时间图;图3用户请求CoreService服务的响应时间图;图4用户请求ConfigService服务的响应时间图;图5用户请求SitaService服务的响应时间图;图6用户随机请求服务类型的算法负载率图。具体实施方式为能进一步了解本发明的发明内容、特点及功效,兹例举以下实施例,并配合附图详细说明如下:图1描述了算法的调度过程:在ILinkclient向数据交换平台发送请求以后,请求经过互联网到达服务器集群的虚拟服务器,虚拟服务器对外提供透明的服务访问,它屏蔽了内层物理服务器的具体细节,在虚拟服务器中,用户请求被缓存到31个等待队列,所有队列等待负载均衡控制模块的调度,负载均衡模块负责对后台服务器集群中各台服务器依据服务类型进行资源消耗指标采集,经过计算以后初始化各台服务器分配请求的比率,依据各服务器分配比率进行用户请求的初分配,初分配以后服务器集群可能在某些服务器上面存在负载不均衡现象,然后采用粒子群算法的思想对初次分配进行优化,使整个服务器集群维持在一个高层次的均衡的负载水平。请参阅图2至图6,一种面向多类型服务的粒子群优化用户请求调度方法,包括以下步骤:步骤101、初始化算法的粒子群优化算法的参数,初始化种群规模以及粒子构造,计算集群中各服务类型消耗的计算机资源,计算服务器节点的负载;具体步骤为:粒子构造即为每个用户请求所对应的服务器节点这种一对多关系,在此用集合来表示;F⊆Ni×Rk]]>其中F代表调度以后的生成方案,对于每一个服务器节点Ni,负载均衡调度模块会分配多个用户请求至该节点,即服务器节点和用户请求是一对多的关系;粒子群中的粒子数目取值范围为[10,60],集群中系统的最大并发数在55个;上述计算集群中各服务类型消耗的计算机资源具体方法为:依据集群中的服务类型进行请求调度,上述服务类型包括:ConfigService、CoreService、SitaService、SNDMSGService四种服务器类型,上述四种服务类型的功能是配置用户请求、提供集群的核心服务、把其他类型的报文转换成Sita报文、把服务器中转换好的报文发送出去;负载均衡控制模块定期统计各服务器节点的状态信息,依据服务类型对资源消耗进行分类,并更新各个服务类型对服务器的负载权重是第j种服务类型对计算机总开销的贡献值,越大,执行该服务对计算机的负载越大;并且满足以下条件:Σj=1m∂j=1]]>所述计算服务器节点的负载的具体方法为:通过收集到的后台各服务器的状态信息,综合考虑服务器操作系统;依据下列公式计算服务器现在的负载状况;Ci(t)=Cinit+Σj=1m∂j·Cij·Tij(t)]]>Cij=[Cijcpu,CijI/O,Cijmem,Cijhd,Cijnet]]]>在上面两个公式中:i表示后台服务器集群中的第i个节点,j表示服务类型向量中第j种服务类型,式中分别表示第i台服务器中第j种类型服务平均消耗的计算机cpu、I/O、内存、磁盘、带宽的百分比i∈[1,s],j∈[1,m];在上面公式中,服务器节点i接受的j服务类型的数目为Tij(t),服务器操作系统;步骤102、更新服务器集群各节点的分配权重,计算集群的适应函数;上述分配权重的具体方法为:服务器节点的负载率一定程度上反映了服务器可以再次接受用户请求的能力,负载率越高,可接受用户请求的几率就越小,负载率越低,服务器的可用资源就越多,就越能为用户提供更强的处理能力;根据各个服务器节点的Ci(t)给每个节点分配一个相对应的比率,负载均衡模块根据该比率对一段时间内收到的用户请求进行调度;上述适应函数值的具体计算方法为:负载均衡模块对收到的服务请求进行初分配以后,当存在个别的服务器负载过重或者个别服务器负载过轻,影响服务器集群整体性能的发挥,此时采用粒子群算法对初次分配的结果进行优化,在此适应函数采用的是下列公式中的负载率L,通过该使用函数判断当前解的质量;L=1sΣi=1s|Ci(t)-C‾|2]]>在上述公式中是该服务器集群的平均资源消耗率,负载率L综合反映了集群中各台服务器的工作状态,负载率越大,说明用户请求安排越不合理,服务器集群资源没有充分利用;相反,负载率越小,说明负载比较均衡,计算机资源得到了很好的利用;步骤103、结合设置的粒子群参数,更新粒子群中各粒子的速度和位置,使粒子向全局最优解靠拢;更新粒子群中各粒子速度的具体方法为:由n个粒子组成的群体对Q维空间进行搜索;每个粒子表示为:xi=(xi1,xi2,xi3,...,xiQ),每个粒子对应的速度可以表示为vi=(vi1,vi2,vi3,....,viQ),每个粒子在搜索时要考虑两个因素:第一是搜索到的历史最优值pi,pi=(pi1,pi2,....,piQ),i=1,2,3,....,n;第二是全部粒子搜索到的最优值pg=(pg1,pg2,....,pgQ),此处的pg只有一个;Vidk+1=ωVidk+c1ξ(pidk-xidk)+c2η(pgdk-xidk)]]>其中ω是惯性权重,即保持原来速度的系数;c1是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识;c2是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识;ξη是[0,1]区间内均匀分布的随机数;所述更新粒子群中各粒子位置的具体方法如下面公式所示:xidk+1=xidk+rvidk+1]]>r是约束因子,即对位置更新的时候,在速度前面加的一个系数;在粒子进行随机搜索最优解的过程中,需要不断更新粒子的速度和位置,当粒子的速度和位置偏离出可行区域时,对粒子的速度和位置设定最大值和最小值,当粒子偏离解空间时,对粒子设定为最大或最小值。粒子群算法(ParticleSwarmOptimization,PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。在PSO中,每个优化问题的潜在解都可以想象成d维搜索空间上的一个点,我们称之为“粒子”(Particle),所有的粒子都有一个被目标函数决定的适应值(FitnessValue),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。Reynolds对鸟群飞行的研究发现。鸟仅仅是追踪它有限数量的邻居但最终的整体结果是整个鸟群好像在一个中心的控制之下.即复杂的全局行为是由简单规则的相互作用引起的。PSO算法的具体实施如下:Step1初始化参数初始化粒子群算法中需要的初始速度,对于各粒子的权重系数C1,C2均选取2,约束因子r设为1,惯性权重采用从0.9到0.4依据迭代次数线性递减取值,最大迭代次数countmax取做1000次。ξη都取为0.5。并初始化服务器集群的规模、服务器收到的用户请求以及服务器的各个节点。S=[S1,S2,S3,...Sm],N=[N1,N2,N3,...Ns],其中s为3,m为4。Step2计算各服务类型消耗的计算机资源及节点负载在具体实施中,具体考虑了服务器的cpu、I/O、内存、磁盘、带宽等资源,依据资源的占用比作为调度的初始依据。其中i表示第i个节点,j表示第j种服务。在服务器运行过程中,依据公式(4)实时的计算服务器的资源消耗。Step3更新分配权重及适应度函数在服务器节点的负载计算完成以后,需要根据节点负载相对应的确定各个节点的分配权重。在收到用户请求时,根据服务器的分配权重对用户请求进行调度。在调度完成以后需要对当前服务器集群的负载状况进行衡量。Step4找出个体最优和全局最优在寻找最优调度方案的过程中,每个粒子可以表示为:xi=(x1,x2,x3,....,xn),每个粒子对应的速度可以表示为:vi=(v1,v2,v3,....,vn),当粒子在解空间自由运动寻找最优解的过程中,对于每个粒子,必须记忆该粒子的历史最优值pi和pg作为粒子位置更新时的依据。pi=(pi1,pi2,pi3,....pin),pg=(pg1,pg2,pg3,....pgn)。这里n等于50。Step5更新粒子的位置和速度在粒子进行随机搜索最优解的过程中,需要不断更新粒子的速度和位置,特殊情况下,粒子的速度和位置可能偏离出可行区域,此时需要对粒子的速度和位置设定最大值和最小值,当粒子偏离解空间时,对粒子设定为最大或最小值。Vidk+1=ωVidk+c1ξ(pidk-xidk)+c2η(pgdk-xidk),xidk+1=xidk+rvidk+1.]]>Step5判断算法是否达到设定的最大迭代次数1000次,没有达到则返回Step2,达到则算法结束。本方法设计了相应的实施案例对算法效果进行验证,并与经典的遗传算法、比率算法和加权轮询算法进行比较。首先,根据服务的不同,本方法设计了五种实验场景。第一个场景到第四个场景分别测试了在单一服务类型条件下,算法的用户响应时间,并在实验过程中不断优化算法的参数和各个服务类型的权值。第五个场景是混合了四种服务类型即用户随机对四种服务进行请求,在此情况下测试算法对集群整体负载率的影响。场景一:客户端编写SendMsgTest程序,主要完成短时间内对服务器端发送大量的url请求,服务器端收到请求后,选择空闲的服务器,然后调用SENDMSG服务完成对应的客户响应。该场景主要是为了测试算法对SENDMSG服务类型的处理,url请求地址为:http://10.1.9.107:8025/SENDMSG。开始时间为2016/1/1519:22:38,结束时间为2016/1/1519:24:38。预热持续时间为:00:00:00,持续时间为:00:02:00。控制器为本地运行。在并行量为[5,10,15,20,25,30,35,40,45,50](单位为(个/s))的区间上统计算法的响应时间如图2所示。场景二:在该场景下,客户端产生一定数量的CoreService服务类型的url请求,服务器收到该类型的请求以后,主要完成对后台数据库进行读写。Url请求地址为http://10.1.9.107:8025/CoreService。开始时间为2016/1/1519:31:07,结束时间为2016/1/1519:35:18。预热持续时间为:00:00:00,持续时间为:00:04:11。在只有CoreService服务类型的场景下算法响应时间图3所示。场景三:ConfigService是所有服务类型的基础,服务端收到客户请求后,首先需要对所收到的服务做一个简短的处理和记录,然后解析报文进行其他操作。Url请求地址为http://10.1.9.107:8025/ConfigService。开始时间为2016/1/1519:45:00,结束时间为2016/1/1519:47:59。预热持续时间为:00:00:00,持续时间为:00:03:59。在ConfigService服务类型的场景下算法响应时间图4所示。场景四:Sita服务主要是对收到的报文进行转换,该服务对磁盘和CPU的消耗较多,故耗时略长,Url请求地址为http://10.1.9.107:8025/SitaService。开始时间为2016/1/1520:00:00,结束时间为2016/1/1520:02:01。预热持续时间为:00:00:00,持续时间为:00:02:01。在SitaService服务类型的场景下算法响应时间图5所示。场景五:一般情况下,客户端访问服务器的服务类型具有随机性,在该场景中,客户端程序的随机数发生器中产生一个随机数,根据随机数决定对服务器进行何种服务请求。该场景含有四种核心服务类型的请求以及其他类型服务的请求,更接近生产环境的实际情况,在访问量为[10,15,20,25,30,35,40,45,50,55,60]的访问区间上统计算法的负载率L,如图6所示。由图2可以看出,在并发量20以前,三种算法差别不大,并发量20以后,本文算法明显优于其他两种算法。图3和图5中,三种算法从始至终区别性不是很大,但是随着并发量的增加,本文算法的优势逐渐开始变得明显。图4中,本文算法一直领先于其他两种算法。最后通过图6中负载均衡率这一综合指标,衡量了三种算法总体的优劣,在访问量不饱和的情况下,本文算法都会让所有服务器维持忙碌状态,这在一定程度上增加了系统的负载能力优化了系统的调度方案。以上对本发明的实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1