任务调度方法和装置的制作方法

文档序号:6363121阅读:100来源:国知局
专利名称:任务调度方法和装置的制作方法
技术领域
本申请涉及互联网领域,具体而言,涉及一种任务调度方法和装置。
背景技术
目前,在计算机系统中对任务的执行都是采用,在某个具体的时间点上由调度服务器进行触发调度以实现对任务的调度。然而,该时间点往往是采用时间表达式来体现的,这些时间表达式可以表示某个具体的时间点,甚至可以精确到秒级对任务进行触发调度。因此,这种触发方式可以很好的实现在特定的某个时间点对任务进行触发调度。例如,quartz就是一种任务触发调度集合,它主要是形成一种基本形式如“秒分时日月周年”的时间表达式。例如,对于每间隔I分钟执行一次的任务,可以表示为:“**/1 * * * ”;在每一分钟的第0秒对任务进行触发调度,可以表示为:“0 */1 * * * ”。这种时间表示方法一般是精确到具体的某一秒对任务进行触发调度。采用类似quartz表达式对任务进行触发调度的具体步骤如图1所示,包括:S102:确定任务的调度周期,所谓任务调度的周期就是从一次调度到下一次调度之间间隔的时间。例如,每间隔5秒调度一次,每间隔5分钟调度一次,每间隔一小时调度一次,这就表示任务的调度周期分别是:5秒,5分钟,一小时。S104:确定任务需要调度的时间段,例如,调度的时间段是每周一到每周五的上午9点到下午6点,就表示只在周一到周五的上午9点到下午6点这个时间范围内才对该任务进行调度,在此时间段以外的时间不对该任务进行调度。S106:根据确定的调度周期和调度时间段信息生成quartz的触发调度表达式。S108:调度服务 器对quartz表达式进行解析,当时间点满足表达式中的时间点时,对该任务进行调度。然而,现有技术中,基于表达式来处理周期性任务的方法,基本都是单独以一种表达式来表示任务需要触发调度的时间。因为任务的执行都是在某个具体的时间点上由调度器触发调度,在计算机中,一般精确到具体的某一秒,这样会产生一定的问题,例如,对于具有相同调度周期的任务而言,每隔一定的周期在相同的时间点上对这些任务进行调度,这样,在每个调度周期的某个时间点上会造成调度服务器调度的压力过大,而调度服务器在其他时间点上可能没有需要调度的任务,从而处于空闲状态,导致调度服务器的调度压力分配不匀,造成系统资源的浪费,进一步的当许多具有相同调度周期的任务集中在一个时间点进行调度的时候,也会影响调度服务器在这个时间点上的处理性能,增加调度失败率,从而影响系统的处理效率和资源的使用效率。针对上述问题,目前还没有提出有效的解决办法。

发明内容
本申请的主要目的在于提供一种任务调度方法和装置,以至少解决现有技术中多个具有相同调度周期的任务在同一时间点进行调度而造成的调度服务器的调度压力分配不均的问题。根据本申请的一个方面,提供了一种任务调度方法,包括:获取待调度任务的调度周期和待调度任务的调度起始时间;根据调度周期和调度起始时间生成与待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间;在调度周期到达时延迟等待时间对待调度任务进行调度。优选地,根据调度周期和调度起始时间生成与待调度任务对应的等待时间的步骤包括:在范围
,其中,start表示等待时间,interval表示调度周期,quartz表示待调度任务的调度时间段。优选地,在调度周期到达时延迟等待时间对待调度任务进行调度的步骤包括:获取调度时间段包括当前时间的调度信息;判断所获取的调度信息对应的调度周期是否到达;在判断的调度周期到达时延迟等待时间对与获取的调度信息对应的待调度任务进行调度。根据本申请的另一方面,提供了一种任务调度装置,包括:获取单元,用于获取待调度任务的调度周期和待调度任务的调度起始时间;生成单元,用于根据调度周期和调度起始时间生成与待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间;调度单元,用于在调度周期到达时延迟等待时间对待调度任务进行调度。优选地,生成单元包括:选取模块,用于在范围
,其中,start表示等待时间,interval表示调度周期,quartz表示待调度任务的调度时间段。
优选地,调度单元包括:获取模块,用于获取调度时间段包括当前时间的调度信息;判断模块,用于判断所获取的调度信息对应的调度周期是否到达;调度模块,用于在判断的调度周期到达时延迟等待时间对与获取的调度信息对应的待调度任务进行调度。在本申请中,对具有相同调度周期的任务分配不同的等待时间,在调度周期到来的时候,延迟对应的等待时间在对该任务进行调度,从而解决了在大量任务集中在一个时间点上进行调度而造成的调度服务器的调度压力分配不均的问题,使得任务相对均匀地分配在不同时间点进行调度,提高了调度服务器处理任务的效率,减少了资源的浪费。


