CN110858158B - 分布式任务调度方法、装置、电子设备、存储介质 - Google Patents

分布式任务调度方法、装置、电子设备、存储介质 Download PDF

Info

Publication number
CN110858158B
CN110858158B CN201810970188.0A CN201810970188A CN110858158B CN 110858158 B CN110858158 B CN 110858158B CN 201810970188 A CN201810970188 A CN 201810970188A CN 110858158 B CN110858158 B CN 110858158B
Authority
CN
China
Prior art keywords
task
execution
current
distributed
chain
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.)
Active
Application number
CN201810970188.0A
Other languages
English (en)
Other versions
CN110858158A (zh
Inventor
陈东伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN201810970188.0A priority Critical patent/CN110858158B/zh
Publication of CN110858158A publication Critical patent/CN110858158A/zh
Application granted granted Critical
Publication of CN110858158B publication Critical patent/CN110858158B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

本发明提供一种分布式任务调度方法、装置、电子设备、存储介质,分布式任务调度方法包括:根据任务链条中各任务的依赖关系的顺序,对所述任务链条的每个任务:根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行;以及在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态。本发明提供的方法及装置可以提高任务执行效率。

Description

分布式任务调度方法、装置、电子设备、存储介质
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种分布式任务调度方法、装置、电子设备、存储介质。
背景技术
目前,各个系统的后台都会有具有处理相应任务的工作机,通常每个工作机都是独立的,相互之间没有依赖关系。对于具有简单的依赖的工作机,通常会由一个工作机调度来实现。
目前通用单机的方案是使用spring(开放源代码的设计层面框架)scheduler(调度程序)或者quartz(实现定时任务的开源项目)定时执行工作机,且并不支持复杂任务调度。
然而,在各系统的具体实现中,通常需要工作机处理多个任务,且多个任务之间会有复杂的依赖关系。现有的任务处理方式会预估各任务的执行时间,若当前任务所依赖的任务已经执行到预估执行时间时,预估当前任务的执行时间,并执行当前任务。这样的实现方式会使整个任务链条的执行时间很长,或者是当前任务未执行完,依赖当前任务的下一个任务就执行了,由此,导致生产事故。同时,这样的实现方式,配置复杂而且需要经常查看任务执行时长,再次去调整各个任务的时间,耗时费力,无法保证真正的正确按照流程执行。
发明内容
本发明为了克服上述相关技术存在的缺陷,提供一种分布式任务调度方法、装置、电子设备、存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本发明的一个方面,提供一种分布式任务调度方法,应用于包括多个工作机的分布式任务执行系统,所述分布式任务调度方法包括:
根据任务链条中各任务的依赖关系的顺序,对所述任务链条的每个任务:
根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行;以及
在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态。
可选地,在执行所述任务链条中的任务之前,还包括:
获取所述任务链条中各任务的依赖关系,其中,所述任务链条中各任务的观察状态设置预设为不允许被观察;
设置所述任务链条的起始任务的观察状态为允许被观察。
可选地,所述获取任务链条中各任务的依赖关系的步骤,由抢占到所述任务链条的分布式初始化锁的工作机执行。
可选地,所述根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行的步骤包括:
若当前任务的观察状态为允许被观察,且当前任务依赖的所有任务被执行完成时,则将当前任务下发至任务数据库;
自任务数据库表抢占到当前任务对应的分布式任务锁的工作机,根据任务数据库中储存的当前任务的任务配置信息执行当前任务。
可选地,自任务数据库表抢占到依赖同一任务的不同任务对应的分布式任务锁的多个工作机并行执行。
可选地,所述任务数据库储存有任务流程表,所述任务流程表至少储存各任务的任务标识、执行状态、观察状态。
可选地,所述将当前任务下发至任务数据库的步骤,由抢占到当前任务的任务分发锁的工作机执行;
抢占到当前任务的任务分发锁的工作机还监控当前任务的执行状态,并将当前任务的执行状态更新至所述任务流程表中以供当前任务的执行状态被观察。
可选地,所述任务流程表还储存各任务所在的任务链条中的版本号,所述版本号随所述任务链条的执行次数而更新。
可选地,若当前任务执行超时,则更新当前任务所在任务链条的版本号,并重新执行所述任务链条。
可选地,所述根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行的步骤之后,且所述在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态的步骤之前,还包括:
观察所述工作机执行当前任务的执行状态。
可选地,所述观察所述工作机执行当前任务的执行状态的步骤,由抢占到当前任务的执行状态观察锁的工作机执行。
根据本发明又一方面,还提供一种分布式任务调度装置,应用于包括多个工作机的分布式任务执行系统,所述分布式任务调度装置包括:
第一触发模块,用于根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行;
第二触发模块,用于在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态。
根据本发明的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
根据本发明的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
相比现有技术,本发明的优势在于:
按任务链条的依赖关系通过观察状态和执行状态触发状态的执行,由此,实现复杂依赖关系任务的调度和执行。一方面,由观察结果触发下一步操作,无需预估任务执行时间,减少多余的时间等待和由于预估时间不准导致的生产事故;另一方面,由于观察结果触发下一步操作,无需维护经常查看任务执行时长,并调整各个任务的时间,减少人力成本。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的分布式任务调度方法的流程图。
图2示出了根据本发明具体实施例的分布式任务调度方法的流程图。
图3示出了根据本发明实施例的任务链条的示意图。
图4示出了根据本发明实施例的分布式任务调度装置的框图。
图5示意性示出本发明示例性实施例中一种计算机可读存储介质示意图。
图6示意性示出本发明示例性实施例中一种电子设备示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此,实际执行的顺序有可能根据实际情况改变。
图1示出了根据本发明实施例的分布式任务调度方法的流程图。本发明提供的分布式任务调度方法应用于包括多个工作机的分布式任务执行系统。参考图1,所述的分布式任务调度方法根据任务链条中各任务的依赖关系的顺序,对所述任务链条的每个任务执行如下步骤:
步骤S110:根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行;以及
步骤S120:在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态。
在本发明的示例性实施方式的分布式任务调度方法中,按任务链条的依赖关系通过观察状态和执行状态触发状态的执行,由此,实现复杂依赖关系任务的调度和执行。一方面,由观察结果触发下一步操作,无需预估任务执行时间,减少多余的时间等待和由于预估时间不准导致的生产事故;另一方面,由于观察结果触发下一步操作,无需维护经常查看任务执行时长,并调整各个任务的时间,减少人力成本。
下面结合图2描述本发明提供的分布式任务调度方法的一个具体实现方式。图2共示出如下步骤:
步骤S201:获取任务链条中各任务的依赖关系,其中,所述任务链条中各任务的观察状态设置预设为不允许被观察。
步骤S203:设置所述任务链条的起始任务的观察状态为允许被观察。
步骤S205:将起始任务作为当前任务。
步骤S207:判断当前任务的观察状态是否为允许被观察。若步骤S207判断为否则再次执行步骤S207;若步骤S207判断为是,则继续执行步骤S209。
步骤S209:判断当前任务所依赖的所有任务是否被执行完成。若步骤S209判断为否则再次执行步骤S209;若步骤S211判断为是,则继续执行步骤S211。
步骤S211:将当前任务下发至任务数据库。
步骤S213:自任务数据库表抢占到当前任务对应的分布式任务锁的工作机,根据任务数据库中储存的当前任务的任务配置信息执行当前任务。
步骤S215:观察所述工作机执行当前任务的执行状态。
步骤S217:判断当前任务是否执行完成。若步骤S217判断为否则再次执行步骤S215;若步骤S217判断为是,则继续执行步骤S219。
步骤S219:触发设置依赖当前任务的所有任务的观察状态设置为允许被观察。
步骤S221:判断任务链条中所有任务是否均执行完成。若步骤S221判断为是,则流程结束;若步骤S221判断为否则继续执行步骤S223。
步骤S223:将依赖当前任务的下一任务作为当前任务。步骤S223之后重复执行步骤S207之步骤S221。
以上仅仅是示意性地描述本发明的一个实施例,步骤的顺序并非以此为限。
在上述实施例的各个变化例中,自任务数据库表抢占到依赖同一任务的不同任务对应的分布式任务锁的多个工作机可以并行执行。由此,可以充分利用分布式任务执行系统的多个工作机,进而可以加快整个任务链条的执行效率,同时,执行顺序由依赖关系确定,防止执行顺序出错。
在上述实施例的各个变化例中,所述任务数据库可以储存有任务流程表,所述任务流程表至少储存各任务的任务标识、执行状态、观察状态。任务标识用于标识不同的任务。在一些实施例中,任务标识也可以标识不同类型的任务,且在同一任务链条中,同一类型的任务的数量最多为1个。任务的执行状态可以包括待执行、执行中、执行成功、执行失败等。任务的观察状态可以包括允许被观察和不允许被观察。默认情况下,各任务的观察状态为不允许被观察。若任务的观察状态为允许被观察,即表示任务的执行状态可允许被获知。所述任务流程表的表项并非以此为限。所述任务流程表的表项例如还可以包括任务执行日期、任务所在任务链条的版本号、执行任务的工作机的ip地址、任务的执行开始时间、任务的执行结束时间、任务是否有效(可不执行无效任务)中的一项或多项,本发明并非以此为限。具体而言,所述的任务链条的版本号随所述任务链条的执行次数而更新。在一些具体实施例中,若当前任务执行超时,则更新当前任务所在任务链条的版本号(例如,可以删除执行超时的任务所在任务链条的执行数据和版本号),并重新执行所述任务链条。
上述步骤S201获取任务链条中各任务的依赖关系及步骤S203设置所述任务链条的起始任务的观察状态为允许被观察,可由抢占到所述任务链条的分布式初始化锁的工作机执行。抢占到所述任务链条的分布式初始化锁的工作机执行相当于执行初始化任务链条的步骤。在初始化任务链条的步骤中,还可以将任务链条所有任务的执行状态设置为待执行。上述步骤S201可经由定时设置触发,或经由事件触发。
进一步地,在一些具体实施例中,上述步骤S201获取任务链条中各任务的依赖关系后,还可以设置各任务的配置信息。各任务的配置信息可以包括所依赖任务集合(该任务的父任务的集合)和被依赖任务集合(该任务的子任务的集合)。后序可步骤可以根据配置信息确定当前任务的依赖关系。各任务的配置信息可以通过spring来实现,设置配置信息的统一API(Application Programming Interface,应用程序编程接口)接口,方便统一调用。此处所述的配置信息不同于前述的任务配置信息,此处所述的配置信息仅描述各任务的依赖关系。此处所述的配置信息中的所依赖任务集合可用于检测所依赖任务是否都已完成;此处所述的配置信息中的被依赖任务集合可用于触发下一步被依赖任务的调度。
上述步骤S211将当前任务下发至任务数据库可以由抢占到当前任务的任务分发锁的工作机执行。抢占到当前任务的任务分发锁的工作机还监控当前任务的执行状态,并将当前任务的执行状态更新至所述任务流程表中以供当前任务的执行状态被观察。
具体而言,在步骤S211中,为了防止执行错误,步骤S209由抢占到当前任务的任务分发锁的工作机执行,即抢占到当前任务的任务分发锁的工作机还可以根据前述的配置信息检测当前任务所依赖的所有任务(当前任务的父任务)是否都已完成,如果完成则可以配置具体任务分发服务及任务监控服务。任务监控服务可以通过队列的方式实现。由抢占到当前任务的任务分发锁的工作机可以支持最大执行时间超时报警。在当前任务执行前,由抢占到当前任务的任务分发锁的工作机还需要生成任务job并下发到相应任务数据库中。对应地,在步骤S213中,各工作机定时扫描任务数据库中的任务job,当一工作机自任务数据库表抢占到当前任务对应的分布式任务锁时,由该工作机执行任务并更新执行状态为执行成功或者执行失败。进一步地,步骤S213可以通过一套统一的api接口,可以快速接入新流程的工作机或者把已经存在的工作机改造为任务流执行。
上述步骤S215观察所述工作机执行当前任务的执行状态及上述步骤S219触发设置依赖当前任务的所有任务的观察状态设置为允许被观察,可以由抢占到当前任务的执行状态观察锁的工作机执行。
具体而言,抢占到当前任务的执行状态观察锁的工作机可以按照日期扫描任务流程表(在一些具体实施例中,可以按照版本号降序排列),观察计算同步状态表状态变化,通知需要知道改变化的对象。获取到当然任务的工作,负责当前任务流调度,可以启用多线程监听并发任务执行结果。进一步地,步骤S219相当于触发设置依赖当前任务的所有任务的观察状态从不允许被观察设置为允许被观察。
在上述实施例的一些变化例中,还可以在任务链条开始执行后,开始监控任务流程的执行情况,通过扫描最新版本的任务流程数据,展示任务执行进度,开始时间,结束时间信息,使任务执行进度可视化,方便运营处理。
在本发明上述的各个实施例中,分布式任务锁、分布式初始化锁、任务分发锁及执行状态观察锁可以是一标志位,用于使其所对应的线程仅有一个工作机/设备来执行。
在本发明上述的各个实施例中,各步骤可由分布式任务执行系统的工作机来执行,由此进一步提高任务调度和执行的效率,减少硬件成本。
具体而言,本发明提供的分布式任务调度方法,使得所有需要工作机按照依赖顺序流程执行的场景可以快速解决,降低开发维护难度。在任务流场景下不再需要设置多个任务的执行时间,任务依次顺序执行,节省了整体任务执行耗时,并提供可视化等运维监控手段。在实际应用过程中,可以把多个任务依赖流程整体执行时长从6小时降低为3个小时,效果明显。
应当注意,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
下面结合图3描述本发明的一个具体实施例,图3示出了根据本发明实施例的任务链条的示意图。
首先获取图3所示的任务链条的依赖关系,任务A为起始任务,任务B、任务C及任务D依赖任务A,任务E依赖任务B和任务C,任务F依赖任务E和任务D。然后初始化,设置任务A的观察状态为允许被观察,并设置任务链条中所有任务的执行状态为待执行。
从任务A开始,当任务A的观察状态为允许被观察时,确定任务A没有依赖的任务,下发并执行任务A,当观察到任务A执行完成时,设置依赖任务A的任务B、任务C及任务D的观察状态为允许被观察。任务B(任务C及任务D类似)的观察状态为允许被观察时,确定任务B所依赖的任务A执行完成,下发并执行任务B,当观察到任务B执行完成时,设置依赖任务B的任务E的观察状态为允许被观察。任务C和任务D按类似的步骤处理,任务B、任务C和任务D可由不同的工作机并行执行。任务E的观察状态为允许被观察时,确定任务E所依赖的任务B和任务C执行完成,下发并执行任务C,当观察到任务E执行完成时,设置依赖任务E的任务F的观察状态为允许被观察。任务F的观察状态为允许被观察时,确定任务F所依赖的任务E和任务D执行完成,下发并执行任务F,当观察到任务F执行完成时,任务链条执行完成。
以上仅仅是本发明的一个具体实施例,本发明并非以此为限。
下面结合图4描述本发明提供的分布式任务调度装置。分布式任务调度装置应用于包括多个工作机的分布式任务执行系统。图4示出了根据本发明实施例的分布式任务调度装置的框图。分布式任务调度装置400包括第一触发模块410及第二触发模块420。
第一触发模块410用于根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行。
第二触发模块420用于在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态。
在本发明的示例性实施方式的分布式任务调度装置中,按任务链条的依赖关系通过观察状态和执行状态触发状态的执行,由此,实现复杂依赖关系任务的调度和执行。一方面,由观察结果触发下一步操作,无需预估任务执行时间,减少多余的时间等待和由于预估时间不准导致的生产事故;另一方面,由于观察结果触发下一步操作,无需维护经常查看任务执行时长,并调整各个任务的时间,减少人力成本。
在本发明上述的各个实施例中,各模块可由分布式任务执行系统的工作机来执行,由此进一步提高任务调度和执行的效率,减少硬件成本。
图4仅仅是示意性的示出本发明提供的分布式任务调度装置,在不违背本发明构思的前提下,模块的拆分、合并、增加都在本发明的保护范围之内。
在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述电子处方流转处理方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图5所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品500,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本发明的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述电子处方流转处理方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1或2所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明实施方式的上述电子处方流转处理方法。
相比现有技术,本发明的优势在于:
按任务链条的依赖关系通过观察状态和执行状态触发状态的执行,由此,实现复杂依赖关系任务的调度和执行。一方面,由观察结果触发下一步操作,无需预估任务执行时间,减少多余的时间等待和由于预估时间不准导致的生产事故;另一方面,由于观察结果触发下一步操作,无需维护经常查看任务执行时长,并调整各个任务的时间,减少人力成本。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。

Claims (13)

1.一种分布式任务调度方法,其特征在于,应用于包括多个工作机的分布式任务执行系统,所述分布式任务调度方法包括:
获取任务链条中各任务的依赖关系,其中,任务的观察状态包括允许被观察和不允许被观察,所述任务链条中各任务的观察状态预设为不允许被观察;
设置所述任务链条的起始任务的观察状态为允许被观察,以使所述起始任务的执行状态可允许被获知;
根据所述任务链条中各任务的依赖关系的顺序,对所述任务链条的每个任务执行如下步骤:
根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行;以及
在当前任务执行完成时,触发变更依赖当前任务的所有任务的观察状态为允许被观察。
2.如权利要求1所述的分布式任务调度方法,其特征在于,
所述获取任务链条中各任务的依赖关系的步骤,由抢占到所述任务链条的分布式初始化锁的工作机执行。
3.如权利要求1所述的分布式任务调度方法,其特征在于,所述根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行的步骤包括:
若当前任务的观察状态为允许被观察,且当前任务依赖的所有任务被执行完成时,则将当前任务下发至任务数据库;
自任务数据库表抢占到当前任务对应的分布式任务锁的工作机,根据任务数据库中储存的当前任务的任务配置信息执行当前任务。
4.如权利要求3所述的分布式任务调度方法,其特征在于,自任务数据库表抢占到依赖同一任务的不同任务对应的分布式任务锁的多个工作机并行执行。
5.如权利要求3所述的分布式任务调度方法,其特征在于,所述任务数据库储存有任务流程表,所述任务流程表至少储存各任务的任务标识、执行状态、观察状态。
6.如权利要求5所述的分布式任务调度方法,其特征在于,
所述将当前任务下发至任务数据库的步骤,由抢占到当前任务的任务分发锁的工作机执行;
抢占到当前任务的任务分发锁的工作机还监控当前任务的执行状态,并将当前任务的执行状态更新至所述任务流程表中以供当前任务的执行状态被观察。
7.如权利要求5所述的分布式任务调度方法,其特征在于,所述任务流程表还储存各任务所在的任务链条中的版本号,所述版本号随所述任务链条的执行次数而更新。
8.如权利要求7所述的分布式任务调度方法,其特征在于,若当前任务执行超时,则更新当前任务所在任务链条的版本号,并重新执行所述任务链条。
9.如权利要求1所述的分布式任务调度方法,其特征在于,所述根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行的步骤之后,且所述在当前任务执行完成时触发变更依赖当前任务的所有任务的观察状态的步骤之前,还包括:
观察所述工作机执行当前任务的执行状态。
10.如权利要求9所述的分布式任务调度方法,其特征在于,
所述观察所述工作机执行当前任务的执行状态的步骤,由抢占到当前任务的执行状态观察锁的工作机执行。
11.一种分布式任务调度装置,其特征在于,应用于包括多个工作机的分布式任务执行系统,所述分布式任务调度装置包括用于实现如下步骤的模块:
获取任务链条中各任务的依赖关系,其中,任务的观察状态包括允许被观察和不允许被观察,所述任务链条中各任务的观察状态预设为不允许被观察;
设置所述任务链条的起始任务的观察状态为允许被观察,以使所述起始任务的执行状态可允许被获知;
所述分布式任务调度装置还包括用于根据所述任务链条中各任务的依赖关系的顺序,对所述任务链条的每个任务执行相应的步骤的如下模块:
第一触发模块,用于根据当前任务的观察状态及当前任务所依赖的所有任务的执行状态触发当前任务的执行;以及
第二触发模块,用于在当前任务执行完成时,触发变更依赖当前任务的所有任务的观察状态为允许被观察。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储器,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如权利要求1至10任一项所述的步骤。
13.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至10任一项所述的步骤。
CN201810970188.0A 2018-08-23 2018-08-23 分布式任务调度方法、装置、电子设备、存储介质 Active CN110858158B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810970188.0A CN110858158B (zh) 2018-08-23 2018-08-23 分布式任务调度方法、装置、电子设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810970188.0A CN110858158B (zh) 2018-08-23 2018-08-23 分布式任务调度方法、装置、电子设备、存储介质

Publications (2)

Publication Number Publication Date
CN110858158A CN110858158A (zh) 2020-03-03
CN110858158B true CN110858158B (zh) 2024-04-05

Family

ID=69636321

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810970188.0A Active CN110858158B (zh) 2018-08-23 2018-08-23 分布式任务调度方法、装置、电子设备、存储介质

Country Status (1)

Country Link
CN (1) CN110858158B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111950988B (zh) * 2020-08-18 2022-03-29 北京字节跳动网络技术有限公司 分布式工作流调度方法、装置、存储介质及电子设备
CN111984390A (zh) * 2020-08-31 2020-11-24 平安医疗健康管理股份有限公司 任务调度方法、装置、设备及存储介质
CN112418588B (zh) * 2020-09-03 2023-08-01 上海哔哩哔哩科技有限公司 任务流显示方法及装置
CN112948068B (zh) * 2020-09-16 2024-03-12 深圳市明源云科技有限公司 任务调度方法、装置及电子设备
CN112286661B (zh) * 2020-10-30 2021-10-15 海通证券股份有限公司 任务调度方法及装置、存储介质、终端
CN112559143A (zh) * 2020-12-04 2021-03-26 海南车智易通信息技术有限公司 任务调度方法、系统及计算设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789258B1 (en) * 2000-05-11 2004-09-07 Sun Microsystems, Inc. System and method for performing a synchronization operation for multiple devices in a computer system
CN107016479A (zh) * 2016-01-28 2017-08-04 五八同城信息技术有限公司 任务调度管理方法、装置及系统
CN108228345A (zh) * 2016-12-09 2018-06-29 波音公司 用于交互式认知任务协助的系统和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140101673A1 (en) * 2012-10-05 2014-04-10 Microsoft Corporation Dynamic dependency evaluation for computing task execution
US9619283B2 (en) * 2015-07-28 2017-04-11 TCL Research America Inc. Function-based action sequence derivation for personal assistant system
CN105677462A (zh) * 2015-12-30 2016-06-15 生迪光电科技股份有限公司 基于物联网的分布式任务系统及业务处理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789258B1 (en) * 2000-05-11 2004-09-07 Sun Microsystems, Inc. System and method for performing a synchronization operation for multiple devices in a computer system
CN107016479A (zh) * 2016-01-28 2017-08-04 五八同城信息技术有限公司 任务调度管理方法、装置及系统
CN108228345A (zh) * 2016-12-09 2018-06-29 波音公司 用于交互式认知任务协助的系统和方法

Also Published As

Publication number Publication date
CN110858158A (zh) 2020-03-03

Similar Documents

Publication Publication Date Title
CN110858158B (zh) 分布式任务调度方法、装置、电子设备、存储介质
US9645815B2 (en) Dynamically recommending changes to an association between an operating system image and an update group
US8631396B2 (en) Schema specification to improve product consumability on installation, configuration, and/or un-installation activity
US10832224B2 (en) Calendar based management of information technology (IT) tasks
US9250889B2 (en) Assigning severity to a software update
CN107885609B (zh) 业务冲突处理方法及装置、存储介质和电子设备
CN107077373B (zh) 在计算机处理器核心上执行多个线程的方法和系统
CN110659142A (zh) 消息队列处理方法及装置、电子设备、存储介质
CN110609755A (zh) 跨区块链节点的消息处理方法及装置、设备、介质
US9349004B2 (en) Predicting the actions and evaluating the risk of a software install program
CN108121650B (zh) 一种对于页面用户界面的测试方法及装置
CN105229604B (zh) 信息处理设备、信息处理方法、以及程序
CN109800166B (zh) 一种嵌入式实时操作系统的调试方法及装置
CN109739724B (zh) 数据监控方法、系统、电子设备和存储介质
CN112667317A (zh) 一种异常耗时检测方法、装置、电子设备及存储介质
CN112445549A (zh) 运维方法、运维装置、电子设备和介质
US10802901B2 (en) Obtaining state information of threads of a device
CN111275389A (zh) 运维作业创建、管理方法和装置
CN113986097A (zh) 一种任务调度的方法、装置及电子设备
CN109947576A (zh) 一种虚拟机内部代理程序管理的方法
CN112035368A (zh) 自动化软件测试方法、装置、电子设备、存储介质
JP5757167B2 (ja) 判定作業支援システム、判定作業支援方法、及びプログラム
US10445081B2 (en) Techniques of automatically generating dependencies for applications in embedded systems
CN112416695B (zh) 一种全局变量监控方法、装置、设备及存储介质
CN111382057A (zh) 测试用例生成方法,测试方法及装置,服务器及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: Jingdong Digital Technology Holding Co.,Ltd.

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address before: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176

Applicant before: BEIJING JINGDONG FINANCIAL TECHNOLOGY HOLDING Co.,Ltd.

GR01 Patent grant
GR01 Patent grant