首页> 中国专利> 确定任务调度时间的方法、确定任务执行时间的方法和设备

确定任务调度时间的方法、确定任务执行时间的方法和设备

摘要

本发明公开了用于确定任务调度时间的方法和设备,判断第一任务与第二任务之间的依赖关系;当确定第一任务依赖于第二任务时:判断第一任务与第二任务的调度时间粒度的关系;当第一任务的调度时间粒度不等于第二任务的调度时间粒度时,以第一任务与第二任务中调度时间粒度较粗者的调度时间调度第一任务;当第一任务的调度时间粒度等于第二任务的调度时间粒度时:判断第一任务与第二任务的首次调度时间的关系;以第一任务与第二任务中首次调度时间较晚者的调度时间调度第一任务。同时还提供用于确定任务执行时间的方法以及为在网络中的每个任务确定任务执行时间的方法和设备。通过本发明可以将复杂的依赖关系通过所述调度机制,使任务调度变得简单、可行、正确、高效。

著录项

  • 公开/公告号CN106814993A

    专利类型发明专利

  • 公开/公告日2017-06-09

    原文格式PDF

  • 申请/专利权人 广州神马移动信息科技有限公司;

    申请/专利号CN201510876021.4

  • 发明设计人 谢磊;郭威;

    申请日2015-12-01

  • 分类号G06F9/38(20060101);

  • 代理机构11442 北京博雅睿泉专利代理事务所(特殊普通合伙);

  • 代理人马佑平;杨国权

  • 地址 510627 广东省广州市天河区黄埔大道西平云路163号广电平云广场B塔16楼

  • 入库时间 2023-06-19 02:27:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-16

    专利权的转移 IPC(主分类):G06F9/38 登记生效日:20200527 变更前: 变更后: 申请日:20151201

    专利申请权、专利权的转移

  • 2019-04-12

    授权

    授权

  • 2017-07-04

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20151201

    实质审查的生效

  • 2017-06-09

    公开

    公开

说明书

技术领域

本发明涉及电子信息技术,更具体地,涉及一种确定任务调度时间的方法、确定任务执行时间的方法和设备。

背景技术

任务调度是操作系统、数据库管理中常见的运行机制。在任务调度中,举例来说,比较常用的方式是在linux系统下采用crontab的方式,定时调度可执行任务,例如,crontab的基本格式是基本格式:

* * * * * command

分 时 日 月 周 命令

第1列表示分钟1~59每分钟用*或者*/1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

类似的任务调度中所存在的问题是如果多个任务之间存在先后执行的数据依赖关系,特别是在分布式架构中,任务由不同的实体来调度和之行,现有技术只能通过时间的先后顺序来保证任务之间的调度顺序,这很容易导致调度混乱。如果任务失败,则很难让其依赖任务不执行。而且对于复杂的调度时间依赖几乎无法实现,比如调度时间是8,96,18***(每天6:08,6:09,18:08,18:09执行一次)的任务依赖于调度时间是1010,20***(每天10:10,20:10各执行一次)的任务,则根据crontab几乎无法正确调度。

进一步,对于交叉依赖任务,crontab更是束手无策,如图12所示,Task2依赖流水线Pipeline1的Task1(调度时间每小时30分),同时依赖流水线Pipeline2的任务Task5(调度时间是每小时10分),但是流水线Pipeline2的Task4依赖流水线Pipeline1的Task3,流水线Pipeline2的Task5又依赖于Task4,这就导致Task2的依赖是交叉依赖,那么Task2无法在传统crontab机制中实现正确的调度。

本发明的发明人认识到,任务调度、特别是crontab任务的调度中,会出现任务之间由于交叉依赖或者复杂依赖所导致的无法正确调度的情况,而这一问题在现有技术中从未得到解决,因此亟需提出一种任务的调度时间的确定方法和装置从而解决这一问题。

发明内容

