CN103365708A - 任务调度方法和装置 - Google Patents
任务调度方法和装置 Download PDFInfo
- Publication number
- CN103365708A CN103365708A CN2012100995453A CN201210099545A CN103365708A CN 103365708 A CN103365708 A CN 103365708A CN 2012100995453 A CN2012100995453 A CN 2012100995453A CN 201210099545 A CN201210099545 A CN 201210099545A CN 103365708 A CN103365708 A CN 103365708A
- Authority
- CN
- China
- Prior art keywords
- task
- current
- weight
- time
- executing state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种任务调度方法和装置,其中,该方法包括:每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;若间隔小于预定时间,则根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;根据调整后的权重的大小按顺序对所有未执行或等待执行状态的任务进行调度。本申请解决了现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题。
Description
技术领域
本申请涉及互联网领域,具体而言,涉及一种任务调度方法和装置。
背景技术
随着社会的发展,调度在生产、电力、交通指挥以及计算机作业控制等领域中得到了广泛的应用。例如,数据仓库是决策支持系统(Decision Support System,简称为DSS)和联机分析应用数据源的结构化数据环境,基于数据仓库的调度系统一般会通过任务来描述数据仓库的一个业务处理流程。
然而,随着需要处理的业务数量的增多,调度系统需要负责的任务也越来越多。各个任务之间存在一定的依赖关系。
如图1所示,任务12、13和14依赖于任务11完成之后才能被执行,任务17依赖于任务13完成之后才能被执行,任务15依赖于任务12完成之后才能被执行,任务18依赖于任务13、14、15以及17完成之后才能被执行。
以图1为例进行说明,当任务11完成后,任务12、13和14才可以开始被执行,这时任务12、13和14请求执行所需的资源,然而,同一时间整个系统的处理能力有限,当多个任务等待同一个系统资源的时候,必然会出现系统资源的竞争问题。这时,每一个任务会按照自身权重的大小排队请求系统资源,即,权重大的优先获取请求的资源。通过上述方式,任务权重的大小就显得尤为重要。一般情况下,任务调度系统对业务处理有一个容忍时段,被调度执行的任务需要在规定的时间点之前完成,否则该任务将被延迟执行。任务权重决定了任务执行的先后顺序。
现有技术中,任务权重是根据任务的优先级和平均处理时间等因素按照某种规则事先计算得出,一旦确认好每个任务的任务权重该任务对应的权重将不再发生变化,即,任务权重的分配是静态的。然而,对任务的每一次调度,会受到多种因素的影响,这些因素主要有:数据量的大小、系统的繁忙程度以及网络负载等。在任务调度的过程中,每个任务的完成时间是不同的,任务之间还存在一定的依赖关系,因此,在同一时刻请求系统资源的任务也必然是不同的。对于现有技术中的静态权重不能根据当前系统的调度情况对等待资源的任务的执行先后顺序进行合理地调配,使得任务很难在调度服务器容忍的时间段内执行完成。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种任务调度方法和装置,以至少现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题。
根据本申请的一个方面,提供了一种任务调度方法,包括:每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;若间隔小于预定时间,则根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;根据调整后的权重的大小按顺序对所有未执行或等待执行状态的任务进行调度。
优选地,根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整的步骤包括:根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重和第二任务的当前权重进行增加。
优选地,根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整的步骤包括:在根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重和第二任务的当前权重进行增加之前,通过以下递归步骤获取第二任务,其中,当前任务的初始值为第一任务:步骤A:判断当前任务是否存在具有依赖关系的、且处于未执行或等待执行状态的前一个任务,其中,依赖关系指的是当前任务的执行依赖于前一个任务的执行;步骤B:若存在,则将该当前任务记录为第二任务中的任务,并将每一个前一个任务分别设置为当前任务,转至执行步骤A;若不存在,则停止执行对当前任务的递归步骤。
优选地,按照如下公式,根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整:w=w+[(W-w)/K]×D其中,w为第一任务和第二任务中的每一个任务的当前权重;W为系统允许任务的最大权重;K为预定时间;D为预定的周期。
优选地,每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间的步骤包括:每隔预定的周期检测是否存在处于未执行或等待执行状态的任务;若存在,则判断是否为处于未执行或等待执行状态的任务设置了期望完成时间;若设置了期望完成时间,则判断期望完成时间与当前系统时间之间的间隔是否小于预定时间。
根据本申请的另一方面,提供了一种任务调度装置,包括:检测单元,用于每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;调整单元,用于在间隔小于预定时间时,则根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;调度单元,用于根据调整后的权重的大小按顺序对所有未执行或等待执行状态的任务进行调度。
优选地,调整单元还用于根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重和第二任务的当前权重进行增加。
优选地,该任务调度装置还包括:获取单元,用于通过以下递归步骤获取第二任务,其中,当前任务的初始值为第一任务:步骤A:判断当前任务是否存在具有依赖关系的、且处于未执行或等待执行状态的前一个任务,其中,依赖关系指的是当前任务的执行依赖于前一个任务的执行;步骤B:若存在,则将该当前任务记录为第二任务中的任务,并将每一个前一个任务分别设置为当前任务,转至执行步骤A;若不存在,则停止执行对当前任务的递归步骤。
优选地,调整单元根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整的步骤包括:
w=w+[(W-w)/K]×D
其中,w为第一任务和第二任务中的每一个任务的当前权重;W为系统允许任务的最大权重;K为预定时间;D为预定的周期。
优选地,检测单元包括:检测模块,用于每隔预定的周期检测是否存在处于未执行或等待执行状态的任务;第一判断模块,用于在存在处于未执行或等待执行状态的任务时,判断是否为处于未执行或等待执行状态的任务设置了期望完成时间;第二判断模块,用于在设置了期望完成时间时,判断期望完成时间与当前系统时间之间的间隔是否小于预定时间。
在本申请中,对任务的期望完成时间和系统当前时间之间的间隔进行判断,当其小于预定时间时,则动态地调整上述任务的权重,使得调整后的权重能够保证该任务在期望完成时间内完成,通过这种权重的动态调整,解决了现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题,达到了对任务进行合理有效地调度的技术效果,提高了系统的稳定性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据相关技术的任务之间的依赖的关系示意图;
图2是根据本申请实施例的任务调度系统的一种优选结构框图;
图3是根据本申请实施例的任务调度装置的一种优选结构框图;
图4是根据本申请实施例的任务调度装置的另一种优选结构框图;
图5是根据本申请实施例的任务调度装置的又一种优选结构框图;
图6是根据本申请实施例的任务调度方法的一种优选流程图;
图7是根据本申请实施例的任务调度方法的另一种优选流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在描述本申请的各实施例的进一步细节之前,将参考图2来描述可用于实现本申请的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表示来描述本申请的各实施例。由此,可以理解,有时被称为计算机执行的这类动作和操作包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,这以本领域的技术人员都理解的方式重配置或改变了计算机的操作。维护数据的数据结构是具有数据的格式所定义的特定属性的存储器的物理位置。然而,尽管在上述上下文中描述本申请,但它并不意味着限制性的,如本领域的技术人员所理解的,后文所描述的动作和操作的各方面也可用硬件来实现。
转向附图,其中相同的参考标号指代相同的元素,本申请的原理被示为在一个合适的计算环境中实现。以下描述基于所述的本申请的实施例,并且不应认为是关于此处未明确描述的替换实施例而限制本申请。
图2示出了可用于这些设备的一个示例计算机体系结构的示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应将该计算系统解释为对图1所示的任一组件或其组合具有任何依赖或需求。
本申请的原理可以使用其它通用或专用计算或通信环境或配置来操作。适用于本申请的众所周知的计算系统、环境和配置的示例包括但不限于,个人计算机、服务器,多处理器系统、基于微处理的系统、小型机、大型计算机、以及包括任一上述系统或设备的分布式计算环境。
在其最基本的配置中,图2中的任务调度系统200至少包括:一个网站的服务器202以及一个或多个客户端204。服务器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置、用于存储数据的存储装置以及与客户端通信的传输装置;客户端104可以包括:微处理器MCU、与服务器通信的传输装置、与用户交互的显示装置。在本说明书和权利要求书中,“系统”也可以被定义为能够执行软件、固件或微码来实现功能的任何硬件组件或硬件组件的组合。任务调度系统200甚至可以是分布式的,以实现分布式功能。
如本申请所使用的,术语“模块”、“组件”或“单元”可以指在任务调度系统200上执行的软件对象或例程。此处所描述的不同组件、模块、单元、引擎和服务可被实现为在任务调度系统200上执行(例如,作为单独的线程)的对象或进程。尽管此处所描述的系统和方法较佳地以软件来实现,但是硬件或软件和硬件的组合的实现也是可能并被构想的。
实施例1
在任务调度系统中的任务一般有五种状态:未执行、等待执行、正在执行、执行成功以及执行失败。该五种状态具体表示如下:
未执行,表明该任务所依赖的所有任务还没有执行成功,因此该任务处于未执行状态;等待执行,表明该任务在等待系统资源;
正在执行,表明该任务正在执行;
执行成功,表明该任务被成功执行;
执行失败,表明该任务执行失败,若任务执行失败,则依赖该任务的任务将不能被执行。
本申请实施例提供了一种优选的任务调度装置,优选的,本实施例中的装置位于服务器202上或者客户端204上。如图3所示,该任务调度装置可以包括:
检测单元302,用于每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;
调整单元304,用于在间隔小于预定时间时,则根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;
调度单元306,用于根据调整后的权重的大小按顺序对未执行或等待执行状态的任务进行调度。
在上述优选实施方式中,对任务的期望完成时间和系统当前时间之间的间隔进行判断,当其小于预定时间时,则动态地调整上述任务的权重,使得调整后的权重能够保证该任务在期望完成时间内完成,通过这种任务权重的动态调整,解决了现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题,达到了对任务进行合理有效地调度的技术效果,提高了系统的稳定性。
为了使得期望完成时间与当前系统时间之间的间隔是否小于预定时间的任务可以在期望完成时间前完成,在一个优选实施方式中,调整单元306还用于根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重和第二任务的当前权重进行增加。在上述优选实施方式中,增加在期望完成时间前难以执行完成的任务以及与该任务存在依赖关系的任务的任务权重,使得该任务与该任务存在依赖关系的任务可以优先被执行,一定程度上保证了该任务可以在期望完成时间前执行完成。
因在业务中,每个任务对应直接的存在依赖关系的任务,也存在与该存在依赖关系的任务存在依赖关系的任务,因此不能仅仅判断与该任务存在直接依赖关系的任务还要判断与该任务存在间接依赖关系的任务,在一个优选实施方式中,如图4所示,该任务调度装置还包括:获取单元402,用于通过以下递归步骤获取第二任务,其中,当前任务的初始值为第一任务:步骤A:判断当前任务是否存在具有依赖关系的、且处于未执行或等待执行状态的前一个任务,其中,依赖关系指的是当前任务的执行依赖于前一个任务的执行;步骤B:若存在,则将该当前任务记录为第二任务中的任务,并将每一个前一个任务分别设置为当前任务,转至执行步骤A;若不存在,则停止执行对当前任务的递归步骤。
以图1所示的任务之间的依赖关系为例来说明如何进行上述的递归过程,例如,当18处于当前任务时,首先判断和18有依赖关系的任务有13、12、14、17以及15,若现在13、17、15处于未执行状态或者是等待状态,因此将任务13、17、15记录为第二任务中的任务,同时则分别判断与任务13、17、15有依赖关系的任务是否处于未执行或者等待状态。
以任务13作为当前任务进行判断,与任务13存在依赖关系的任务是任务11,现在任务11已经被执行,因此结束关于任务13的递归过程。
以任务17作为当前任务,与任务17存在依赖的关系的任务是任务13,此时任务13处于未执行状态,因此将任务17记录为第二任务中的任务,同时将任务13作为当前任务进行判断,与任务13存在依赖关系的任务是任务11,现在任务11已经被执行,因此结束关于任务17的递归过程。
以任务15作为当前任务,与任务15存在依赖关系的任务是任务12,因任务12已经被执行,因此结束关于任务15的递归过程。从而,完成了通过递归步骤获取第二任务的过程。
在上述优选实施方式中,采用递归的方式找出业务中与该任务存在直接、间接依赖关系的任务,将这些任务都作为需要调整的第二任务,从而保证了不会因为在该任务以前的任务一直未被执行而照成该任务的延迟执行,保证了任务的有效调度执行。
在一个优选实施方式中,调整单元可以按照如下公式根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整:
w=w+[(W-w)/K]×D
其中,w为第一任务和第二任务中的每一个任务的当前权重;W为系统允许任务的最大权重;K为预定时间;D为预定的周期。在上述优选实施方式中,通过上述公式得到的任务权重保证了需要优先调度的任务的任务的权重被增加,同时也保证了作为第二任务的任务之间仍然遵循着以前的优先级顺序,保证了任务可以被有效合理地被调度。
在实际的任务中,有些任务设置了期望完成时间,有些任务未设定期望完成时间,对于未设定期望完成时间的任务不需要对其进行上述的任务权重的调整,为了减少不必要的资源浪费,在一个优选实施方式中,如图5所示,检测单元包括:检测模块502,用于每隔预定的周期检测是否存在处于未执行或等待执行状态的任务;第一判断模块504,用于在存在处于未执行或等待执行状态的任务时,判断是否为处于未执行或等待执行状态的任务设置了期望完成时间;第二判断模块506,用于在设置了期望完成时间时,判断期望完成时间与当前系统时间之间的间隔是否小于预定时间。在上述优选实施方式中,仅对设定了期望完成时间的任务进行判断和任务权值的调整,对于未设定期望完成时间的任务不对其进行判断和调整,从而减少了不必要的系统损耗,提高了系统资源的利用率。
实施例2
在图3-图5所示的任务调度装置的基础上,本申请提供了一种优选的任务调度方法。如图6所示,该方法可以包括如下步骤:
S602:每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;例如,以每5分钟为周期周期性的对任务进行检测,判断上述的处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于60分钟,即两者时间的时间差是否在1个小时以内。
S604:若间隔小于预定时间,则根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;例如,将间隔小于60分钟的任务作为需要进行权值调整的第一任务,将其设为任务T,查找任务T所依赖的所有任务,假设为任务t,将任务t中所有处于未执行或等待执行的任务录进入数组W中,对W中的任务的当前权重进行调整。
S606:根据调整后的权重的大小按顺序对未执行或等待执行状态的任务进行调度。
在上述优选实施方式中,对任务的期望完成时间和系统当前时间之间的间隔进行判断,当其小于预定时间时,则动态地调整上述任务的权重,使得调整后的权重能够保证该任务在期望完成时间内完成,通过这种任务权重的动态调整,解决了现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题,达到了对任务进行合理有效地调度的技术效果,提高了系统的稳定性。
为了使得期望完成时间与当前系统时间之间的间隔是否小于预定时间的任务可以在期望完成时间前完成,在一个优选实施方式中,根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整就是:根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重和第二任务的当前权重进行增加。在上述优选实施方式中,增加在期望完成时间前难以执行完成的任务以及与该任务存在依赖关系的任务的任务权重,使得该任务与与该任务存在依赖关系的任务可以优先被执行,一定程度上保证了该任务可以在期望完成时间前执行完成。
因在业务中,每个任务对应直接的存在依赖关系的任务,也存在与该存在依赖关系的任务存在依赖关系的任务,因此不能仅仅判断与该任务存在直接依赖关系的任务还要判断与该任务存在间接依赖关系的任务,在一个优选实施方式中,根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整的步骤包括:在根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重和第二任务的当前权重进行增加之前,通过以下递归步骤获取第二任务,其中,当前任务的初始值为第一任务:
步骤A:判断当前任务是否存在具有依赖关系的、且处于未执行或等待执行状态的前一个任务,其中,依赖关系指的是当前任务的执行依赖于前一个任务的执行;
步骤B:若存在,则将该当前任务记录为第二任务中的任务,并将每一个前一个任务分别设置为当前任务,转至执行步骤A;
若不存在,则停止执行对当前任务的递归步骤。
以图1所示的任务之间的依赖关系为例来说明如何进行上述的递归过程,例如,当18处于当前任务时,首先判断和18有依赖关系的任务有13、12、14、17以及15,若现在13、17、15处于未执行状态或者是等待状态,因此将任务13、17、15记录为第二任务中的任务,同时则分别判断与任务13、17、15有依赖关系的任务是否处于未执行或者等待状态。
以任务13作为当前任务进行判断,与任务13存在依赖关系的任务是任务11,现在任务11已经被执行,因此结束关于任务13的递归过程。
以任务17作为当前任务,与任务17存在依赖的关系的任务是任务13,此时任务13处于未执行状态,因此将任务17记录为第二任务中的任务,同时将任务13作为当前任务进行判断,与任务13存在依赖关系的任务是任务11,现在任务11已经被执行,因此结束关于任务17的递归过程。
以任务15作为当前任务,与任务15存在依赖关系的任务是任务12,因任务12已经被执行,因此结束关于任务15的递归过程。从而,完成了通过递归步骤获取第二任务的过程。
在上述优选实施方式中,采用递归的方式找出业务中与该任务存在直接、间接依赖关系的任务,将这些任务都作为需要调整的第二任务,从而保证了不会因为在该任务以前的任务一直未被执行而照成该任务的延迟执行,保证了任务的有效调度执行。
在一个优选实施方式中,可以按照如下公式,根据第一任务的当前权重、预定的周期、系统允许任务的最大权重以及预定时间对第一任务的当前权重以及与第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整:
w=w+[(W-w)/K]×D
其中,w为第一任务和第二任务中的每一个任务的当前权重;W为系统允许任务的最大权重;K为预定时间;D为预定的周期。
在上述优选实施方式中,通过上述公式得到的任务权重保证了需要优先调度的任务的任务的权重被增加,同时也保证了作为第二任务的任务之间仍然遵循着以前的优先级顺序,保证了任务可以被有效合理地被调度。
在实际的任务中,有些任务设置了期望完成时间,有些任务未设定期望完成时间,对于未设定期望完成时间的任务不需要对其进行上述的任务权重的调整,为了减少不必要的资源浪费,在一个优选实施方式中,每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间如图7所示,包括:
S702:每隔预定的周期检测是否存在处于未执行或等待执行状态的任务;
S704:若存在,则判断是否为处于未执行或等待执行状态的任务设置了期望完成时间;
S706:若设置了期望完成时间,则判断期望完成时间与当前系统时间之间的间隔是否小于预定时间。
在上述优选实施方式中,仅对设定了期望完成时间的任务进行判断和任务权值的调整,对于未设定期望完成时间的任务不对其进行判断和调整,从而减少了不必要的系统损耗,提高了系统资源的利用率。
实施例3
任务容忍时段,即,期望完成时间可以采用如下方式描述:任务号(期望完成时间点)例如:15(00 09***)或者18(00 10***)等。也可采用如表1所示的方式表示:
表1
任务号 | 期望完成时间 |
15 | (00 09***) |
18 | (00 10***) |
在表1中,第一列是任务号,第二列可以采用类似crontab格式的文件来描述任务期望完成时间点,即,容忍时段。因为调度系统每天都会对任务调度执行一次,因此用(00 09***)表示每天上午9点,即,容忍时段为:00:00:00-09:00:00。
还需要有一个解析模块,该解析模块要解析出任务的执行日期,以及该任务期望完成的时间点。
例如,调度的当前日期为:2012-01-24,要根据当前日期明确任务的期望完成时间点是2012-01-24日的09:00:00而不是2012-01-25日的09:00:00或者其他日期。因为,如果仅仅依据09:00:00来判断任务是否完成,对于在对于2012-01-24日的09:00:00未完成的任务,如果按照2012-01-24日的09:00:00来看,任务已经超时,而按照2012-01-25日的09:00:00来看,任务则没有超时。因此,在本申请各个实施方式中,必须将时间明确到具体日期2012-01-24日的09:00:00,从而实现对超时与否的正确判断。
调度系统启动一个监控进程,该监控进程负责监控整个系统当前任务的运行情况,并根据解析出的期望完成时间,周期性(例如:检测周期D为5分钟)地按某种预定的算法动态调整任务对应的任务权重,以保证任务在期望完成时间点之前执行完成。
对任务权值进行调整的步骤包括:
S1:检测是否有设置了期望完成时间的任务处于未执行或等待执行的状态的任务,如果有,则将该任务标记为T,执行S2,否则结束该流程。
S2:对设置了期望完成时间的任务进行检查,判断该任务对应的期望完成时间与系统当前时间的间隔是否小于预定的时间K,例如,预定时间为K=60分钟,即,期望完成时间与当前时间相差是否小于60分钟,若是,则执行S3;否则,结束该流程。
S3:采用递归的算法查找任务T所依赖的所有任务:
假设为t,检测任务t的状态,如果任务t状态为未执行或等待执行,则将该任务t记录进入数组W中,如果任务t的状态为执行成功或正在执行,则停止对该任务t的递归流程;
如果任务t的状态为执行失败,则对该任务T标记变量flag=failed,则表明任务T不可能被执行,因此结束该调整流程,否则,将数组W中所有任务t权重增加[(W-w)/K]*D。其中,W为任务允许的最大权重、w为任务当前权重、D为预定的检测周期(比如,10分钟)、K为预定时间。
结合上述优选实施例,本申请达到了如下效果:
在本申请中,结合当前任务的不同调度情况动态调整任务权重实现了对任务的合理有效的调度。不是单个任务的调整,而是所有相关任务的一致调整。对任务的期望完成时间和系统当前时间之间的间隔进行判断,当其小于预定时间时,则动态地调整上述任务的权重,使得调整后的权重能够保证该任务在期望完成时间内完成,通过这种权重的动态调整,解决了现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题,达到了对任务进行合理有效地调度的技术效果,提高了系统的稳定性。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种任务调度方法,其特征在于,包括:
每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;
若所述间隔小于所述预定时间,则根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重以及与所述第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;
根据调整后的权重的大小按顺序对未执行或等待执行状态的任务进行调度。
2.根据权利要求1所述的方法,其特征在于,根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重以及与所述第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整的步骤包括:
根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重和所述第二任务的当前权重进行增加。
3.根据权利要求2所述的方法,其特征在于,根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重以及与所述第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整的步骤包括:
在根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重和所述第二任务的当前权重进行增加之前,通过以下递归步骤获取所述第二任务,其中,当前任务的初始值为所述第一任务:
步骤A:判断所述当前任务是否存在具有依赖关系的、且处于未执行或等待执行状态的前一个任务,其中,所述依赖关系指的是所述当前任务的执行依赖于所述前一个任务的执行;
步骤B:若存在,则将该当前任务记录为所述第二任务中的任务,并将每一个所述前一个任务分别设置为当前任务,转至执行所述步骤A;若不存在,则停止执行对所述当前任务的递归步骤。
4.根据权利要求1至3中任一项所述的方法,其特征在于,按照如下公式,根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重以及与所述第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整:
w=w+[(W-w)/K]×D
其中,w为所述第一任务和所述第二任务中的每一个任务的当前权重;W为所述系统允许任务的最大权重;K为所述预定时间;D为所述预定的周期。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间的步骤包括:
每隔所述预定的周期检测是否存在处于未执行或等待执行状态的任务;
若存在,则判断是否为所述处于未执行或等待执行状态的任务设置了期望完成时间;
若设置了所述期望完成时间,则判断所述期望完成时间与当前系统时间之间的间隔是否小于所述预定时间。
6.一种任务调度装置,其特征在于,包括:
检测单元,用于每隔预定的周期检测为处于未执行或等待执行状态的第一任务所设置的期望完成时间与当前系统时间之间的间隔是否小于预定时间;
调整单元,用于在所述间隔小于所述预定时间时,则根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重以及与所述第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整;
调度单元,用于根据调整后的权重的大小按顺序对未执行或等待执行状态的任务进行调度。
7.根据权利要求6所述的装置,其特征在于,所述调整单元还用于根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重和所述第二任务的当前权重进行增加。
8.根据权利要求7所述的装置,其特征在于,还包括:
获取单元,用于通过以下递归步骤获取所述第二任务,其中,当前任务的初始值为所述第一任务:
步骤A:判断所述当前任务是否存在具有依赖关系的、且处于未执行或等待执行状态的前一个任务,其中,所述依赖关系指的是所述当前任务的执行依赖于所述前一个任务的执行;
步骤B:若存在,则将该当前任务记录为所述第二任务中的任务,并将每一个所述前一个任务分别设置为当前任务,转至执行所述步骤A;若不存在,则停止执行对所述当前任务的递归步骤。
9.根据权利要求6至8中任一项所述的装置,其特征在于,所述调整单元按照如下公式,根据所述第一任务的当前权重、所述预定的周期、系统允许任务的最大权重以及所述预定时间对所述第一任务的当前权重以及与所述第一任务存在依赖关系的、且处于未执行或等待执行状态的第二任务的当前权重进行调整:
w=w+[(W-w)/K]×D
其中,w为所述第一任务和所述第二任务中的每一个任务的当前权重;W为所述系统允许任务的最大权重;K为所述预定时间;D为所述预定的周期。
10.根据权利要求6至8中任一项所述的装置,其特征在于,所述检测单元包括:
检测模块,用于每隔所述预定的周期检测是否存在处于未执行或等待执行状态的任务;
第一判断模块,用于在存在处于未执行或等待执行状态的任务时,判断是否为所述处于未执行或等待执行状态的任务设置了期望完成时间;
第二判断模块,用于在设置了所述期望完成时间时,判断所述期望完成时间与当前系统时间之间的间隔是否小于所述预定时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210099545.3A CN103365708B (zh) | 2012-04-06 | 2012-04-06 | 任务调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210099545.3A CN103365708B (zh) | 2012-04-06 | 2012-04-06 | 任务调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365708A true CN103365708A (zh) | 2013-10-23 |
CN103365708B CN103365708B (zh) | 2017-03-22 |
Family
ID=49367135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210099545.3A Active CN103365708B (zh) | 2012-04-06 | 2012-04-06 | 任务调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103365708B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105450737A (zh) * | 2015-11-13 | 2016-03-30 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和系统 |
CN106097088A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 账务数据的处理方法及系统 |
CN103761148B (zh) * | 2014-01-26 | 2017-04-05 | 北京京东尚科信息技术有限公司 | 集群定时调度任务的控制方法 |
CN107179896A (zh) * | 2016-03-09 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 任务处理方法和装置 |
CN107766143A (zh) * | 2016-08-16 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 数据处理管理系统和任务管理、任务调度方法及装置 |
CN107979704A (zh) * | 2017-12-01 | 2018-05-01 | 中国联合网络通信集团有限公司 | 排队方法、排队系统 |
CN109450818A (zh) * | 2018-12-25 | 2019-03-08 | 中国移动通信集团江苏有限公司 | 物联网信息下发的方法、装置、设备和介质 |
CN109656698A (zh) * | 2018-12-14 | 2019-04-19 | 平安城市建设科技(深圳)有限公司 | 任务处理方法、管理平台、执行端及计算机可读存储介质 |
CN109992390A (zh) * | 2019-04-23 | 2019-07-09 | 广州裕睿信息科技有限公司 | 定时任务调度方法以及定时任务处理方法 |
CN111026518A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务调度方法 |
CN112286661A (zh) * | 2020-10-30 | 2021-01-29 | 海通证券股份有限公司 | 任务调度方法及装置、存储介质、终端 |
CN112698927A (zh) * | 2019-10-23 | 2021-04-23 | 杭州海康威视数字技术股份有限公司 | 双向通信方法、装置、电子设备及机器可读存储介质 |
CN113051069A (zh) * | 2019-12-28 | 2021-06-29 | 华为技术有限公司 | 基于多任务的数据分析方法、装置及终端设备 |
CN113094158A (zh) * | 2021-03-15 | 2021-07-09 | 国政通科技有限公司 | 服务的驱动调用方法、调用装置、电子设备及存储介质 |
WO2021184196A1 (en) * | 2020-03-17 | 2021-09-23 | Citrix Systems, Inc. | Sorting activity feed notifications to enhance team efficiency |
CN117421106A (zh) * | 2023-12-11 | 2024-01-19 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577253A (zh) * | 2003-07-23 | 2005-02-09 | Lg电子株式会社 | 改进的最早时限第一的调度方法 |
WO2006115611A2 (en) * | 2005-04-22 | 2006-11-02 | General Motors Global Technology Operations, Inc. | Extensible scheduling of tasks in time-triggered distributed embedded systems |
CN101038559A (zh) * | 2006-09-11 | 2007-09-19 | 中国工商银行股份有限公司 | 批量任务调度引擎及调度方法 |
CN101118624A (zh) * | 2006-07-31 | 2008-02-06 | 埃森哲全球服务有限公司 | 工作分配模型 |
CN102111337A (zh) * | 2011-03-14 | 2011-06-29 | 浪潮(北京)电子信息产业有限公司 | 任务调度方法和系统 |
-
2012
- 2012-04-06 CN CN201210099545.3A patent/CN103365708B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577253A (zh) * | 2003-07-23 | 2005-02-09 | Lg电子株式会社 | 改进的最早时限第一的调度方法 |
WO2006115611A2 (en) * | 2005-04-22 | 2006-11-02 | General Motors Global Technology Operations, Inc. | Extensible scheduling of tasks in time-triggered distributed embedded systems |
CN101118624A (zh) * | 2006-07-31 | 2008-02-06 | 埃森哲全球服务有限公司 | 工作分配模型 |
CN101038559A (zh) * | 2006-09-11 | 2007-09-19 | 中国工商银行股份有限公司 | 批量任务调度引擎及调度方法 |
CN102111337A (zh) * | 2011-03-14 | 2011-06-29 | 浪潮(北京)电子信息产业有限公司 | 任务调度方法和系统 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761148B (zh) * | 2014-01-26 | 2017-04-05 | 北京京东尚科信息技术有限公司 | 集群定时调度任务的控制方法 |
CN105450737A (zh) * | 2015-11-13 | 2016-03-30 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和系统 |
CN105450737B (zh) * | 2015-11-13 | 2019-02-12 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置和系统 |
CN107179896A (zh) * | 2016-03-09 | 2017-09-19 | 阿里巴巴集团控股有限公司 | 任务处理方法和装置 |
CN106097088A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 账务数据的处理方法及系统 |
CN107766143A (zh) * | 2016-08-16 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 数据处理管理系统和任务管理、任务调度方法及装置 |
CN107979704A (zh) * | 2017-12-01 | 2018-05-01 | 中国联合网络通信集团有限公司 | 排队方法、排队系统 |
CN111026518A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务调度方法 |
CN111026518B (zh) * | 2018-10-10 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 任务调度方法 |
CN109656698A (zh) * | 2018-12-14 | 2019-04-19 | 平安城市建设科技(深圳)有限公司 | 任务处理方法、管理平台、执行端及计算机可读存储介质 |
CN109450818A (zh) * | 2018-12-25 | 2019-03-08 | 中国移动通信集团江苏有限公司 | 物联网信息下发的方法、装置、设备和介质 |
CN109992390A (zh) * | 2019-04-23 | 2019-07-09 | 广州裕睿信息科技有限公司 | 定时任务调度方法以及定时任务处理方法 |
CN112698927A (zh) * | 2019-10-23 | 2021-04-23 | 杭州海康威视数字技术股份有限公司 | 双向通信方法、装置、电子设备及机器可读存储介质 |
CN112698927B (zh) * | 2019-10-23 | 2024-05-28 | 杭州海康威视数字技术股份有限公司 | 双向通信方法、装置、电子设备及机器可读存储介质 |
CN113051069B (zh) * | 2019-12-28 | 2023-12-08 | 华为技术有限公司 | 基于多任务的数据分析方法、装置及终端设备 |
CN113051069A (zh) * | 2019-12-28 | 2021-06-29 | 华为技术有限公司 | 基于多任务的数据分析方法、装置及终端设备 |
WO2021184196A1 (en) * | 2020-03-17 | 2021-09-23 | Citrix Systems, Inc. | Sorting activity feed notifications to enhance team efficiency |
US11474862B2 (en) | 2020-03-17 | 2022-10-18 | Citrix Systems, Inc. | Sorting activity feed notifications to enhance team efficiency |
CN112286661A (zh) * | 2020-10-30 | 2021-01-29 | 海通证券股份有限公司 | 任务调度方法及装置、存储介质、终端 |
CN113094158A (zh) * | 2021-03-15 | 2021-07-09 | 国政通科技有限公司 | 服务的驱动调用方法、调用装置、电子设备及存储介质 |
CN117421106A (zh) * | 2023-12-11 | 2024-01-19 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
CN117421106B (zh) * | 2023-12-11 | 2024-03-08 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103365708B (zh) | 2017-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103365708A (zh) | 任务调度方法和装置 | |
US10303509B2 (en) | Distributed task system based on internet of things and service processing method for distributed tasks based on the same | |
CN112162865B (zh) | 服务器的调度方法、装置和服务器 | |
CN106293919B (zh) | 一种时间触发的嵌入式任务调度装置与方法 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
CN109597685B (zh) | 任务分配方法、装置和服务器 | |
CN110928655A (zh) | 一种任务处理方法及装置 | |
US20130091506A1 (en) | Monitoring performance on workload scheduling systems | |
US9218210B2 (en) | Distributed processing system | |
US10514949B1 (en) | Efficient data processing in a serverless environment | |
CN105159769A (zh) | 一种适用于计算能力异构集群的分布式作业调度方法 | |
CN103207807A (zh) | 任务调度方法和装置 | |
CN103530189A (zh) | 一种面向流式数据的自动伸缩及迁移的方法及装置 | |
CN105630588A (zh) | 一种分布式作业调度方法和系统 | |
CN108536530B (zh) | 一种多线程任务调度方法及装置 | |
CN110611707A (zh) | 一种任务调度的方法及装置 | |
CN113157411A (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN115951983A (zh) | 任务调度方法、装置、系统和电子设备 | |
CN111767125B (zh) | 任务执行方法、装置、电子设备、存储介质 | |
CN107038072B (zh) | 基于Hadoop系统的任务调度方法和装置 | |
CN107391262B (zh) | 一种作业调度方法及装置 | |
CN110781452A (zh) | 统计任务的处理方法、装置、计算机设备和存储介质 | |
Aggarwal et al. | On the optimality of scheduling dependent mapreduce tasks on heterogeneous machines | |
KR102421633B1 (ko) | 자원 사용량을 고려한 소프트웨어 배포 스케줄링 방법 및 장치 | |
CN111158896A (zh) | 一种分布式进程调度方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1186794 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1186794 Country of ref document: HK |