基于GA算法的云计算集群负载调度方法与流程

文档序号:16063392发布日期:2018-11-24 12:25阅读:166来源:国知局
本发明涉及网络负载调度领域,具体涉及一种基于ga算法的云计算集群负载调度方法。
背景技术
云计算应用的迅速发展,对其性能和服务质量提出了更高的要求,多核处理器以及虚拟化技术的兴起,为云计算集群的进一步发展,现有技术中常用负载均衡调度常用方法来进行调度,负载均衡调度算法是集群的一个关键技术,己经有众多的调度算法在不同场景下得到了有效的使用。在多用户高并发的web系统中,负载均衡算法的好坏直接影响了qos,一直以来都是计算机和相关领域研究的一个热点。通常,该算法划分为静态负载均衡算法和动态负载均衡算法。①静态负载均衡算法该算法主要从待执行的任务角度来考虑,可以认为系统己经获知任务的运行特性,比如任务的类型,运行所需要花费的时间代价。然后负载均衡算法根据这样已知的任务特性,计算出最优的任务调度分配方式。如何尽量准确的获取任务的运行特性,以及如何根据这些信息规划出最优调度方案,是该算法所要关注的核心问题。但是静态调度算法未考虑集群运行状态,而集群的运行状态是不断变化的,静态算法不免会出现分配不均的情况,浪费系统资源利用率。②动态负载均衡算法一个重要的算法是从集群的运行状态的角度来考虑,需要负载均衡器及时的获取集群当前资源如cpu、内存、网络等的使用状态,以及任务的运行状态。算法在进行调度之前,会根据系统运行状态评价各节点负载情况,一般都会将当前任务分配给负载最小的节点,从而实现任务的调度。如何准确而及时的获取集群运行状态并做出负载评估是该算法的核心问题。相对于静态负载均衡算法,动态的负载均衡算法考虑了集群系统的变化情况,并针对性的对分配做出调整。负载分配的问题具有普遍性,可以考虑从其他领域引入一些新方法新思路来解决问题。相关科学家对基于空间数据库的几何空间操作做了对比得出的结论是绝大多数空间操作都需要消耗高额cpu和大量i/o,空间数据的复杂性决定了空间操作是一种cpu和i/o密集型计算任务,而不同类型的空间操作的复杂度的差异也非常大。空间查询不仅要根据査询条件计算空间对象的索引,还要将查询到的对象进行读取和对象化建模,是一种以i/o为主,cpu计算为辅的任务;空间叠加分析是一种二元运算,不仅要将大量数据从存储设备装入内存,还需要进行复杂空间运算,其复杂程度往往要高出空间查询一个或多个数量级。在一个具有空间查询、动态制图、空间数据编辑、空间分析、网络分析等不同复杂度的云计算集群系统,面临的压力一方面是用户量大,另一方面是因请求任务之间的巨大差异性而放大的集群节点之间的负载不平衡。简单的负载均衡算法如轮询法,对于负载请求差异较大的集群是不适合的,一些更为复杂的动态负载均衡算法可以应对这样的需求,但其本身的复杂性和对系统计算和通讯资源的占用会引入一些新的问题,影响着云计算集群的发展进程。技术实现要素:针对现有技术的不足,本发明的目的旨在提供一种虚拟化云计算集群负载均衡算法,使得请求任务相应时间最短,在用户量增多的情况下也能明显改善gis服务质量,提高用户使用满意度。为实现上述目的,本发明采用如下技术方案:基于ga算法的云计算集群负载调度方法,包括:s1:读取任务队列,从“服务任务执行时间模型表”中查找出每个任务的运行参数;s2:对运行参数进行编码,将运行参数集合转换为染色体位串集合,生产初始种群group(g),g=0;s3:计算初始种群中每个个体的适应度值;s4:判断终止条件g>=gmax(gmax为最大繁殖代数),如果条件不满足,执行s5,否则转到s8:s5:进行选择操作形成下一代种群group(g),g+=1,采用模拟退火的选择算法;s6:以概率pc进行交叉操作;s7:以概率pm进行变异操作,转到s3;s8:算法终止,输出当前最优调度方案。进一步的,所述染色体位串中一个基因代表一个待分配的任务,一个基因表示为(t,l,p,n),其中t表示任务编号,l表示任务规模,即任务的预期执行时间,p表示任务优先级,p是一个布尔值,用1(true)表示高优先级,在节点内部任务执行时会被优先排序,0(false)表示低优先级,会被推后执行,n表示该任务被分配到的集群节点服务器编号,n的值采取随机的方式生成,即从n的取值范围0<n<ns中随机选取正整数给n赋值,形成一个染色体;一个染色体由一组带分配的任务构成,一个染色体对应一个负载调度方案,一个染色体的表达方式为{(t,l,p,n)|t>c,l>0,p=0|1,0<n<ns},其中c为负载策略转换阀值(c=k*ns),1为正整数,ns为集群节点数量。进一步的,所述适应度值由适应度函数表示,所述适应度函数定位为其中反映集群节点负载均衡程度的节点负载量偏差集群节点平均负载量为节点负载总量为其中集群节点负载量(li)为当前分配负载值(lc)与预期(算法分配)负载值(le)之和即li=lc+le,节点当前负载任务数为tc,第n个任务预期执行时间为ctn,预期负载任务数为te,第n个任务预期执行时间为etn。进一步的,所述当前分配负载值(lc)和节点当前负载任务数tc统称集群节点当前负载信息,集群节点当前负载信息采用负载量快照的方式获取。进一步的,所述负载量快照的方式是指在执行调度方案时,将任务分配情况同步记录到任务执行实时状态快照表中,各节点也将任务执行状态反馈到负载均衡器中,以及时更新状态的记录;并在执行适应度评价时,会生成任务实时状态快照表,然后对任务实时状态快照表进行计算和分析,得出当前负载量的值。进一步的,所述任务实时状态快照表记录着任务id、任务优先级、预期执行时间、开始时间及状态。进一步的,所述预期执行时间由“gis服务任务执行时间模型表”中的平均执行时间获得,幵始时间为任务向节点分配的时间,状态值包括“0”和“1”,“0”表示任务执行失败,“1”表示任务分配成功,若任务执行成功,则从实时任务表中将该调度任务删除,表中只保留未执行或执行失败的任务记录,执行失败的任务也会定期做处理,重新尝试执行或是向客户端反映任务执行失败。进一步的,所述步骤s5中模拟退火的选择算法表示为p(ai)为选择概率,n为种群g={a1,a2,...,an}的个数,其中个体ai的适应值为f(ai),t为退火温度。进一步的,所述步骤s6中以概率pc进行交叉操作包括:s61.从当前种群里按一定规则选择一组适应值高的个体组成交配池,从交配池中随机选取一对个体;s62.从染色体位串中随机选取一个或多个位置作为待交叉的位置;s63.根据交叉概率pc进行交叉,其中交叉概率pc设置为0.4~0.9,将配对的个体在交叉位置处,互换各自的位串内容,形成两个新的个体。进一步的,所述步骤s7中的变异概率pm为0.001~0.1。本发明的有益效果在于:根据gis运算和应用的特殊性和复杂性,建立了基于任务优先级和执行时间的gis任务模型,作为遗传算法基因编码依据,对请求任务划分优先级,在调度中,让响应时间短、经常使用的操作被优先执行,从而提高用户满意度;设计了用于负载均衡的遗传算法,包括适应度函数、遗传算子以及控制参数,并形成了算法流程,使得集群中的硬件资源得到最优化的利用,避免出现某些节点资源使用率过高而一些节点出现使用率偏低甚至闲置的情况。附图说明图1为本发明基于ga算法的云计算集群负载调度方法的步骤示意图;图2为本发明混合调度策略流程图;图3为本发明服务任务执行时间模型表;图4为本发明初始种群示意图;图5为本发明负载信息获取机制图;图6为本发明任务执行实时状态快照表;图7为本发明20并发用户平均响应时间对比图;图8为本发明50并发用户平均响应时间对比图。具体实施方式下面,结合附图以及具体实施方式,对本发明做进一步描述:“ga算法”表示为遗传算法,如图1所示,基于ga算法的云计算集群负载调度方法,包括:s1:读取任务队列,从“服务任务执行时间模型表”中查找出每个任务的运行参数。上述“服务任务执行时间模型表”的情况如下:如图3所示,“服务任务执行时间模型表”中记载着任务编号、gis服务功能、数据标识、平均执行时间和优先级,每个任务用t(l,p)来表达,分别表示任务编号、任务规模和任务优先级。l表示的任务规模,这里采用任务的预期执行时间表达。p是一个布尔值,用1(true)表示高优先级,在节点内部任务执行时会被优先排序,0(false)表示低优先级,会被推后执行。“服务任务执行时间模型表”展示了任务表示的示例模型,表中的平均执行时间将根据集群单节点测试的平均值。与此同时,还需选择遗传策略,本发明构建的集群是一个对称式集群,即各节点的计算能力和服务类型是一样的,此外,启动较为复杂的动态负载均衡算法会耗费一定的系统资源,导致一些延迟,本发明提出了一种将轮询和基于遗传算法方式结合起来的调度策略,如图2所示,期望能够适应各种集群压力场景,提高整体性能。①请求密度dr=nr/tapan表示单位时间内的gis请求数量。其中tapan请求的釆样时间段,nr为该时间段内的请求个数。②负载策略转换阀值c=k*ns表示切换负载策略的临界值。其中ns为集群节点数量,k为调节常量,是一个正整数值。该策略在集群负载压力较小时,采用静态的轮询调度方式。当请求密度dr达到一定阀值c的时,启用基于ga算法的负载均衡调度策略。s2:对运行参数进行编码,将运行参数集合转换为染色体位串集合,生产初始种群group(g),g=0。上述染色体位串中一个基因代表一个待分配的任务,一个基因表示为(t,l,p,n),其中t表示任务编号,l表示任务规模,即任务的预期执行时间,p表示任务优先级,p是一个布尔值,用1(true)表示高优先级,在节点内部任务执行时会被优先排序,0(false)表示低优先级,会被推后执行,n表示该任务被分配到的集群节点服务器编号,n的值采取随机的方式生成,即从n的取值范围0<n<ns中随机选取正整数给n赋值,形成一个染色体;一个染色体由一组带分配的任务构成,一个染色体对应一个负载调度方案,一个染色体的表达方式为{(t,l,p,n)|t>c,l>0,p=0|1,0<n<ns},其中c为负载策略转换阀值(c=k*ns),1为正整数,ns为集群节点数量。其中种群初始化前需确定种群规模,而种群规模含义如下:种群规模,即染色体个数对遗传算法性能有很大影响,一个规模为n的种群,其遗传算子从中产生和检验的模式的复杂度为o(n3)。种群规模越大,群体越具有多样性,算法陷入局部收敛的可能性就越小,但种群规模的扩大也会带来计算量的显著增加,从而降低收敛速度。种群规模过小,则会限制算法的搜索空间,很可能出现过早收敛的情况。一般情况下学者建议种群规模为20到200之间。考虑到本实施例的任务执行时间预测模型本身的非精确性,此外集群这样的调度系统实时性比较强,需要快速做出调度决策,因此从提高收敛速度出发,种群规模这里取20。初始种群的个体这里由随机方式产生。染色体四元组(t,l,p,n)中t,l和p已经可以确定,这里对n的值釆取随机的方式生成,即从n的取值范围0<n<ns中随机选取正整数给n赋值,形成一个染色体。初始种群示意图如图4所示。s3:计算初始种群中每个个体的适应度值。上述适应度函数是对种群的染色体适应性进行评估,执行优胜劣汰是生存法则,直接决定了群体的进化方向和行为。具备较高适应值的染色体被认为是具有较好的位串结构,具有较好的生存能力,产生优秀的后代的可能性更大。就本发明来说,适应度值较高的负载调度方案更容易被保留在方案池(种群)中,且更容易产出最优化方案。由于前述基因编码无法反映出调度的顺序,本发明通过在最优调度方案内部按照优先级排序的方式来实现用户满意度的目标,即在集群节点内部任务队列,优先级高的任务先执行。这里从集群服务器状态的的优化目标来考虑适应度函数,每个节点服务器上的任务数和任务执行时间和服务器上利用率cpu是正相关的,可以反映cpu的负载状况,进而反映节点整体负载状况。调度算法得出的调度方案是节点当前负载的一个预期值,用任务执行时间的总和来量化该值。所述适应度值由适应度函数表示,所述适应度函数定位为其中反映集群节点负载均衡程度的节点负载量偏差集群节点平均负载量为节点负载总量为其中集群节点负载量(li)为当前分配负载值(lc)与预期(算法分配)负载值(le)之和即li=lc+le,节点当前负载任务数为tc,第n个任务预期执行时间为ctn,预期负载任务数为te,第n个任务预期执行时间为etn。一般情况下,适应度值总是一个非负值,且数值越大适应性越好。而节点负载量偏差越小,说明分配方案越优秀,染色体适应度越高,因此,这里采用负载偏差的倒数来表达适应度值,数值越大,负载分配方案越好。上述当前分配负载值(lc)和节点当前负载任务数tc统称集群节点当前负载信息,集群节点当前负载信息采用负载量快照的方式获取。节点当前负载量也是必须要考虑的因素,这里使用负载量快照的方式来获取当前负载信息。负载信息获取的机制如图5所示,所述负载量快照的方式是指在执行调度方案时,将任务分配情况同步记录到任务执行实时状态快照表中,各节点也将任务执行状态反馈到负载均衡器中,以及时更新状态的记录;并在执行适应度评价时,会生成任务实时状态快照表,然后对任务实时状态快照表进行计算和分析,得出当前负载量的值。如图6所示,所述任务实时状态快照表记录着任务id、任务优先级、预期执行时间、开始时间及状态。所述预期执行时间由“gis服务任务执行时间模型表”中的平均执行时间获得,幵始时间为任务向节点分配的时间,状态值包括“0”和“1”,“0”表示任务执行失败,“1”表示任务分配成功,若任务执行成功,则从实时任务表中将该调度任务删除,表中只保留未执行或执行失败的任务记录,执行失败的任务也会定期做处理,重新尝试执行或是向客户端反映任务执行失败。s4:判断终止条件g>=gmax(gmax为最大繁殖代数),如果条件不满足,执行s5,进行遗传操作,否则转到s8,结束算法:s5:进行选择操作形成下一代种群group(g),g+=1,采用模拟退火的选择算法;所述步骤s5中模拟退火的选择算法表示为p(ai)为选择概率,n为种群g={a1,a2,...,an}的个数,其中个体ai的适应值为f(ai),t为退火温度。该算法较强的局部搜索能力的特点使其可以在搜索过程中免于陷入局部最优解,且在遗传进化的不同阶段可以使用退火温度来控制不同的压力。s6:以概率pc进行交叉操作;该操作模拟了自然界进化中的有性繁殖过程,实现了基因的重组,一边将原有优秀基因遗传给下一代。交叉的过程包括以下几个步骤:s61.从当前种群里按一定规则选择一组适应值高的个体组成交配池,从交配池中随机选取一对个体;s62.从染色体位串中随机选取一个或多个位置作为待交叉的位置;s63.根据交叉概率pc进行交叉,其中交叉概率pc设置为0.4~0.9,将配对的个体在交叉位置处,互换各自的位串内容,形成两个新的个体。交叉算子包括一点、两点和多点交叉、一致交叉等。这里釆用一致交叉的算法,即将染色体位串上的每一位都按相同概率进行随机均匀交叉。交叉概率一般取值为0.4~0.9,较高的概率会加快收敛速度,但也会增加“早熟”的概率,这里交叉概率取中间值0.6。s7:以概率pm进行变异操作,转到s3;该操作模拟了自然界进化中的基因突变现象,变异算子往往可以对避免“早熟”产生很好的预防效果,一方面,变异算子使得进化中丢失的等位基因得以恢复,以保持种群多样性,同时适度的变异,也能够提高算法的局部搜索效率。为保证种群的稳定性,使得变异个体与其父体不至于产生过大的差异,变异概率取值一般较小,通常为0.001~0.1。这里的变异操作简化为,对染色体(t,l,p,n)的变异,只需对n的值进行变异,即从0到ns中随机选取一个值取代原有的值。s8:算法终止,输出当前最优调度方案。对本发明算法进行测试:将本发明的算法插入云计算集群负载均衡模块,同以前的轮询式、最小连接数的算法进行比对,对算法的先进性进行验证。实验的集群为5台物理服务器,4台作为gis服务器,每服务器部署两个虚拟机,共组成的8个虚拟节点,每节点部署一个gis服务进程;1台作为web服务器,部署负载均衡调度模块。服务器的硬件配置如下表:服务器软件配置如下表:实验数据为:瓦片数据:武汉地形图,1-9级。矢量数据:1比5000地形图,点、线、区图层各一个,要素总数约为2500。测试场景:随机对webgis系统进行地图浏览、属性查询和空间分析的操作,操作次数如下表,地图浏览瓦片地闻浏览属性查询裁剪分析缓冲区缓冲区次数55511以此作为loadrunner测试场景录制依据。测试分别针对20用户,50用户,测试运行时间为10分钟。性能测试结果中最能反映性能指标的是平均响应时间,测试结果经汇总,如图所示,由图7、图8可见,基于遗传的调度算法能够有效缩短多用户并发状况下的任务完成时间,明显改善gis服务的质量。在用户并发量不大的时候,效果不是特别明显,但当用户量继续增多时,改善效果就比较明显。对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1