根据本发明的第一个方面,提供一种用于确定任务调度时间的方法,包括:判断第一任务与第二任务之间的依赖关系;当在所述判断依赖关系的步骤中确定第一任务依赖于第二任务时:判断所述第一任务与第二任务的调度时间粒度的关系;以及当所述第一任务的调度时间粒度不等于所述第二任务的调度时间粒度时,以所述第一任务与第二任务中调度时间粒度较粗者的调度时间调度所述第一任务;当所述第一任务的调度时间粒度等于所述第二任务的调度时间粒度时:判断所述第一任务与第二任务的首次调度时间的关系;以及以所述第一任务与第二任务中首次调度时间较晚者的调度时间调度所述第一任务。

优选地,所述方法还包括:在调度所述第一任务前,判断所述第二任务是否执行成功的步骤。

优选地,其中:所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以第一和第二任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

根据本发明的第二个方面,提供一种可编程设备,包括存储器和处理器,其中,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行前述的方法。

根据本发明的第三个方面,提供一种用于确定任务执行时间的方法,包括:根据本任务的调度时间和当前时间计算本任务的首次执行时间;获取本任务所直接或间接依赖的其他任务各自的首次执行时间和该其他任务各自的调度时间粒度;判断所述本任务的调度时间粒度与所述其他任务各自的调度时间粒度的关系,以及判断所述本任务的首次执行时间与其他任务的各自的首次执行时间的关系,以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述本任务的执行时间。

优选地,其中:所述获取本任务所依赖的其他任务的各首次执行时间的步骤包括根据所述其他任务各自的调度时间和当前时间计算其他任务的各自的首次执行时间。

优选地,所述方法还包括:在执行本任务前,判断所述本任务所依赖的其他任务是否分别执行成功的步骤。

优选地,其中:所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

优选地,所述方法还包括:将所计算的本任务的首次执行时间和本任务的调度时间粒度通知给依赖于本任务的其他任务的步骤。

根据本发明的第四个方面,提供一种可编程设备,包括存储器和处理器,其中,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行前述的方法。

根据本发明的第五方面,提供一种为在网络中的每个任务确定任务执行时间的方法,在所述网络中包括多个任务流水线,每个任务流水线包括起始节点任务和依赖于所述起始节点任务的一个或多个其他任务,所述任务流水线内的任务具有相同的调度时间和调度时间粒度,包括:

用于确定各个流水线内的任务之间的依赖关系,以及流水线之间的任务的依赖关系的步骤;

用于根据各流水线内任务的调度时间和当前时间计算流水线内任务的首次执行时间的步骤;

用于将所确定的流水线内任务的首次执行时间和流水线内任务的调度时间粒度分别逐级发送给直接或间接依赖于流水线内各个任务的其他流水线中的任务的步骤;

用于为每个任务,判断该任务的调度时间粒度和所获取的任务的调度时间粒度之间的关系、以及判断该任务的首次执行时间与所获取的任务的首次执行时间的关系的步骤;以及

用于以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述该任务的执行时间的步骤。

优选地,其中:所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

根据本发明的第六个方面,提供一种可编程设备,包括存储器和处理器,其中,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行前述的方法。

根据本发明的第七个方面,提供一种用于确定任务调度时间的设备,包括:

第一判断装置,用于判断第一任务与第二任务之间的依赖关系;

第二判断装置,用于当在所述第一判断装置确定第一任务依赖于第二任务时,判断所述第一任务与第二任务的调度时间粒度的关系,当所述第一任务的调度时间粒度不等于所述第二任务的调度时间粒度时将判断结果发送给调度装置,以及当所述第一任务的调度时间粒度等于所述第二任务的调度时间粒度时,判断所述第一任务与第二任务的首次调度时间的关系,并将判断结果发送给调度装置;

