任务调度方法和装置与流程

文档序号:11995462阅读:222来源:国知局
任务调度方法和装置与流程
本申请涉及互联网领域,具体而言,涉及一种任务调度方法和装置。

背景技术:
随着社会的发展,调度在生产、电力、交通指挥以及计算机作业控制等领域中得到了广泛的应用。例如,数据仓库是决策支持系统(DecisionSupportSystem,简称为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(0009***)或者18(0010***)等。也可采用如表1所示的方式表示:表1任务号期望完成时间15(0009***)18(0010***)在表1中,第一列是任务号,第二列可以采用类似crontab格式的文件来描述任务期望完成时间点,即,容忍时段。因为调度系统每天都会对任务调度执行一次,因此用(0009***)表示每天上午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为预定时间。结合上述优选实施例,本申请达到了如下效果:在本申请中,结合当前任务的不同调度情况动态调整任务权重实现了对任务的合理有效的调度。不是单个任务的调整,而是所有相关任务的一致调整。对任务的期望完成时间和系统当前时间之间的间隔进行判断,当其小于预定时间时,则动态地调整上述任务的权重,使得调整后的权重能够保证该任务在期望完成时间内完成,通过这种权重的动态调整,解决了现有技术中任务权重一旦设置完成便不再变动而造成的任务很难在调度服务器容忍的时间段内执行完成,使得系统调度出现异常的技术问题,达到了对任务进行合理有效地调度的技术效果,提高了系统的稳定性。显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1