此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据相关技术的任务调度方法的流程图;图2是根据本申请实施例的任务调度系统的一种优选结构框图;图3是根据本申请实施例的任务调度装置的一种优选结构框图;图4是根据本申请实施例的任务调度装置的生成单元的一种优选结构框图;图5是根据本申请实施例的任务调度装置的另一种优选结构框图;图6是根据本申请实施例的任务调度装置的调度单元的一种优选结构框图;图7是根据本申请实施例的任务调度方法的一种优选流程图;图8是根据本申请实施例的任务调度方法的另一种优选流程图;图9是根据本申请实施例的任务调度方法的又一种优选流程图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。在描述本申请的各实施例的进一步细节之前,将参考图1来描述可用于实现本申请的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本申请的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本申请,但它并不意味着限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。转向附图,其中相同的参考标号指代相同的元素,本申请的原理被示为在一个合适的计算环境中实现。以下描述基于所述的本申请的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本申请。图2示出了可用于这些设备的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该计算系统解释为对图2所示的任一组件或其组合具有任何依赖或需求。
本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。在其最基本的配置中,图2中的任务调度系统200至少包括:一个网站的服务器202以及一个或多个客户端204。服务器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、用于存储数据的存储装置以及与客户端通信的传输装置;客户端204可以包括:微处理器MCU、与服务器通信的传输装置、与用户交互的显示装置。在本说明书和权利要求书中,“任务调度系统”也可以被定义为能够执行软件、固件或微码来实现功能的任何硬件组件或硬件组件的组合。任务调度系统200甚至可以是分布式的,以实现分布式功能。如本申请所使用的,术语“模块”、“组件”或“单元”可以指在任务调度系统200上执行的软件对象或例程。此处所描述的不同组件、模块、单元、引擎和服务可被实现为在任务调度系统200上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的系统和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。实施例1图3是根据本申请实施例任务调度装置的一种优选的结构示意图,优选的,本实施例中的任务调度装置位于服务器202上或者客户端204上。优选的,任务调度装置可以如图3所示,包括:获取单元302,用于获取待调度任务的调度周期和待调度任务的调度起始时间;生成单元304,用于根据调度周期和调度起始时间生成与待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间;调度单元306,用于在调度周期到达时延迟等待时间对待调度任务进行调度。在上述优选实施方式中,对调度周期相同的任务分配不同的等待时间,在调度周期到来的时候,延迟对应的等待时间再对该任务进行调度,从而避免了在大量任务集中在一个时间点上进行调度而造成的调度服务器的调度压力分配不均的问题,使得任务相对均匀地分配在不同时间点进行调度,提高了调度服务器处理任务的效率,减少了资源的浪费。举例而言,对于调度周期都为IOOs的3个任务:任务1、任务2以及任务3都在同一时间进行调度,调度服务器在每次调度周期到来的时间点调度压力会很大,通过本申请的方法,可以为任务I分配IOs的等待时间、为任务2分配30s的等待时间、为任务3分配50s的等待时间,从而使得三个任务错开调度,均衡了调度服务器的调度压力。在本申请一个优选实施方式中,如图4所示,生成单元304包括:选取模块402,用于在范围
,其中,start表示等待时间,interval表示调度周期,quartz表示待调度任务的调度时间段。例如,[(20,60),***** ],表示一个调度周期为60秒的任务,在调度服务器开始工作后,在调度周期到来时,会推迟20秒再对该任务进行调度,对于不同的任务会选择不同的start值,从而可以保证任务不会集中在一个时间点上进行调度。在上述优选实施方式中,采用[(start, interval), quartz]格式作为任务调度表达式,从而使得任务调度服务器可以通过该表达式明确知道在什么时间段对该任务进行调度、多长时间对该任务进行一次调度以及每次调度时延迟等待的时间。同时,采用quartz表达式进行调度,可以将调度时间点精确到秒。在本申请一个优选实施方式中,如图6所示,调度单元306包括:获取模块602,用于获取调度时间段包括当前时间的调度信息;判断模块604,用于判断所获取的调度信息对应的调度周期是否到达;调度模块606,用于在判断的调度周期到达时延迟等待时间对与获取的调度信息对应的待调度任务进行调度。在上述优选实施方式中,先获取任务调度信息,当对应于任务调度信息的调度周期到达的时候,延迟调度信息中的等待时间对任务进行调度,从而使得任务相对均匀地分配在不同时间点进行调度,提高了调度服务器处理任务的效率,减少了资源的浪费。实施例2在图2-图6所示的任务调度装置和系统的基础上,本申请提供了一种优选的任务调度方法。如图7所示,该任务调度方法可以包括如下步骤:S702:获取待调度任务的调度周期和待调度任务的调度起始时间;S704:根据调度周期和调度起始时间生成与待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间;S706:在调度周期 到达时延迟等待时间对待调度任务进行调度。在上述优选实施方式中,对调度周期相同的任务分配不同的等待时间,在调度周期到来的时候,延迟对应的等待时间再对该任务进行调度,从而避免了在大量任务集中在一个时间点上进行调度而造成的调度服务器的调度压力分配不均的问题,使得任务相对均匀地分配在不同时间点进行调度,提高了调度服务器处理任务的效率,减少了资源的浪费。举例而言,对于调度周期都为IOOs的3个任务:任务1、任务2以及任务3都在同一时间进行调度,调度服务器在每次调度周期到来的时间点调度压力会很大,通过本申请的方法,可以为任务I分配IOs的等待时间、为任务2分配30s的等待时间、为任务3分配50s的等待时间,从而使得三个任务错开调度,均衡了调度服务器的调度压力。在本申请一个优选实施方式中,根据调度周期和调度起始时间生成与待调度任务对应的等待时间的步骤包括:在范围
其中,start表示等待时间,interval表示调度周期,quartz表示待调度任务的调度时间段。例如,[(20,60),***** ],表示一个调度周期为60秒的任务,在调度服务器开始工作后,在调度周期到来时,会推迟20秒再对该任务进行调度,对于不同的任务会选择不同的start值,从而可以保证任务不会集中在一个时间点上进行调度。在上述优选实施方式中,采用[(start, interval), quartz]格式作为任务调度表达式,从而使得任务调度服务器可以通过该表达式明确知道在什么时间段对该任务进行调度、多长时间对该任务进行一次调度以及每次调度时延迟等待的时间。同时,采用quartz表达式进行调度,可以将调度时间点精确到秒。在本申请一个优选实施方式中,在调度周期到达时延迟等待时间对待调度任务进行调度的步骤可以如图8所示,包括:S802:获取调度时间段包括当前时间的调度信息;S804:判断所获取的调度信息对应的调度周期是否到达;S806:在判断的调度周期到达时延迟等待时间对与获取的调度信息对应的待调度任务进行调度。在上述优选实施方式中,先获取任务调度信息,当对应于任务调度信息的调度周期到达的时候,延迟调度信息中的等待时间对任务进行调度,从而使得任务相对均匀地分配在不同时间点进行调度,提高了调度服务器处理任务的效率,减少了资源的浪费。实施例3本申请提供了一种优选的实施例来进一步对本申请进行解释,但是值得注意的是,该优选实施例只是为了更好的描述本申请,并不构成对本申请不当的限定。基于上述的优选实施方式,本申请提供了一种具体的实施方式,如图9所示,步骤包括:S902:确定任务的调度周期interval,如有4个每隔5分钟需要调度一次的任务,分别定义为:任务1、任务2、任务3、任务4,对应的interval都是300秒。S904:确定任务的权值f,优选的,f■可以默认为I。S906:确定任务需要进行调度的时间段quartz,例如:每天上午9点到下午6点,
每周一到每周五等。S908:采用一定的算法计算出等待时间start。例如,可以采用如下公式计算出等待时间start:start = random (0, interval/f) *f,假设,在本实施例中,根据上述公式计算出任务I的等待时间为60秒、任务2的等待时间是100秒、任务3的等待时间是76秒、任务4的等待时间是232秒。优选地,也可以直接采用start = random(0, interval)计算得到等待时间。其中,random(a,b)表示区间[a, b)中的一个随机值,对于具体的计算方法在此不做限定。S910:根据上述得到的调度周期、等待时间以及调度时间段生成调度信息表达式,优选地,可以利用[(start, interval), quartz]进行表示,从而构成本申请的方法表示。在本优选实施例中,以quartz表达式为例进行说明,但是本申请不仅限于quartz,还可以适用于其它类似于quartz的用于对任务进行调度的表达式。其中,start表示任务在调度周期到任务延迟调度的等待时间(优选的,单位为秒),也就是说,在调度周期到达时延迟等待时间对待调度任务进行调度。通过这种方式可以防止大量任务在调度服务器中集中在一起进行调度。优选的,可以只在首次调度的时候计算该任务调度信息表达式,对于以后的每次调度可以采用首次生成的等待时间进行调度。interval表示周期性任 务的调度间隔(优选的,单位秒),也就是周期性任务的调度周期。quartz表示quartz表达式,该表达式用于表示一个连续的时间段,表明该任务只有在这个时间段内才进行调度,在这个时间段以外的时间范围内对该任务都不进行调度。S912:调度服务器根据以上表达式对任务进行调度。通过每个任务对应的不同的等待时间,在调度周期到来的时候,任调度服务器延迟60秒调度任务I再调度、延迟100秒调度任务2、延迟76秒调度任务3、延迟232秒调度任务4。每个任务通过不同的start时间,错开调度,解决了由于在特定时间点上执行大量的调度任务所产生的性能问题,提高了资源利用率和调度服务器的处理效率例如,[(20,60),***** ],表示一个调度周期为60秒的任务,在调度服务器开始工作后,在调度周期到来时,会推迟20秒再对该任务进行调度,对于不同的任务会选择不同的start值,从而可以保证任务不会集中在一个时间点上进行调度。在本优选的表示方法中,依赖于对start值的设定,并没有明确指定任务在哪个时间点上调度,算法尽量保证任务平均分配到各个时间点上调度,从而避免了大量任务集中在某个时间点调度的情况。当一个周期性任务开始调度后,每隔一定的间隔,任务会再次触发调度。为了尽量保证任务处理的时效性,延迟的start时间,应该是一个小于调度间隔的值,从而不会出现一个周期任务在先一次的调度还没执行完,在后一次的调度已经开始执行的情况,这样才能保证任务准确的执行。通过以上的描述可知,本申请具有以下优势:I)通过将周期性任务的调度时段和调度间隔分离,并增加了一个等待时间(start)的属性,使得每个任务通过不同的start时间,错开调度,解决了由于在特定时间点上执行大量的调度任务所产生的性能问题,提高了资源利用率和调度服务器的处理效率。2)本申请提供了计算start值的算法,尽可能地保证了任务的调度均衡,同时该计算算法还可以根据任务的调度时间或者是任务的场景进行合理的改变,提高了本申请的适用性。显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
权利要求
1.一种任务调度方法,其特征在于,包括: 获取待调度任务的调度周期和所述待调度任务的调度起始时间; 根据所述调度周期和所述调度起始时间生成与所述待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间; 在所述调度周期到达时延迟所述等待时间对所述待调度任务进行调度。
2.根据权利要求1所述的方法,其特征在于,根据所述调度周期和所述调度起始时间生成与所述待调度任务对应的等待时间的步骤包括: 在范围[O,调度周期)之间随机选取N个数值,其中,N为具有相同调度周期和调度起始时间的不同待调度任务的个数; 将所选取的N个数值作为等待时间分别分配给具有相同调度周期和调度起始时间的N个不同待调度任务。
3.根据权利要求2所述的方法,其特征在于,通过如下公式在范围[O,调度周期)之间随机选取N个数值中的每一个数值:start = random(0, interval/f)*f 其中,start表示所述等待时间,random (a, b)表示区间[a, b)中的一个随机值,interval表示所述调度周期,f为I至所述调度周期之间的一个整数。
4.根据权利要求1所述的方法,其特征在于,根据所述调度周期和所述调度起始时间生成与所述待调度任务对应的等待时间之后,还 包括: 采用以下方式记录与所述待调度任务对应的调度信息:[(start, interval), quartz],其中,start表示所述等待时间,interval表示所述调度周期,quartz表示所述待调度任务的调度时间段。
5.根据权利要求4所述的方法,其特征在于,在所述调度周期到达时延迟所述等待时间对所述待调度任务进行调度的步骤包括: 获取调度时间段包括当前时间的调度信息; 判断所获取的调度信息对应的调度周期是否到达; 在判断的调度周期到达时延迟所述等待时间对与获取的调度信息对应的待调度任务进行调度。
6.一种任务调度装置,其特征在于,包括: 获取单元,用于获取待调度任务的调度周期和所述待调度任务的调度起始时间; 生成单元,用于根据所述调度周期和所述调度起始时间生成与所述待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间; 调度单元,用于在所述调度周期到达时延迟所述等待时间对所述待调度任务进行调度。
7.根据权利要求6所述的装置,其特征在于,所述生成单元包括: 选取模块,用于在范围
,其中,start表示所述等待时间,interval表示所述调度周期,quartz表示所述待调度任务的调度时间段。
10.根据权利要求9所述的装置,其特征在于,所述调度单元包括: 获取模块,用于获取调度时间段 包括当前时间的调度信息; 判断模块,用于判断所获取的调度信息对应的调度周期是否到达; 调度模块,用于在判断的调度周期到达时延迟所述等待时间对与获取的调度信息对应的待调度任务进行调度。
全文摘要
本申请公开了一种任务调度方法和装置,该方法包括获取待调度任务的调度周期和待调度任务的调度起始时间;根据调度周期和调度起始时间生成与待调度任务对应的等待时间,其中,具有相同调度周期和相同调度起始时间的不同待调度任务对应不同的等待时间;在调度周期到达时延迟等待时间对待调度任务进行调度。本申请解决了在大量任务集中在一个时间点上进行调度而造成的调度服务器的调度压力分配不均的问题,使得任务相对均匀地分配在不同时间点进行调度,提高了调度服务器处理任务的效率,减少了资源的浪费。
文档编号G06F9/46GK103207807SQ201210009478
公开日2013年7月17日 申请日期2012年1月12日 优先权日2012年1月12日
发明者周宇 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1