调度装置,用于当所述第一任务的调度时间粒度不等于所述第二任务的调度时间粒度时以所述第一任务与第二任务中调度时间粒度较粗者的调度时间调度所述第一任务,以及用于当所述第一任务的调度时间粒度等于所述第二任务的调度时间粒度时,以所述第一任务与第二任务中首次调度时间较晚者的调度时间调度所述第一任务。

优选地,所述设备还包括:

第三判断装置,用于在调度所述第一任务前,判断所述第二任务是否执行成功。

优选地,其中:所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

根据本发明的第八个方面,提供一种用于确定任务执行时间的设备,包括:

本任务信息获取装置,用于根据本任务的调度时间和当前时间计算本任务的首次执行时间;

依赖任务信息获取装置,用于获取本任务所直接或间接依赖的其他任务各自的首次执行时间和该其他任务各自的调度时间粒度;

判断装置,用于判断所述本任务的调度时间粒度与所述其他任务各自的调度时间粒度的关系,以及判断所述本任务的首次执行时间与其他任务的各自的首次执行时间的关系;

调度装置,用于以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述本任务的执行时间。

优选地,其中:依赖任务信息获取装置,用于根据所述其他任务各自的调度时间和当前时间计算其他任务的各自的首次执行时间。

优选地,所述设备还包括:用于判断在执行本任务前,所述本任务所依赖的其他任务是否分别执行成功的装置。

优选地,其中:所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

优选地,所述设备还包括:通知装置,用于将所计算的本任务的首次执行时间和本任务的调度时间粒度通知给依赖于本任务的其他任务。

根据本发明的第九个方面,提供一种为在网络中的每个任务确定任务执行时间的设备,在所述网络中包括多个任务流水线,每个任务流水线包括起始节点任务和依赖于所述起始节点任务的一个或多个其他任务,所述任务流水线内的任务具有相同的调度时间和调度时间粒度,包括:

用于确定各个流水线内的任务之间的依赖关系,以及流水线之间的任务的依赖关系的装置;

用于根据各流水线内任务的调度时间和当前时间计算流水线内任务的首次执行时间的装置;

用于将所确定的流水线内任务的首次执行时间和流水线内任务的调度时间粒度分别逐级发送给直接或间接依赖于流水线内各个任务的其他流水线中的任务的装置;

用于为每个任务,判断该任务的调度时间粒度和所获取的任务的调度时间粒度之间的关系、以及判断该任务的首次执行时间与所获取的任务的首次执行时间的关系的装置;以及

用于以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述该任务的执行时间的装置。

优选地,其中:所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

本发明的发明人发现,在现有技术中,尚未有技术方案能够解决针对任务调度、特别是crontab任务的调度中由于交叉依赖或者复杂依赖所导致的无法正确调度的缺陷。因此,本发明所要实现的技术任务或者所要解决的技术问题是本领域技术人员从未想到的或者没有预期到的,故本发明是一种新的技术方案。

另外,本领域技术人员应当理解,尽管现有技术中存在许多问题,但是,本发明的每个实施例或权利要求的技术方案可以仅在一个或几个方面进行改进,而不必同时解决现有技术中或者背景技术中列出的全部技术问题。本领域技术人员应当理解,对于一个权利要求中没有提到的内容不应当作为对于该权利要求的限制。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1示出了根据本发明第一实施例的用于确定任务调度时间的方法的流程图。

图2根据本发明的第二实施例的设备200的框图。

图3示出了根据本发明的第三实施例的设备200原理图。

图4是根据本发明的第四实施例的用于确定任务执行时间的方法的流程图。

图5是根据本发明的第五实施例的设备500的框图。

图6是根据本发明的第七实施例的用于为在网络中的每个任务确定任务执行时间的方法的流程图。

图7是根据本发明的第七实施例的流水线任务依赖关系图。

图8-10是根据本发明的第七实施例的网络流节点流水线任务依赖关系图。

图11是根据本发明的第八实施例的设备1100的框图。

图12是根据现有技术中任务依赖关系的例子的示意图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

<定义>

