发明内容
为解决上述现有技术所存在的问题,本发明提出了一种基于云平台的实时任务调度方法,包括:
控制节点接收用户的业务调度请求,计算数据服务器中每个计算节点的资源剩余量,从中确定最优主机集合来进行业务调度。
优选地,所述确定最优主机集合来进行业务调度,进一步包括:
将业务调度问题解析为将特定时间段内收到的业务请求调度到云平台数据服务器中由多个计算节点组成的最优计算节点集合中的问题,将所述业务调度问题的解表示为一个N维解向量,每个元素代表处理用户业务请求的最优计算节点的一个元组;若数据服务器中有n台可用的计算节点,这些计算节点使用空间共享分配策略,定义四元组Y={S,TK,Lc,Lm}来描述,S表示为一组可用的计算节点集合,S(n,t)={s1,s2,...,sn},t表示调度开始时间;TK表示特定时间段内用户业务请求的集合,Lc为集合S中n台计算节点当前处理器剩余的集合,Lc(n,t)={L1 c,L2 c,...,Ln c};Lm为集合S中n台计算节点在时刻t的存储器剩余的集合,Lm(n,t)={L1 m,L2 m,...,Ln m},得到满足当前所处理的业务集合的性能约束的计算节点集合;
优选地,所述方法还包括:用te表示系统和用户对业务的期望完成时间,确定系统期望的业务执行完成时间te,当确定期望完成时间后,将期望完成时间信息传送给控制节点中的监控器模块,监控器模块以指令的形式发送给用户端的接收模块,然后通过预处理模块告之当前请求业务的用户;当第一个特定时间段内的业务开始执行到处理完毕,系统生成一个实际执行完成时间tf,并利用用户在请求业务之前对业务的执行完成时间的期望值计算时间容忍度函数TD:
TD=1-(tf-te)/tf
每个特定时间段内的业务执行完成后,根据容忍度函数的变化做出相应的调整;
当将数据信息传递到控制节点的调度策略模块内部的数据输入模块时,首先将这些混合的数据进行解调,得到计算节点的信息以及特定时间段内用户请求的业务量;解调完成后,计算出此时的请求业务的资源量,并以该业务资源量作为约束值;然后根据计算节点的处理器剩余和存储器剩余计算出云平台中每一台计算节点的实时剩余资源量;根据当前的请求业务量,将云平台内计算节点剩余资源量大于请求业务量的计算节点组成一个计算节点集合,通过计算节点集合模块与业务调度方法的交互,最终得到业务调度策略,然后将最优调度策略发送给控制节点的调度控制模块;当业务调度执行完毕后,将其生成的调度策略发送给调度控制模块,调度控制模块控制生成的调度策略以指令的形式通知云平台,并将待处理的业务分派到各个计算节点。
本发明相比现有技术,具有以下优点:
本发明提出了一种基于云平台的实时任务调度方法,提高了云平台数据服务器的吞吐率,优化了数据服务器对外服务性能,具有更好的调度平衡效果。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种基于云平台的实时任务调度方法。图1是根据本发明实施例的基于云平台的实时任务调度方法流程图。
本发明根据业务调度方法的体系结构,分解成多个功能模块,共同组成一个完整的业务调度系统。然后,在系统体系结构的基础上,提出了一种云计算平台下的业务调度方法,实现了云平台数据服务器的负载平衡。在本发明所运行的体系结构中,控制节点的功能是根据当前调度策略与最优调度策略和随机调度策略进行业务调度,调度完成后比较三种策略在云平台数据服务器整体负载平衡程度和调度业务的效能,然后根据估计的结果找出一个最优的业务调度策略。控制节点可以根据当前云平台中的计算节点信息计算出哪个计算节点的剩余资源量是多少以及每台计算节点中的虚拟机的运行状态。同时,在业务调度策略中还有用于接收业务调度的请求和计算节点状态信息等控制节点,这种节点的作用是控制调度方法的执行流程和周期。
所有的节点通过网络直接或间接的互相连接组成了云平台数据服务器。只有主控制节点才能触发调度策略模块,由控制节点决定最终的业务调度策略。在其他控制节点同样设置调度策略模块,在主控制节点出现异常状态下,其他控制节点会选取处理能力最高的节点作为主控制节点,然后让其节点内的业务调度模块进行工作。
在业务调度策略的控制节点包括调度策略模块、调度控制模块以及监控器模块;计算节点包括发送模块和接收模块;用户端包括用于发送业务请求的发送模块和用于接收计算结果的接收模块。整体逻辑流程如下:首先,当计算节点上监控器确定有用户请求业务时,用户通过发送模块将请求业务的信息发送给监控器模块,监控器模块获取了特定时间段内用户请求业务的资源量和数据服务器中计算节点的剩余资源量信息,包括处理器剩余和存储器剩余,监控器模块会将这些信息整理后发送给下一级模块,即解析模块。
解析模块动态的解析收集到的业务信息和计算节点的计算节点信息,进行具体的解析过程,在解析完成后将数据通过解析模块发送给估计模块。当估计模块接收来自解析发送的数据时,立即解析其接收的数据。本发明的估计模块需要完成性能参数的计算和估计,即使用本发明的业务调度策略后调度业务的效能和负载平衡度值。
估计模块将估计的信息、计算节点状态信息以及请求业务的信息发送给调度策略模块,然后根据本发明提出的方法生成相应的调度策略,然后将调度策略和相关信息传送给调度控制器,调度控制器解析最终得到的数据并发送指令到相应的计算节点的接收模块,控制器的作用是控制和执行调度业务。最后,将特定时间段内收集的业务请求调度到通过调度策略模块找到的最优计算节点上。
用户模块触发整个系统正常运转,在一个特定时间段内收集到的多个用户的业务请求信息,用户模块将这些用户的业务请求信息汇总,然后将这些业务请求信息通过用户模块内部的预处理模块形成一个用户请求通过发送模块传递给业务调度系统内部的监控器模块。当系统处理完毕后将计算结果发送给用户端的接收模块,接收模块再通过预处理模块将计算信息分类,并且分别返回给请求的用户。在这部分里,预处理模块起着重要作用,它将零散的业务聚集汇成业务调度系统能够识别的业务类型。
监控器模块负责监控和传递用户和计算节点云平台的实时状态信息。当监控器模块开始监控时,收集用户的业务请求信息和云平台内部计算节点的负载信息,并将这些信息通过内部的预处理模块存储到数据库中,数据库利用链表来存储业务信息和计算节点信息。
当特定时间段内结束时,将数据库里存储的用户请求的业务信息和计算节点信息发送给解析模块进行解析,发送完毕后,将内部的数据库立即发送到回收模块,清空数据库,准备接收下一个特定时间段内的用户请求业务信息和计算节点信息。
解析模块利用解向量表示为寻找的最优业务调度策略。将业务调度问题解析为将特定时间段内收到的业务请求调度到云平台数据服务器中由多个计算节点组成的最优计算节点集合中的问题。业务调度问题的解可以表示为一个N维解向量,每个元素代表处理用户业务请求的最优计算节点的一个元组。若在相同的网络带宽下,数据服务器中有n台可用的计算节点,这些计算节点使用空间共享分配策略。云平台数据服务器优化每个特定时间段。本发明定义了一个四元组Y={S,TK,Lc,Lm}来描述,S表示为一组可用的计算节点集合,S(n,t)={s1,s2,...,sn},t表示调度开始时间。TK表示特定时间段内用户业务请求的集合,TK(m,△t,t)={tk1,tk2,....,thm}。Lc为集合S中n台计算节点当前处理器剩余的集合,Lc(n,t)={L1 c,L2 c,...,Ln c}。Lm为集合S中n台计算节点在时刻t的存储器剩余的集合,Lm(n,t)={L1 m,L2 m,...,Ln m}。得到计算节点集合,同时也是找到的符合最优业务调度策略,这个计算节点集合能够满足当前所处理的业务集合的性能约束。
估计模块包括系统性能估计模块和完成时间估计模块。系统性能估计模块评价和计算本系统的性能指标,可以为本发明业务调度策略提供可靠数据,从而提高了系统执行的精确度。而完成时间估计模块为用户和系统提供估计完成时间,也就是期望完成时间,在这里用te表示系统和用户对业务的期望完成时间,确定系统期望的业务执行完成时间te。当确定期望完成时间后,估计模块会将期望完成时间信息传送给监控器模块,监控器模块会以指令的形式发送给用户端的接收模块,然后用户接收模块会在短时间内通过预处理模块告之当前请求业务的用户。当第一个特定时间段内的业务开始执行到处理完毕,这个时间段称为实际执行完成时间,系统生成一个实际执行完成时间tf,在理想状态下用户期望完成时间与实际完成时间几乎相等,但是,在实际的业务调度过程中会受到网络、传输延迟、计算节点负载等因素的制约,必然大于实际的执行完成时间。用户在请求业务之前会对业务的执行完成时间有一个期望值,而系统在实际的执行过程中,业务的完成时间并不一定等于用户的期望值,为了描述用户的对业务执行完成时间的容忍程度,使系统更加精准、高效的运行,需要使用函数作为评价依据,即完成时间容忍度函数TD:
TD=1-(tf-te)/tf
即当实际完成时间大于期望完成时间时,则容忍度会随着业务实际执行完成时间的增加而逐渐减小。每个特定时间段内的业务执行完成后,根据容忍程度的变化做出相应的调整。
调度策略模块内部有一个接收数据的模块。当估计模块将数据信息传递到调度策略模块内部的数据输入模块时,由于这些数据混合在一起而且杂乱无章。此时,就需要将这些混合的数据进行解调,得到计算节点的信息,以及特定时间段内用户请求的业务量。解调完成后,分别对两类数据进行操作,业务量模块内部计算出此时的请求业务的资源量,并以此时的业务资源量作为约束值。然后,计算节点负载模块内部则根据计算节点的处理器剩余和存储器剩余计算出云平台中每一台计算节点的实时剩余资源量。根据当前的请求业务量,将云平台内计算节点剩余资源量大于请求业务量的计算节点组成一个计算节点集合,通过计算节点集合模块与业务调度方法的交互,最终得到业务调度策略,然后将最优调度策略发送给调度控制模块。
当业务调度方法内部执行完毕后,将其生成的调度策略发送给调度控制模块,调度控制模块控制生成的调度策略以指令的形式通知云平台,并将待处理的业务分派到各个计算节点,以确保业务的顺利执行,并且同时保证算法的高效性、健壮性。调度控制模块内部实现流程如下:当接收模块接到来自调度策略模块的数据后,将数据发送给内部的数据输入模块,输入模块向调度策略预处理模块和云平台计算节点模块分别输入两个数据,业务调度方法调度策略和云平台计算节点集合PH。预处理模块根据输入的业务调度方法策略生成最终的最优调度策略。这时,云平台计算节点模块将云平台内的计算节点组成集合PH,然后将PH集合发送到最优调度策略模块,最优调度策略模块根据输入的计算节点集合进行挑选处理业务最优的计算节点,并且组成一个最优计算节点集合ST,ST集合中存放着云平台中计算节点的位置以及编号信息,需要将集合中的信息以指令的形式封装起来,然后将指令信息发送给云平台计算节点模块,至此,调度控制模块内部工作完成。
当计算节点云平台模块接收到来自系统内部的调度控制模块的指令信息后,将指令信息传递给内部的输入模块,输入模块将业务集合和调度指令分别发送到请求业务模块和解调指令模块,然后解调指令模块将收到的指令解调,并传送到调度模块,与此同时,请求业务模块同样将业务集合传送给调度模块。调度模块根据计算节点指令信息,选择相应的计算节点。当计算节点选择完成后,将业务集合中的业务快速的调度到相应的计算节点上进行处理业务,业务完成后,将计算结果返回到系统中的接收模块,然后接收模块再将计算结果发送给用户,至此,云平台计算节点模块的内部工作完成,并且开始进行下一个特定时间段的业务调度。
本发明提出的业务调度方法将云平台数据服务器收集到的业务请求调度到云平台的目标计算节点上,实现业务的高效调度。首先,根据评价计算节点性能的适应性函数、当前计算节点的处理器剩余和存储器剩余计算出当前全部计算节点的服务性能,依据当前用户请求业务量的大小对云平台内部的计算节点进行条件挑选,将计算节点剩余资源量大于业务请求集合的总资源量的计算节点组成一个集合,该集合是对云平台数据服务器的一个整体性约束。然后将计算节点集合中k台计算节点抽象成k个聚类点并且分别与云平台中全部计算节点进行聚类,将每台计算节点的处理器剩余量和存储器剩余量抽象为计算节点的两个属性,根据计算节点的两个属性计算计算节点之间的近似度,然后由近似度给定一个阈值,将计算节点之间的近似度在阈值内的计算节点加入到一个新的集合。当集合中的元素不再变化时,这个集合就是聚类的最后结果。最后,将待处理的业务调度至最终集合中的计算节点。数据服务器中计算节点聚类的过程就是找到处理业务最优计算节点的过程,初始时云平台数据服务器有n台计算节点,当根据每台计算节点的资源剩余和请求业务量的大小进行第一次挑选,这时会得到一个集合,此时集合内的计算节点数小于等于n,而第二次挑选出的结果集合内的计算节点的性能在一定程度上满足了当前用户的需求。
步骤1:假设数据服务器有n台计算节点组成一个集合H,为了满足聚类点的性能约束,本发明对数据服务器中的全部计算节点进行一个约束条件限制,将计算节点的剩余资源量Li作为度量标准,Li定义如下:
Li=αLc+βLm
其中α+β=1
Lc为处理器剩余;Lm为存储器剩余;α为处理器权重;β为存储器权重;α和β值的确定采用BP神经网络学习获取,根据计算节点性能的适应性函数,获取整个数据服务器中计算节点的各项性能监控数据,包括处理器和存储器数据,可以计算出当前云平台数据服务器中n台计算节点的剩余资源量。将约束值定义为:特定时间段内接收到的业务请求集合的总资源量,即:
其中,LR表示为业务请求集合的总资源量,表示为业务请求集合中第i个业务的资源量。定义一个空集S,计算出业务请求集合的总资源量LR,当Li>LR时,将i计算节点调度至集合S中,否则继续寻找,当n台计算节点与约束值比较完成后得到的集合S,集合S={s1,s2,s3....,sm},即为聚类点的集合,m<n。
步骤2:根据计算节点性能的适应性函数得到每台计算节点的性能值,通过和约束值的限定,本发明将数据服务器中性能相对较好的计算节点调度至集合S中。将计算节点的处理器剩余和存储器剩余作为计算节点的两个属性。设S={s1,s2,s3....,sm}为m个计算节点组成的集合,对集合S中的计算节点的处理器剩余进行降序排序,处理器剩余大的排列在前,假设sj为处理器剩余最大的计算节点,将sj作为聚类点,则计算近似度的公式为:
s(si,sj)=1/d(si,sj)
为计算节点j的第k个属性,由此计算出计算节点j与计算节点i之间的近似度s(si,sj):
步骤3:以sj为聚类点,计算sj与集合H中各个元素之间的近似度值。根据近似度给定一个阈值U,如果近似度大于阈值U,则将该元素加入新集合S'中。然后集合S按照计算节点处理器剩余的降序依次选择聚类点,分别计算与集合H中元素的近似度,将阈值大于U的元素调度至集合S'中,当集合S'中元素不再变化时,则迭代结束,集合S'为最终的聚类结果,即S'={s1',s2'...sq'},其中q<m<n。
步骤4:将数据服务器接收的业务请求调度至集合S'中的计算节点,然后集合S'中的计算节点处理请求的业务集合,处理完成后将结果返回给用户。从集合S'中计算节点开始处理业务到处理完成,将这段时间作为特定时间段,数据服务器在特定时间段内接收的业务请求数作为下一次待处理的业务。
步骤5:在下一时间段内重复步骤1-4的上述过程。
综上所述,本发明提出了一种基于云平台的实时任务调度方法,提高了云平台数据服务器的吞吐率,优化了数据服务器对外服务性能,具有更好的调度平衡效果。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。