在详细描述本发明的实施例前,需要对根据本发明各实施例所使用的术语进行定义,所述定义适用于根据本发明的各实施例及附随的权利要求。

1.任务之间的依赖关系:是指不同任务之间的相互关系,举例来说如果任务b的执行和完成会影响到任务a的开始时间,那么任务a的调度就依赖于任务b的调度,也就是任务b为任务a所依赖的任务。

2.任务调度时间粒度:是指在单位调度时间内调度任务的数量。举例来说,在单位时间1天内,任务a的调度时间为每天8点,则任务a的调度时间粒度为1,任务b的调度时间为每个整点小时,则任务b的调度时间粒度为24。任务a的调度时间粒度(1次)比任务b的调度时间粒度(24次)更粗。

3.任务的首次调度时间:是指任务格式中所定义的任务的首次调度时间。

4.任务流水线:由多个任务组成的流程,并对该流水线中的任务设置相同的调度时间。

5.执行时间:是指任务启动时的具体时间,比如201509301500,即2015年9月30号15点00分执行任务。

6.直接依赖:是指不同任务之间存在的直接的、没有第三方任务介入的相互关系。举例来说如果任务b的执行和完成会直接影响到任务a的开始时间,那么任务a的调度就直接依赖于任务b的调度,也就是任务b为任务a所直接依赖的任务。

7.间接依赖:是指不同任务之间存在的间接的、存在一个或多个第三方任务介入的相互关系。举例来说如果任务b的执行和完成会直接影响到任务a的开始时间,任务c的执行和完成会直接影响到任务b的开始时间,那么任务a的调度就间接依赖于任务c的调度,也就是任务c为任务a所间接依赖的任务。

8.任务调度时间粒度的计算单位:是指以年、月、日、时或分为单位计算任务的调度时间粒度。

<实施例1>

图1示出了根据本发明的实施例的用于确定任务调度时间的方法的流程图。

如图1所示,方法在步骤S101开始。而后,在步骤102,判断第一任务与第二任务之间的依赖关系。需要说明的是,在本实施例和其他实施例中出现的第一任务、第二任务、任务a、任务b等等描述均为阐释方便而定义,不意在特指某个、某两个或某些任务,根据本发明的各种实施例,所述任务可以指代任意的任务。

在步骤S103,判定第一任务是否依赖于第二任务,如果第一任务不依赖于第二任务,则根据步骤S104按照第一任务的原始调度时间调度所述第一任务。如果在步骤S103,判定第一任务依赖于第二任务,那么就需要确定第一任务以何种机制进行调度。

在步骤S105,判断第一任务与第二任务的调度时间粒度的关系。如果在步骤S106,判定第一任务的调度时间粒度不等于第二任务的调度时间粒度,以所述第一任务与第二任务中调度时间粒度较粗者的调度时间调度所述第一任务。具体来说,进一步在步骤S107,判断第一任务的调度时间粒度是否粗于第二任务的调度时间粒度,如果第一任务的调度时间粒度更粗,则在步骤S108,以第一任务的原始调度时间调度所述第一任务;如果第二任务的调度时间粒度更粗,则在步骤S109,以第二任务的调度时间调度所述第一任务。

如果在步骤S106,判定第一任务的调度时间粒度等于第二任务的调度时间粒度,则在步骤S110判断第一任务与第二任务的首次调度时间的关系。如果在步骤S111,判定第一任务的首次调度时间早于第二任务的首次调度时间,则在步骤S113,以第二任务的调度时间调度所述第一任务。如果第一任务的首次调度时间不晚于第二任务,则在步骤S112,第一任务的原始调度时间调度所述第一任务。

优选地,所述方法还包括在调度所述第一任务前,判断所述第二任务是否执行成功的步骤。

更优选地,所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

以上已经结合附图描述了本发明的第一实施例,根据本实施例可以将复杂的依赖关系通过所述调度机制,使任务调度变得简单、可行、正确、高效。

<例子1>

根据本发明第一实施例的具体实例将在下面进行描述,在存在依赖关系的两个任务之间,确定任务调度机制时遵循粗粒度任务优先级高于细粒度任务优先级,粒度相同的任务第一个调度时间越晚优先级越高的原则。

以crontab任务调度为例,调度时间是:10****的任务a其天粒度是24,即每个小时10分执行一次任务,调度时间是:01***的任务b,其天粒度是1,即每天1:00执行一次。

如果任务b依赖任务a,那么任务b的调度时间需要在10****和01***之间选择,根据本发明第一实施例的方法,任务b的调度时间粒度是1比任务a的调度时间粒度24更粗,所以任务b的调度时间选择01***,即任务b在检查到任务a前一天24个任务执行成功后,任务b才调度。

如果任务a依赖于任务b,根据本发明第一实施例的方法,任务a和任务b的调度时间都是01***,即任务b执行成功后,就立即调度任务a,即任务a的原始调度时间无效。

<例子2>

例子2为更复杂的时间调度,任务a:0,10,20,30,40,5010,20***,任务b:0,3010,15,20***,任务a的粒度为12,而任务b的粒度为6,两者本不相同,但在本例中,以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。即以小时级别计算粒度,分钟级别不参与粒度计算,因此,任务a的粒度为2、任务b的粒度为3,如果任务b依赖于任务a,根据本发明第一实施例的方法,任务b的调度时间将采用任务a的调度时间,即0,10,20,30,40,5010,20***,任务a不变。

<例子3>

在例子3中,如果任务a调度时间是:10,208,10***,任务b调度时间是:10,209,12***,两个的调度时间的粒度是相同的。

如果任务a依赖于任务b,根据本发明第一实施例的方法,以所述任务a与任务b中首次调度时间较晚者的调度时间调度任务a,任务a的第一个调度时间是8:10,而任务b的是9:10,则a和b的调度时间都是10,209,12***。

如果任务b依赖于任务a,根据本发明第一实施例的方法,任务a,b调度时间不变,且任务b在9:10执行的时候需要检查a在8:10的任务是否执行成功。

<实施例2>

以下将根据附图描述本发明的第二实施例,本实施例与第一实施例相同或类似的部分下文将不再赘述。图2显示了可以用于实现本发明的设备200,设备可以是网络服务器、电脑主机等。如图2所示,所述设备200包括:第一判断装置201,用于判断第一任务与第二任务之间的依赖关系;第二判断装置202,用于当在所述第一判断装置201确定第一任务依赖于第二任务时,判断所述第一任务与第二任务的调度时间粒度的关系,当所述第一任务的调度时间粒度不等于所述第二任务的调度时间粒度时将判断结果发送给调度装置203,以及当所述第一任务的调度时间粒度等于所述第二任务的调度时间粒度时,判断所述第一任务与第二任务的首次调度时间的关系,并将判断结果发送给调度装置203;

调度装置203,用于当所述第一任务的调度时间粒度不等于所述第二任务的调度时间粒度时以所述第一任务与第二任务中调度时间粒度较粗者的调度时间调度所述第一任务,以及用于当所述第一任务的调度时间粒度等于所述第二任务的调度时间粒度时,以所述第一任务与第二任务中首次调度时间较晚者的调度时间调度所述第一任务。

优选地,所述设备200还包括第三判断装置202,用于在调度所述第一任务前,判断所述第二任务是否执行成功。

<实施例3>

根据本发明的第三实施例,还提供一种可编程设备,包括存储器和处理器,其中,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行图1所述的方法。本领域技术人员应当理解,本领域技术人员应当明白,在电子技术领域,在公开了本发明的方案的基础上,可以很容易地根据需要使用软件、硬件和/或软件和硬件的组合来实现所述方案。例如,可以通过指令配置处理器来实现各个单元。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现各个单元。例如,可以将各个单元固化到专用器件(例如ASIC)中。可以将各个单元分成相互独立的单元,或者可以将它们合并在一起实现。所述单元可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。

在一个更加具体的例子中,图3是显示可用于实现本发明的实施例的电子设备200的配置的例子的框图。

电子设备200例如可以是网络服务器、电脑主机等。

如图3所示,电子设备200可以包括处理器2010、存储器2020、接口装置2030、通信装置2040、显示装置2050、输入装置2060、扬声器2070、麦克风2080,等等。

处理器2010例如可以是中央处理器CPU、微处理器MCU等。存储器2020例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2030例如包括USB接口、耳机接口等。

通信装置2040例如能够与非接触式供电的可编程设备进行通信,例如,是能支持近场通信的装置。通信装2040还能够进行有有线或无线通信。

显示装置2050例如是液晶显示屏。输入装置2060例如可以包括触摸屏、键盘等。用户可以通过扬声器2070和麦克风2080输入/输出语音信息。

图3所示的电子设备仅是解释性的,并且决不是为了要限制本发明、其应用或用途。

在这个实施例中,所述存储器2020用于存储指令,所述指令用于控制所述处理器2010进行操作以执行图1所示的方法。本领域技术人员应当理解,尽管在图3中示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,处理器2010和存储装置2020等。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行槽,这是本领域公知,故在此不再详细描述。

<实施例4>

在第一实施例中阐释了在具有依赖关系的第一任务与第二任务间确定任务调度时间的方法,根据本发明的第四实施例中,将针对如何确定具有交叉或复杂依赖关系的多个任务的调度时间进行阐释。如图4所示,提供一种用于确定任务执行时间的方法,包括:

步骤S401,根据本任务的调度时间和当前时间计算本任务的首次执行时间;

步骤S402,获取本任务所直接或间接依赖的其他任务各自的首次执行时间和该其他任务各自的调度时间粒度;

步骤S403,判断所述本任务的调度时间粒度与所述其他任务各自的调度时间粒度的关系,以及判断所述本任务的首次执行时间与其他任务的各自的首次执行时间的关系;

步骤S404,以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述本任务的执行时间。

优选地,其中:所述获取本任务所依赖的其他任务的各首次执行时间的步骤包括根据所述其他任务各自的调度时间和当前时间计算其他任务的各自的首次执行时间。

优选地,所述方法还包括在执行本任务前,判断所述本任务所依赖的其他任务是否分别执行成功的步骤。

优选地,所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

以及,优选地,所述方法还包括:将所计算的本任务的首次执行时间和本任务的调度时间粒度通知给依赖于本任务的其他任务的步骤。

<实施例5>

以下将根据附图描述本发明的第五实施例,本实施例与第四实施例相同或类似的部分下文将不再赘述。图5显示了可以用于实现本发明的设备500,设备可以是网络服务器、电脑主机等。如图5所示,所述设备500包括:本任务信息获取装置501,用于根据本任务的调度时间和当前时间计算本任务的首次执行时间;

依赖任务信息获取装置502,用于获取本任务所直接或间接依赖的其他任务各自的首次执行时间和该其他任务各自的调度时间粒度;

判断装置503,用于判断所述本任务的调度时间粒度与所述其他任务各自的调度时间粒度的关系,以及判断所述本任务的首次执行时间与其他任务的各自的首次执行时间的关系;

调度装置504,用于以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述本任务的执行时间。

优选地,其中所述依赖任务信息获取装置502,用于根据所述其他任务各自的调度时间和当前时间计算其他任务的各自的首次执行时间。

优选地,所述设备500还包括用于判断在执行本任务前,所述本任务所依赖的其他任务是否分别执行成功的装置。

更优选地,所述调度时间粒度根据任务以年、月、日、小时或分钟为任务调度时间粒度的计算单位,仅以该任务中存在的最粗粒度的计算单位上的任务调度次数作为该任务的调度时间粒度。

更优选地,所述设备500还包括通知装置505,用于将所计算的本任务的首次执行时间和本任务的调度时间粒度通知给依赖于本任务的其他任务。

<实施例6>

与第三实施例类似第,根据本发明的第六实施例,还提供一种可编程设备,包括存储器和处理器,其中,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行图4所述的方法。本领域技术人员应当理解,本领域技术人员应当明白,在电子技术领域,在公开了本发明的方案的基础上,可以很容易地根据需要使用软件、硬件和/或软件和硬件的组合来实现所述方案。例如,可以通过指令配置处理器来实现各个单元。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现各个单元。例如,可以将各个单元固化到专用器件(例如ASIC)中。可以将各个单元分成相互独立的单元,或者可以将它们合并在一起实现。所述单元可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。

<实施例7>

根据本发明的第七实施例,如图6所示,提供一种为在网络中的每个任务确定任务执行时间的方法,在所述网络中包括多个任务流水线,每个任务流水线包括起始节点任务和依赖于所述起始节点任务的一个或多个其他任务,所述任务流水线内的任务具有相同的调度时间和调度时间粒度,网络需要解决的问题是,根据当前时间,确认每一个任务的正确执行时间。根据本实施例的方法:从每一个有调度时间的流水线的起始节点任务开始,用调度时间根据当前时间产生的执行时间为数据流,均匀的流向其所有下游依赖节点。包括如下步骤:

S601,确定各个流水线内的任务之间的依赖关系,以及流水线之间的任务的依赖关系;

S602,根据各流水线内任务的调度时间和当前时间计算流水线内任务的首次执行时间;

S603,将所确定的流水线内任务的首次执行时间和流水线内任务的调度时间粒度分别逐级发送给直接或间接依赖于流水线内各个任务的其他流水线中的任务;

S604,为每个任务,判断该任务的调度时间粒度和所获取的任务的调度时间粒度之间的关系、以及判断该任务的首次执行时间与所获取的任务的首次执行时间的关系;

S605,以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述该任务的执行时间。

<例子4>

根据本发明第七实施例的具体实例将在下面进行描述,图7示出了流水线pipeline 4、2和1及其中的任务之间的依赖关系。

流水线Pipeline 4中包括三个任务Task 1、2和3,流水线Pipeline 4的调度时间是0****。任务Task2、3依赖于任务Task1。

流水线Pipeline 2中包括三个任务Task 7、8和9,流水线Pipeline 2的调度时间是12***。任务Task8、9依赖于任务Task7、任务Task7依赖于流水线Pipeline 4中的Task3以及任务Task9依赖于流水线Pipeline 1中的Task6。

流水线Pipeline 1中包括三个任务Task 4、5和6,流水线Pipeline 1的调度时间是11***。任务Task5、6依赖于任务Task4、任务Task6依赖于流水线Pipeline 2中的Task8。

假定当前时间:2015-09-3002:10:09

第一步,如图8所示,以Task1为网络流起始点,调度时间是0****,根据当前时间产生执行时间run_time:201509300200,以Task1为流源,流向其所有下游节点:

第二步,如图9所示,以Task7为网络流起始点,调度时间是12***,根据当前时间产生执行时间run_time:201509300201,以Task7为流源,流向其所有下游节点:

第三部,如图10所示,以Task4为网络流起始点,调度时间是11***,根据当前时间产生执行时间run_time:201509300101,以Task4为流源,流向其所有下游节点:

通过三个独立网络中的流水线,可以获得每一个Task流过的执行时间列表:

Task1:201509300200(粒度24)

Task2:201509300200(粒度24)

Task3:201509300200(粒度24)

Task4:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)

Task5:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)

Task6:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)

Task7:201509300200(粒度24),201509300201(粒度1)

Task8:201509300200(粒度24),201509300201(粒度1)

Task9:201509300200(粒度24),201509300101(粒度1),201509300201(粒度1)

Task1,Task2,Task3的执行时间只有一个,则无需根据规则选择正确执行时间。Task4,Task5,Task6,Task7,Task8,Task9根据图6所述的方法所述粗粒度任务优先级高于细粒度,粒度相同则第一个调度时间越大优先级越高,这些任务选择执行时间是201509300201。

<实施例8>

以下将根据附图描述本发明的第八实施例,本实施例与第七实施例相同或类似的部分下文将不再赘述。根据本发明的第八实施例,如图11所示,提供一种为在网络中的每个任务确定任务执行时间的设备1100,在所述网络中包括多个任务流水线,每个任务流水线包括起始节点任务和依赖于所述起始节点任务的一个或多个其他任务,所述任务流水线内的任务具有相同的调度时间和调度时间粒度,包括:

用于确定各个流水线内的任务之间的依赖关系,以及流水线之间的任务的依赖关系的装置1101;

用于根据各流水线内任务的调度时间和当前时间计算流水线内任务的首次执行时间的装置1102;

用于将所确定的流水线内任务的首次执行时间和流水线内任务的调度时间粒度分别逐级发送给直接或间接依赖于流水线内各个任务的其他流水线中的任务的装置1103;

用于为每个任务,判断该任务的调度时间粒度和所获取的任务的调度时间粒度之间的关系、以及判断该任务的首次执行时间与所获取的任务的首次执行时间的关系的装置1104;以及

用于以调度时间粒度最粗的任务中首次执行时间最晚的任务的首次执行时间作为所述该任务的执行时间的装置1105。

本领域技术人员应当明白,在电子技术领域,在公开了本发明的方案的基础上,可以很容易地根据需要使用软件、硬件和/或软件和硬件的组合来实现所述方案。而且,在网络环境中,虽然本实施例披露的为在网络中的每个任务确定任务执行时间的设备,但是应当理解,本实施例的设备可以不必须地表现为一台具体的设备,其可以是在网络中分布的不同步骤或不同装置,由网络中的不同节点来协同配合或共同执行的软件、硬件和/或软件和硬件的组合。

<实施例9>

与第三实施例类似地,根据本发明的第九实施例,还提供一种可编程设备,包括存储器和处理器,其中,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行图6所述的方法。本领域技术人员应当理解,本领域技术人员应当明白,在电子技术领域,在公开了本发明的方案的基础上,可以很容易地根据需要使用软件、硬件和/或软件和硬件的组合来实现所述方案。例如,可以通过指令配置处理器来实现各个单元。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现各个单元。例如,可以将各个单元固化到专用器件(例如ASIC)中。可以将各个单元分成相互独立的单元,或者可以将它们合并在一起实现。所述单元可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。

通过本发明各实施例的方法和设备,可以解决分布式调度系统的核心调度问题,让复杂的依赖关系通过调度,变得简单、可行、高效而且正确。

本发明的设备和方法可以通过程序产品体现。程序产品可以包括可读存储介质,其上载有用于使处理器实现本发明的各个方面的可读程序指令。

可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。可读存储介质的更具体的例子(非穷举的列表)包括:便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的可读程序指令可以从可读存储介质下载到各个电子设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部电子设备或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个电子设备中的网络适配卡或者网络接口从网络接收可读程序指令,并转发该可读程序指令,以供存储在各个计算/处理设备中的可读存储介质中。

用于执行本发明操作的程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。可读程序指令可以完全地在用户电子设备上执行、部分地在用户电子设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、设备的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由可读程序指令实现。

这些可读程序指令可以提供给电子设备的处理器,从而生产出一种机器,使得这些指令在通过电子设备的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些可读程序指令存储在可读存储介质中,这些指令使得电子设备以特定方式工作,从而,存储有指令的可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把可读程序指令加载到电子设备上,使得在电子设备上执行一系列操作步骤,以产生指令实现的过程,从而使得在电子设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的装置和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号