CN113238838B - 一种任务调度方法、装置及计算机可读存储介质 - Google Patents
一种任务调度方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113238838B CN113238838B CN202110436537.2A CN202110436537A CN113238838B CN 113238838 B CN113238838 B CN 113238838B CN 202110436537 A CN202110436537 A CN 202110436537A CN 113238838 B CN113238838 B CN 113238838B
- Authority
- CN
- China
- Prior art keywords
- execution
- subtasks
- task
- stage
- executed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供了一种任务调度方法、装置、系统及计算机可读存储介质,该方法包括:将待调度的调度任务拆分为多个子任务,将多个子任务编排为多个阶段,并配置多个子任务之间的任务依赖关系和多个阶段之间的阶段依赖关系;响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,其中,预设执行条件根据阶段依赖关系、任务依赖关系以及任务执行状态确定;并根据执行节点反馈的执行结果更新待执行子任务的执行状态。利用上述方法,能够更有效地管理调度任务的多个子任务的执行流程,更满足各种复杂业务场景下的任务调度,有效提升任务调度性能。
Description
技术领域
本发明属于计算机领域,具体涉及一种任务调度方法、装置及计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
分布式、微服务应用场景下,可以将复杂的调度任务拆分成多个子任务,并将各个子任务下发到不同的节点中执行以提高调度效率。然而,由于受业务流程和部署资源限制,拆分调度任务得到的多个子任务之间的执行先后顺序、任务调度管理以及高效执行存在复杂度高、难度大等问题。
发明内容
针对上述现有技术中存在的问题,提出了一种任务调度方法、装置及计算机可读存储介质,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
本发明提供了以下方案。
第一方面,提供一种任务调度方法,包括:将待调度的调度任务拆分为多个子任务,将多个子任务编排为多个阶段,并配置多个子任务之间的任务依赖关系和多个阶段之间的阶段依赖关系;响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,其中,预设执行条件根据阶段依赖关系、任务依赖关系以及任务执行状态确定;并根据执行节点反馈的执行结果更新待执行子任务的执行状态。
在一种可能的实施方式中,方法还包括:监控任务执行状态;以及,当监控到当前阶段的前一阶段的全部子任务均执行完成时,生成当前阶段的执行指令;和/或,当监控到当前阶段的全部子任务均执行完成时,生成后续阶段的执行指令。
在一种可能的实施方式中,对多个子任务进行分阶段编排,还包括:对阶段中的多个子任务进行分组编排,得到阶段的多个任务分组;以及,当当前阶段包含多个任务分组时,并行执行当前阶段的多个任务分组。
在一种可能的实施方式中,还包括基于负载均衡策略将满足预设执行条件的待执行子任务下发到执行节点,具体包括:预先配置每个子任务的预期负载、每个执行节点的负载阈值;当前阶段执行时,确定待执行子任务的预期负载,并计算每个执行节点的当前负载;根据每个执行节点的负载阈值和当前负载,和待执行子任务的预期负载确定待执行子任务的可用节点列表;以及,将待执行子任务下发至可用节点列表中负载率最低的执行节点。
在一种可能的实施方式中,任务执行状态至少包括子任务的执行状态,子任务的执行状态包括:待执行、执行中、成功、失败、终止、异常。
在一种可能的实施方式中,阶段依赖关系和任务依赖关系的依赖关系类型包括:强依赖、弱依赖和无依赖;其中,每种依赖关系类型和一个或多个子任务的执行状态具有预设映射关系。
在一种可能的实施方式中,当前阶段基于配置的阶段依赖关系而依赖于前继阶段;其中,若阶段依赖关系为强依赖,当前阶段依赖于前继阶段全部子任务均执行成功;若阶段依赖关系为弱依赖,当前阶段依赖于前继阶段全部子任务均执行无异常;若阶段依赖关系为无依赖,当前阶段的开始执行不依赖前继阶段的子任务的执行状态。
在一种可能的实施方式中,待执行子任务基于配置的任务依赖关系而依赖于至少一个指定子任务,任务依赖关系包括:强依赖、弱依赖和无依赖中的一种;其中,若任务依赖关系为强依赖,待执行子任务依赖于至少一个指定子任务均执行成功;若任务依赖关系为弱依赖,待执行子任务依赖于至少一个指定子任务执行成功或失败;若任务依赖关系为无依赖,待执行子任务依赖于至少一个指定子任务执行成功、失败、终止或异常。
在一种可能的实施方式中,方法还包括判断是否满足执行条件,具体包括:若当前阶段的阶段依赖关系为强依赖或弱依赖,判断当前阶段是否满足预设执行条件,若不满足则置当前阶段的全部子任务的执行状态为异常,若满足则利用负载均衡策略依次下发当前阶段的全部子任务并更新下发后的子任务的执行状态为执行中。
在一种可能的实施方式中,方法还包括判断是否满足执行条件,具体包括:若当前阶段的阶段依赖关系为无依赖,则判断当前阶段的每个子任务是否满足预设执行条件,若不满足则置子任务的执行状态为异常,若满足则下发子任务,并更新下发后的子任务的执行状态为执行中。
在一种可能的实施方式中,方法还包括预先配置多个配置信息,配置信息包括以下中的一种或多种:调度任务的调度任务标识;每个子任务的以下一种或多种配置项:所属调度任务的调度任务标识、所属阶段的阶段标识、所属阶段的阶段依赖关系、所属任务分组的分组标识、子任务标识、任务依赖关系、预期负载、超时时间、执行模块标识;执行模块的以下一种或多种配置项:执行节点标识、执行节点的负载阈值、执行节点列表。
第二方面,提供一种任务调度装置,包括:配置模块,用于将待调度的调度任务拆分为多个子任务,将多个子任务编排为多个阶段,并配置多个子任务之间的任务依赖关系和多个阶段之间的阶段依赖关系;调度模块,用于响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,其中,预设执行条件根据阶段依赖关系、任务依赖关系以及任务执行状态确定;并根据执行节点反馈的执行结果更新待执行子任务的执行状态。
在一种可能的实施方式中,装置还包括监控模块,用于:监控任务执行状态;以及,当监控到当前阶段的前一阶段的全部子任务均执行完成时,生成当前阶段的执行指令;和/或,当监控到当前阶段的全部子任务均执行完成时,生成后续阶段的执行指令。
在一种可能的实施方式中,配置模块还用于:对阶段中的多个子任务进行分组编排,得到阶段的多个任务分组;以及,当当前阶段包含多个任务分组时,并行执行当前阶段的多个任务分组。
在一种可能的实施方式中,调度模块还用于基于负载均衡策略将满足预设执行条件的待执行子任务下发到执行节点,具体用于:预先配置每个子任务的预期负载、每个执行节点的负载阈值;当前阶段执行时,确定待执行子任务的预期负载,并计算每个执行节点的当前负载;根据每个执行节点的负载阈值和当前负载,和待执行子任务的预期负载确定待执行子任务的可用节点列表;以及,将待执行子任务下发至可用节点列表中负载率最低的执行节点。
在一种可能的实施方式中,任务执行状态至少包括子任务的执行状态,子任务的执行状态包括:待执行、执行中、成功、失败、终止、异常。
在一种可能的实施方式中,阶段依赖关系和任务依赖关系的依赖关系类型包括:强依赖、弱依赖和无依赖;其中,每种依赖关系类型和一个或多个子任务的执行状态具有预设映射关系。
在一种可能的实施方式中,当前阶段基于配置的阶段依赖关系而依赖于前继阶段;其中,若阶段依赖关系为强依赖,当前阶段依赖于前继阶段全部子任务均执行成功;若阶段依赖关系为弱依赖,当前阶段依赖于前继阶段全部子任务均执行无异常;若阶段依赖关系为无依赖,当前阶段的开始执行不依赖前继阶段的子任务的执行状态。
在一种可能的实施方式中,待执行子任务基于配置的任务依赖关系而依赖于至少一个指定子任务,任务依赖关系包括:强依赖、弱依赖和无依赖中的一种;其中,若任务依赖关系为强依赖,待执行子任务依赖于至少一个指定子任务均执行成功;若任务依赖关系为弱依赖,待执行子任务依赖于至少一个指定子任务执行成功或失败;若任务依赖关系为无依赖,待执行子任务依赖于至少一个指定子任务执行成功、失败、终止或异常。
在一种可能的实施方式中,装置还包括判断是否满足执行条件,具体包括:若当前阶段的阶段依赖关系为强依赖或弱依赖,判断当前阶段是否满足预设执行条件,若不满足则置当前阶段的全部子任务的执行状态为异常,若满足则利用负载均衡策略依次下发当前阶段的全部子任务并更新下发后的子任务的执行状态为执行中。
在一种可能的实施方式中,装置还包括判断是否满足执行条件,具体包括:若当前阶段的阶段依赖关系为无依赖,则判断当前阶段的每个子任务是否满足预设执行条件,若不满足则置子任务的执行状态为异常,若满足则下发子任务,并更新下发后的子任务的执行状态为执行中。
在一种可能的实施方式中,配置模块还用于预先配置多个配置信息,配置信息包括以下中的一种或多种:调度任务的调度任务标识;每个子任务的以下一种或多种配置项:所属调度任务的调度任务标识、所属阶段的阶段标识、所属阶段的阶段依赖关系、所属任务分组的分组标识、子任务标识、任务依赖关系、预期负载、超时时间、执行模块标识;执行模块的以下一种或多种配置项:执行节点标识、执行节点的负载阈值、执行节点列表。
第三方面,提供一种任务调度装置,其特征在于,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如权利要求1-11的方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得多核处理器执行如权利要求1-11中任一项的方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过将调度任务拆分为多个子任务、将多个子任务分阶段编排成有序执行的多个阶段,以及通过综合维护子任务之间的任务依赖关系和阶段之间的阶段依赖关系,能够更有效地管理调度任务的多个子任务的执行流程,更满足各种复杂业务场景下的任务调度,有效提升任务调度性能。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为根据本发明一实施例的任务调度方法的流程示意图;
图2为根据本发明一实施例的对调度任务进行分阶段编排的示意图;
图3为根据本发明又一实施例的任务调度方法的流程示意图;
图4为根据本发明一实施例的任务调度系统的示意图;
图5为根据本发明又一实施例的任务调度方法的流程示意图;
图6为根据本发明一实施例的任务调度装置的结构示意图;
图7为根据本发明又一实施例的任务调度装置的结构示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本申请实施例的描述中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1为根据本申请一实施例的任务调度方法的流程示意图,用于调度执行复杂任务,在该流程中,从设备角度而言,执行主体可以是一个或者多个电子设备;从程序角度而言,执行主体相应地可以是搭载于这些电子设备上的程序。
如图1所示,本实施例提供的方法可以包括以下步骤:
S101、将待调度的调度任务拆分为多个子任务,将多个子任务编排为多个阶段;
一个示例中,参考图2,示出了一种对调度任务进行分阶段编排的示意图,将待调度的调度任务拆分为多个子任务,并将多个子任务编排为了n个阶段,每个阶段中包括若干个子任务,可以按阶段执行每个阶段中的子任务。可选地,可以根据拆分出的多个子任务之间的关联关系进行该编排,比如具有时间关联关系的两个或以上子任务分别编排到不同的阶段中,每个阶段包括的若干个子任务之间不具有上述关联关系。
S102、配置多个子任务之间的任务依赖关系和多个阶段之间的阶段依赖关系;
具体可以根据任务执行状态配置多个子任务之间、多个阶段之间的依赖关系。任务执行状态主要可以包含调度/子任务执行状态。
任务依赖关系用于指示子任务之间的依赖关系,换言之,某个子任务的开始执行需要依赖于另一个或多个子任务的执行状态。例如,第一子任务的开始执行可以依赖于第二子任务执行成功/失败。又例如,第三子任务的开始执行可以依赖于第四子任务的未执行状态,诸如此类。
阶段依赖关系用于指示阶段之间的依赖关系,换言之,某个阶段的开始执行需要依赖于另一个或多个阶段中全部子任务的执行状态。例如,第一阶段的开始执行可以依赖于第二阶段的全部子任务均执行成功/失败,又例如,第三阶段的开始执行可以依赖于第四阶段的全部子任务均执行成功且第五阶段的全部子任务均未执行,诸如此类,本申请对此不作具体限制。
S103、响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,
具体地,预设执行条件可以根据阶段依赖关系、任务依赖关系以及任务执行状态确定。
仍参考图2,假设当前阶段为阶段2,此时获取阶段2中的全部子任务:子任务2-1-1、子任务2-2-2,…,子任务2-1-t21,判断每个子任务是否满足预设执行条件,该预设执行条件可以包括当前阶段的阶段执行条件和每个子任务的任务执行条件。举例来说,可以先判断当前阶段是否满足基于阶段依赖关系和任务执行状态确定的阶段执行条件,再进一步判断当前阶段的每个子任务是否满足基于任务依赖关系和任务执行状态确定的任务执行条件,若均满足,则认为该子任务满足该预设执行条件,可以依据负载均衡策略下发到执行节点,并将子任务执行状态更新为执行中。否则,则认为该子任务不满足预设执行条件,可以将子任务执行状态更新为异常。
S104、根据执行节点反馈的执行结果更新待执行子任务的执行状态。
具体地,该执行节点反馈的执行结果可以是指示该待执行子任务执行成功/失败/终止/异常。
可以理解,上述S101-S102为执行调度任务之前的配置工作,S103-S104为具体执行该调度任务的每个当前阶段的调度工作。例如,依据上述S101-S102可以配置出如图2所示出的任务编排结果,并相应配置阶段依赖关系和任务依赖关系,在实际执行时,可以顺序执行图2中的阶段1-阶段n,其中每个阶段作为当前阶段时均执行上述S103-S104的工作,直至阶段n执行结束。
在本实施例中,通过将调度任务拆分为多个子任务、将多个子任务分阶段编排成有序执行的多个阶段,以及通过综合维护子任务之间的任务依赖关系和阶段之间的阶段依赖关系,能够更有效地管理调度任务的多个子任务的执行流程,更满足各种复杂业务场景下的任务调度,有效提升任务调度性能。
在一些可能的实施方式中,子任务的执行状态可以包括:待执行、执行中、成功、失败、终止、异常等多种执行状态。例如,针对任意一个子任务,在其未执行时的执行状态为“待执行”、在其已经成功分发到执行节点之后的执行状态为“执行中”,在其已被执行节点成功执行之后的执行状态为“成功”,在其已被执行节点执行失败之后的执行状态为“失败”,在其已被执行节点终止执行之后的执行状态为“终止”,在其发生若干种异常情况之一后的执行状态为“异常”,可以理解的是,根据实际的任务场景,当然还可以设置其他的执行状态,而不仅限于上述所列举的执行状态。本实施例中,通过采用设置上述多种执行状态,相较于传统方案中仅设置“已执行”和“未执行”具有更为精细化的状态管理方案。
一个示例中,表1给出一种精细化的子任务状态机。
表1:
在一些可能的实施方式中,调度任务的执行状态可以包括初始和执行。
表2给出一种调度任务状态机,其中,调度任务执行时,记录调度任务的调度任务执行状态标识为“执行”、执行阶段标识为当前在执行的阶段标识;子任务执行状态标识为当前该子任务的执行状态、子任务执行节点为当前执行该子任务的执行节点信息;任务结束后,记录调度任务执行状态标识为“初始”。
表2:
状态 | 含义 |
初始 | 调度任务未执行 |
执行 | 调度任务处于执行状态 |
在一些可能的实施方式中,为了进一步精细化该调度方法,阶段依赖关系和任务依赖关系的依赖关系类型可以包括:强依赖、弱依赖和无依赖。每种依赖关系类型和一个或多个子任务的执行状态具有预设映射关系。
表3给出一种依赖关系和状态机的映射关系表,根据上述子任务状态机,可以细化阶段与阶段之间的阶段依赖关系、子任务与子任务之间的任务依赖关系,依赖关系可以包含:强依赖、弱依赖、无依赖。
表3:
依赖关系 | 满足关系的状态列表 |
强依赖 | 成功 |
弱依赖 | 成功、失败 |
无依赖 | 成功、失败、终止、异常 |
相比于现有的方案,本实施例可以提供更为精细的任务状态管理(待执行、执行中、成功、失败、终止、异常)和任务依赖关系管理(强依赖、弱依赖、无依赖)。可满足各类业务场景的需求。
在一些可能的实施方式中,假设当前阶段基于阶段依赖关系而依赖于前继阶段,阶段依赖关系可以是:强依赖、弱依赖和无依赖中的一种。更为具体地,若阶段依赖关系为强依赖,当前阶段依赖于前继阶段全部子任务均执行成功;若阶段依赖关系为弱依赖,当前阶段依赖于前继阶段全部子任务均执行无异常;若阶段依赖关系为无依赖,当前阶段的开始执行无需依赖前继阶段的子任务的执行状态。
在一些可能的实施方式中,假设待执行子任务基于任务依赖关系而依赖于至少一个指定子任务,任务依赖关系为强依赖、弱依赖和无依赖中的一种。更为具体地,若任务依赖关系为强依赖,待执行子任务依赖于至少一个指定子任务均执行成功;若任务依赖关系为弱依赖,待执行子任务依赖于至少一个指定子任务执行成功或失败;若任务依赖关系为无依赖,待执行子任务依赖于至少一个指定子任务执行成功、失败、终止或异常。
在一些可能的实施方式中,在S103中,还可以判断是否满足执行条件,具体包括:
若当前阶段的阶段依赖关系为强依赖或弱依赖,判断当前阶段是否满足预设执行条件,若不满足则置当前阶段的全部子任务的执行状态为异常,若满足则利用负载均衡策略依次下发当前阶段的全部子任务并更新下发后的子任务的执行状态为执行中。
若当前阶段的阶段依赖关系为无依赖,判断当前阶段的每个子任务是否满足预设执行条件,若不满足则置子任务的执行状态为异常,若满足则下发子任务,并更新下发后的子任务的执行状态为执行中。
换言之,为了进一步降低判断每个子任务是否可以执行的复杂度,可以采用下述方案:若当前阶段的阶段依赖关系为强依赖或弱依赖,则忽略配置的当前阶段的每个子任务的任务依赖关系;若当前阶段的阶段依赖关系为无依赖,则支持配置的当前阶段的每个子任务的任务依赖关系。
本实施例支持用户分别配置阶段依赖关系和子任务依赖关系。当某个阶段的阶段依赖关系为强依赖/弱依赖时,无需进一步验证该阶段中每个子任务是否满足基于各自任务依赖关系的预设执行条件,而仅需验证该阶段是否满足基于阶段依赖关系的预设执行条件,若满足,则可以直接下发该阶段中的每个子任务。相反,若某个阶段的阶段依赖关系为无依赖时,则需要验证该阶段中每个子任务是否满足基于各自任务依赖关系的预设执行条件,若满足,则下发满足预设执行条件的子任务,如果该阶段中的某一个或多个子任务并未配置任务依赖关系则可默认其满足预设执行条件。
一个示例中,参考图2,阶段n的阶段依赖关系的类型为弱依赖,由此,当阶段n满足基于阶段依赖关系的阶段执行条件时,则执行阶段n的全部子任务,否则将阶段n的全部子任务的执行状态更新为异常。阶段2的阶段依赖关系的类型为无依赖,由此可以进一步验证阶段2中任务2-1-2是否满足基于其任务依赖关系的任务执行条件,任务2-1-2的任务依赖关系具体为:任务2-1-2依赖于子任务1-1-2且为强依赖,并且任务2-1-2依赖于子任务1-2-1且为弱依赖。因此,结合表3所示出的映射关系,只有当子任务1-1-2的执行状态为成功时,且任务2-1-2的执行状态为成功或失败时,可以执行该任务2-1-2。针对阶段2中的其他子任务,由于并未配置任务依赖关系,因此无需进一步执行验证即可直接执行。
在一些可能的实施方式中,为监控当前所有正在执行任务的进度,进一步驱动任务流继续向下执行或结束任务,可以监控任务执行状态。当监控到当前阶段的前一阶段的全部子任务均执行完成时,生成当前阶段的执行指令;和/或,当监控到当前阶段的全部子任务均执行完成时,进一步判断当前阶段是否还有后续阶段,若有,则生成后续阶段的执行指令,若无,则结束任务。
在一些可能的实施方式中,为了对同一阶段内的多个子任务进行并发执行,可以对多个子任务进行进一步的精细化编排,在S101中,还可以:对阶段中的多个子任务进行分组编排,得到阶段的多个任务分组;以及,当当前阶段包含多个任务分组时,并行执行当前阶段的多个任务分组。
一个示例中,仍参见图2,其示出了一种精细化的分阶段分组的任务调度的示意图,其中,可从阶段和子任务维度进行依赖配置。将每个阶段中包含的多个子任务进一步进行分组编排,从并分组维度细化控制子任务并发。其实现方式如下:在子任务编排时,按执行顺序分别为阶段编号1、2、…n,同阶段内设置并发分组编号1、2、…n,组内分别为各子任务编号n-1-1、n-1-2、…n-1-tn。该模型支持同阶段内的子任务根据并发需求进行分组配置。同一阶段的不同分组之间可以并发执行。同一阶段的同一分组内的多个子任务顺序执行。
在一些可能的实施方式中,参考图3,在S103中,为进一步提高执行节点的负载均衡,还可以执行以下步骤:
S31、预先配置每个子任务的预期负载、每个执行节点的负载阈值;
S32、当前阶段执行时,确定待执行子任务的预期负载,并计算每个执行节点的当前负载;
S33、根据每个执行节点的负载阈值和当前负载,和待执行子任务的预期负载确定待执行子任务的可用节点列表;以及,
S34、将待执行子任务下发至可用节点列表中负载率最低的执行节点。
一个示例中,基于负载均衡策略的分发流程如下:在S31中,添加调度任务时,需要为子任务配置预期负载,为执行节点配置负载阈值。用户可根据子任务在生产上的预计资源损耗评估预期负载、根据执行节点的实际可利用资源评估负载阈值。该此处资源包括CPU、内存等。在S32中,子任务下发前,获取该子任务对应的执行节点列表,并查询每个执行节点当前正在执行的所有子任务,并计算该执行节点当前的负载总和wn。在S33中,记当前待执行子任务预期负载为w,执行节点负载阈值为wmax,如果w+wn小于配置的负载阈值wmax,则将此节点放到可用节点列表。在S34中,计算负载率[(w+wn)/wmax]并排序,选择负载率最低的可用节点进行子任务下发。相反,如果无可用节点,则记该子任务执行状态“异常”。
传统方案中难以规避执行节点因负载过高宕机的风险。本实施例提出了一种实时的任务下发策略,要求预先评估执行节点的负载阈值和每个子任务的权重。在进行任务下发时,通过实时计算当前所有可用节点的实际负载,与负载阈值相比,综合选择最优的执行节点执行任务。相比于现有方案,交互复杂度低,确保执行节点不会超负载,具有更好的通用性和安全性。
在一些可能的实施方式中,方法还包括预先配置多种配置信息,该配置信息包括:调度任务的调度任务标识;每个子任务的以下一种或多种配置项:所属调度任务的调度任务标识、所属阶段的阶段标识、所属阶段的阶段依赖关系、所属任务分组的分组标识、子任务标识、任务依赖关系、预期负载、超时时间、执行模块标识;执行模块的以下一种或多种配置项:执行节点标识、执行节点的负载阈值、执行节点列表。
一个示例中,参考图4,示出一种任务调度系统,主要可以包含配置模块400、可视化界面401、调度模块402、监控模块403、存储模块404、执行模块405,各个模块具体执行如下工作:配置模块400用于生成任务调度相关的配置信息。例如,参考图4,在(1)中配置模块400通过可视化界面401输入配置信息,可选地也可以通过后台输入该配置信息,本申请对此不作具体限制。可视化界面401用于为用户提供操作该任务调度相关流程的交互界面,可以在该可视化界面401执行:添加/删除/更新任务、添加配置信息、查询调度/子任务的执行状态、手动触发/终止调度任务等功能。例如,参考图4,在(2)中可视化界面401将配置信息存储到存储模块404,在(3)中可视化界面401向调度模块402发生手动触发/终止调度任务的指令。调度模块402用于响应于触发条件(手动触发或自动触发均可)启动调度任务调度,同时负责子任务下发并维护任务执行状态。例如,在(4)中调度模块402从存储模块404获取调度/子任务的配置信息和执行状态,在(5)中将满足预设执行条件的子任务下发到执行模块405中的执行节点,在(6)中接收执行节点反馈的执行结果,在(7)中根据执行结果更新对应子任务的执行状态。监控模块403用于监控当前所有正在执行的调度/子任务的进度,驱动任务流继续向下执行或结束任务。在(8)中监控模块403从存储模块404获取调度/子任务的配置信息及执行状态,在(9)中监控模块403监控当前正在执行的调度/子任务的进度,在(10)中监控模块403在监控到当前阶段子任务执行完成之后且存在后继阶段时向调度模402发送后继阶段的任务执行指令,在(11)中监控模块403在监控到当前阶段子任务执行完成之后且不存在后继阶段时结束该调度任务调度。存储模块404用于存储调度/子任务的配置信息和任务执行状态。执行模块405包括若干个执行节点,每个执行节点均用于负责执行子任务,该执行节点一般是各业务系统的模块。
一个示例中,参考图5,示出基于图2中的编排结果并利用图4所示出任务调度装置来执行任务调度的流程交互图,具体来说,当通过可视化界面发出手动触发指令或基于后台发出自动触发指令时,待调度的调度任务满足触发条件,进一步在S501,调度模块402获取阶段1的全部子任务。在S502,由于阶段1为起始阶段,因此无阶段依赖和子任务依赖,调度模块402可以依次下发该阶段1的每个子任务;在S503,若下发成功,则记该子任务的执行状态为“执行中”,否则记为“异常”;在S504,在子任务执行完成后,调度模块402接收执行模块405的执行节点反馈的执行结果;在S505,调度模块402根据执行节点反馈的执行结果,在存储模块404中更新对应子任务的执行状态,可以是“成功”、“失败”、“异常”等;在S506,由监控模块403监控获取阶段1的子任务执行状态;在S507,当阶段1的所有子任务均执行结束(非“待执行”或“执行中”状态),监控模块403进一步判断是否存在下阶段待执行子任务,若不存在,则认为调度任务已完成执行,否则更新阶段标识;在S508、监控模块403生成并发送阶段1的下阶段,也即阶段2的执行指令;在S509,调度模块402获取当前的全部子任务的执行状态和阶段2的全部子任务;在S510,调度模块402根据配置的阶段依赖关系,判断阶段2是否满足执行条件,若不满足,则置该阶段2所有子任务执行状态为“异常”,否则依次执行该阶段所有子任务;在S511,在阶段2的子任务执行前,如果阶段2的阶段依赖关系为无依赖,调度模块402根据子任务依赖配置,判断待处理子任务是否满足执行条件;在S512,若待处理子任务不满足执行条件,则将该子任务执行状态更新为“异常”,否则按照S502进行任务下发。依次循环上述步骤S502-S512,直至阶段n执行完成。可选地,针对阶段内可能存在的多个任务分组,在S506和S507之间,还可以包括步骤(a),具体包括:若当前分组有待执行子任务,则继续执行当前分组下一子任务,若当前阶段内所有分组子任务都已完成,且存在下阶段待执行任务则执行该S507。
在本说明书的描述中,参考术语“一些可能的实施方式”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
关于本申请实施例的方法流程图,将某些操作描述为以一定顺序执行的不同的步骤。这样的流程图属于说明性的而非限制性的。可以将在本文中所描述的某些步骤分组在一起并且在单个操作中执行、可以将某些步骤分割成多个子步骤、并且可以以不同于在本文中所示出的顺序来执行某些步骤。可以由任何电路结构和/或有形机制(例如,由在计算机设备上运行的软件、硬件(例如,处理器或芯片实现的逻辑功能)等、和/或其任何组合)以任何方式来实现在流程图中所示出的各个步骤。
基于相同的技术构思,本发明实施例还提供一种任务调度装置,用于执行上述任一实施例所提供的任务调度方法。图6为本发明实施例提供的一种任务调度装置结构示意图。
如图6所示,该装置60包括:
配置模块400,用于将待调度的调度任务拆分为多个子任务,将多个子任务编排为多个阶段,并配置多个子任务之间的任务依赖关系和多个阶段之间的阶段依赖关系;
调度模块402用于响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,其中,预设执行条件根据阶段依赖关系、任务依赖关系以及任务执行状态确定;并根据执行节点反馈的执行结果更新待执行子任务的执行状态。
在一种可能的实施方式中,装置还包括监控模块,用于:监控任务执行状态;以及,当监控到当前阶段的前一阶段的全部子任务均执行完成时,生成当前阶段的执行指令;和/或,当监控到当前阶段的全部子任务均执行完成时,生成后续阶段的执行指令。
在一种可能的实施方式中,配置模块400还用于:对阶段中的多个子任务进行分组编排,得到阶段的多个任务分组;以及,当当前阶段包含多个任务分组时,并行执行当前阶段的多个任务分组。
在一种可能的实施方式中,调度模块402还用于基于负载均衡策略将满足预设执行条件的待执行子任务下发到执行节点,具体用于:预先配置每个子任务的预期负载、每个执行节点的负载阈值;当前阶段执行时,确定待执行子任务的预期负载,并计算每个执行节点的当前负载;根据每个执行节点的负载阈值和当前负载,和待执行子任务的预期负载确定待执行子任务的可用节点列表;以及,将待执行子任务下发至可用节点列表中负载率最低的执行节点。
在一种可能的实施方式中,任务执行状态至少包括子任务的执行状态,子任务的执行状态包括:待执行、执行中、成功、失败、终止、异常。
在一种可能的实施方式中,阶段依赖关系和任务依赖关系的依赖关系类型包括:强依赖、弱依赖和无依赖;其中,每种依赖关系类型和一个或多个子任务的执行状态具有预设映射关系。
在一种可能的实施方式中,当前阶段基于配置的阶段依赖关系而依赖于前继阶段;其中,若阶段依赖关系为强依赖,当前阶段依赖于前继阶段全部子任务均执行成功;若阶段依赖关系为弱依赖,当前阶段依赖于前继阶段全部子任务均执行无异常;若阶段依赖关系为无依赖,当前阶段的开始执行不依赖前继阶段的子任务的执行状态。
在一种可能的实施方式中,待执行子任务基于配置的任务依赖关系而依赖于至少一个指定子任务,任务依赖关系包括:强依赖、弱依赖和无依赖中的一种;其中,若任务依赖关系为强依赖,待执行子任务依赖于至少一个指定子任务均执行成功;若任务依赖关系为弱依赖,待执行子任务依赖于至少一个指定子任务执行成功或失败;若任务依赖关系为无依赖,待执行子任务依赖于至少一个指定子任务执行成功、失败、终止或异常。
在一种可能的实施方式中,装置还包括判断是否满足执行条件,具体包括:若当前阶段的阶段依赖关系为强依赖或弱依赖,判断当前阶段是否满足预设执行条件,若不满足则置当前阶段的全部子任务的执行状态为异常,若满足则利用负载均衡策略依次下发当前阶段的全部子任务并更新下发后的子任务的执行状态为执行中。
在一种可能的实施方式中,装置还包括判断是否满足执行条件,具体包括:若当前阶段的阶段依赖关系为无依赖,则判断当前阶段的每个子任务是否满足预设执行条件,若不满足则置子任务的执行状态为异常,若满足则下发子任务,并更新下发后的子任务的执行状态为执行中。
在一种可能的实施方式中,配置模块400还用于预先配置多个配置信息,配置信息包括以下中的一种或多种:调度任务的调度任务标识;每个子任务的以下一种或多种配置项:所属调度任务的调度任务标识、所属阶段的阶段标识、所属阶段的阶段依赖关系、所属任务分组的分组标识、子任务标识、任务依赖关系、预期负载、超时时间、执行模块标识;执行模块的以下一种或多种配置项:执行节点标识、执行节点的负载阈值、执行节点列表。
需要说明的是,本申请实施例中的任务调度装置可以实现前述任务调度方法的实施例的各个过程,并达到相同的效果和功能,这里不再赘述。
图7为根据本申请一实施例的任务调度装置,用于执行图1所示出的任务调度方法,该装置包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例所述的方法。
根据本申请的一些实施例,提供了任务调度方法的非易失性计算机存储介质,其上存储有计算机可执行指令,该计算机可执行指令设置为在由处理器运行时执行:上述实施例所述的方法。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
本申请实施例提供的装置、设备和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (20)
1.一种任务调度方法,其特征在于,包括:
将待调度的调度任务拆分为多个子任务,将所述多个子任务编排为多个阶段,并配置所述多个子任务之间的任务依赖关系和所述多个阶段之间的阶段依赖关系,所述阶段依赖关系和所述任务依赖关系的依赖关系类型包括:强依赖、弱依赖和无依赖,其中,每种所述依赖关系类型和一个或多个子任务的执行状态具有预设映射关系;
响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,其中,所述预设执行条件根据所述阶段依赖关系、所述任务依赖关系以及任务执行状态确定;并根据所述执行节点反馈的执行结果更新所述待执行子任务的执行状态;
所述待执行子任务基于配置的所述任务依赖关系而依赖于至少一个指定子任务;其中,若所述任务依赖关系为所述强依赖,所述待执行子任务依赖于所述至少一个指定子任务均执行成功;若所述任务依赖关系为所述弱依赖,所述待执行子任务依赖于所述至少一个指定子任务执行成功或失败;若所述任务依赖关系为所述无依赖,所述待执行子任务依赖于所述至少一个指定子任务执行成功、失败、终止或异常。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:监控任务执行状态;以及,
当监控到所述当前阶段的前一阶段的全部子任务均执行完成时,生成所述当前阶段的执行指令;和/或,
当监控到所述当前阶段的全部子任务均执行完成时,生成后续阶段的执行指令。
3.根据权利要求1所述的方法,其特征在于,对所述多个子任务进行分阶段编排,还包括:
对所述阶段中的多个子任务进行分组编排,得到所述阶段的多个任务分组;以及,当所述当前阶段包含所述多个任务分组时,并行执行所述当前阶段的所述多个任务分组。
4.根据权利要求1所述的方法,其特征在于,还包括基于负载均衡策略将满足预设执行条件的所述待执行子任务下发到执行节点,具体包括:
预先配置每个所述子任务的预期负载、每个所述执行节点的负载阈值;
所述当前阶段执行时,确定所述待执行子任务的所述预期负载,并计算每个所述执行节点的当前负载;
根据每个所述执行节点的所述负载阈值和所述当前负载,和所述待执行子任务的预期负载确定所述待执行子任务的可用节点列表;以及,
将所述待执行子任务下发至所述可用节点列表中负载率最低的所述执行节点。
5.根据权利要求1所述的方法,其特征在于,所述任务执行状态至少包括所述子任务的执行状态,所述子任务的执行状态包括:待执行、执行中、成功、失败、终止、异常。
6.根据权利要求5所述的方法,其特征在于,
所述当前阶段基于配置的所述阶段依赖关系而依赖于前继阶段;
其中,若所述阶段依赖关系为所述强依赖,所述当前阶段依赖于前继阶段全部子任务均执行成功;若所述阶段依赖关系为所述弱依赖,所述当前阶段依赖于前继阶段全部子任务均执行无异常;若所述阶段依赖关系为所述无依赖,所述当前阶段的开始执行不依赖前继阶段的子任务的执行状态。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括判断是否满足所述执行条件,具体包括:
若所述当前阶段的所述阶段依赖关系为强依赖或弱依赖,判断所述当前阶段是否满足所述预设执行条件,若不满足则置所述当前阶段的全部子任务的执行状态为异常,若满足则利用负载均衡策略依次下发所述当前阶段的全部子任务并更新下发后的子任务的执行状态为执行中。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括判断是否满足所述执行条件,具体包括:
若所述当前阶段的所述阶段依赖关系为无依赖,则判断所述当前阶段的每个所述子任务是否满足所述预设执行条件,若不满足则置所述子任务的执行状态为异常,若满足则下发所述子任务,并更新下发后的所述子任务的执行状态为执行中。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括预先配置多个配置信息,所述配置信息包括以下中的一种或多种:所述调度任务的调度任务标识;每个所述子任务的以下一种或多种配置项:所属调度任务的所述调度任务标识、所属阶段的阶段标识、所属阶段的所述阶段依赖关系、所属任务分组的分组标识、子任务标识、所述任务依赖关系、预期负载、超时时间、执行模块标识;执行模块的以下一种或多种配置项:执行节点标识、所述执行节点的负载阈值、执行节点列表。
10.一种任务调度装置,其特征在于,包括:
配置模块,用于将待调度的调度任务拆分为多个子任务,将所述多个子任务编排为多个阶段,并配置所述多个子任务之间的任务依赖关系和所述多个阶段之间的阶段依赖关系,所述阶段依赖关系和所述任务依赖关系的依赖关系类型包括:强依赖、弱依赖和无依赖,其中,每种所述依赖关系类型和一个或多个子任务的执行状态具有预设映射关系;
调度模块,用于响应于当前阶段的执行指令,获取当前阶段的全部子任务,将满足预设执行条件的待执行子任务下发到执行节点,其中,所述预设执行条件根据所述阶段依赖关系、所述任务依赖关系以及任务执行状态确定;并根据所述执行节点反馈的执行结果更新所述待执行子任务的执行状态,其中,所述待执行子任务基于配置的所述任务依赖关系而依赖于至少一个指定子任务;其中,若所述任务依赖关系为所述强依赖,所述待执行子任务依赖于所述至少一个指定子任务均执行成功;若所述任务依赖关系为所述弱依赖,所述待执行子任务依赖于所述至少一个指定子任务执行成功或失败;若所述任务依赖关系为所述无依赖,所述待执行子任务依赖于所述至少一个指定子任务执行成功、失败、终止或异常。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括监控模块,用于:
监控任务执行状态;以及,
当监控到所述当前阶段的前一阶段的全部子任务均执行完成时,生成所述当前阶段的执行指令;和/或,当监控到所述当前阶段的全部子任务均执行完成时,生成后续阶段的执行指令。
12.根据权利要求10所述的装置,其特征在于,所述配置模块还用于:
对所述阶段中的多个子任务进行分组编排,得到所述阶段的多个任务分组;以及,当所述当前阶段包含所述多个任务分组时,并行执行所述当前阶段的所述多个任务分组。
13.根据权利要求10所述的装置,其特征在于,所述调度模块还用于基于负载均衡策略将满足预设执行条件的所述待执行子任务下发到执行节点,具体用于:
预先配置每个所述子任务的预期负载、每个所述执行节点的负载阈值;
所述当前阶段执行时,确定所述待执行子任务的所述预期负载,并计算每个所述执行节点的当前负载;
根据每个所述执行节点的所述负载阈值和所述当前负载,和所述待执行子任务的预期负载确定所述待执行子任务的可用节点列表;以及,
将所述待执行子任务下发至所述可用节点列表中负载率最低的所述执行节点。
14.根据权利要求10所述的装置,其特征在于,所述任务执行状态至少包括所述子任务的执行状态,所述子任务的执行状态包括:待执行、执行中、成功、失败、终止、异常。
15.根据权利要求14所述的装置,其特征在于,
所述当前阶段基于配置的所述阶段依赖关系而依赖于前继阶段;
其中,若所述阶段依赖关系为所述强依赖,所述当前阶段依赖于前继阶段全部子任务均执行成功;若所述阶段依赖关系为所述弱依赖,所述当前阶段依赖于前继阶段全部子任务均执行无异常;若所述阶段依赖关系为所述无依赖,所述当前阶段的开始执行不依赖前继阶段的子任务的执行状态。
16.根据权利要求14所述的装置,其特征在于,所述装置还包括判断是否满足所述执行条件,具体包括:
若所述当前阶段的所述阶段依赖关系为强依赖或弱依赖,判断所述当前阶段是否满足所述预设执行条件,若不满足则置所述当前阶段的全部子任务的执行状态为异常,若满足则利用负载均衡策略依次下发所述当前阶段的全部子任务并更新下发后的子任务的执行状态为执行中。
17.根据权利要求14所述的装置,其特征在于,所述装置还包括判断是否满足所述执行条件,具体包括:
若所述当前阶段的所述阶段依赖关系为无依赖,则判断所述当前阶段的每个所述子任务是否满足所述预设执行条件,若不满足则置所述子任务的执行状态为异常,若满足则下发所述子任务,并更新下发后的所述子任务的执行状态为执行中。
18.根据权利要求10所述的装置,其特征在于,所述装置还包括预先配置多个配置信息,所述配置信息包括以下中的一种或多种:所述调度任务的调度任务标识;每个所述子任务的以下一种或多种配置项:所属调度任务的所述调度任务标识、所属阶段的阶段标识、所属阶段的所述阶段依赖关系、所属任务分组的分组标识、子任务标识、所述任务依赖关系、预期负载、超时时间、执行模块标识;执行模块的以下一种或多种配置项:执行节点标识、所述执行节点的负载阈值、执行节点列表。
19.一种任务调度装置,其特征在于,包括:
至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:如权利要求1-9中任一项 所述的方法。
20.一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被多核处理器执行时,使得所述多核处理器执行如权利要求1-9中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110436537.2A CN113238838B (zh) | 2021-04-22 | 2021-04-22 | 一种任务调度方法、装置及计算机可读存储介质 |
PCT/CN2022/074659 WO2022222567A1 (zh) | 2021-04-22 | 2022-01-28 | 一种任务调度方法、装置及计算机可读存储介质 |
TW111107056A TWI791389B (zh) | 2021-04-22 | 2022-02-25 | 任務調度方法、裝置及電腦可讀存儲介質 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110436537.2A CN113238838B (zh) | 2021-04-22 | 2021-04-22 | 一种任务调度方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113238838A CN113238838A (zh) | 2021-08-10 |
CN113238838B true CN113238838B (zh) | 2023-01-24 |
Family
ID=77128847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110436537.2A Active CN113238838B (zh) | 2021-04-22 | 2021-04-22 | 一种任务调度方法、装置及计算机可读存储介质 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN113238838B (zh) |
TW (1) | TWI791389B (zh) |
WO (1) | WO2022222567A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238838B (zh) * | 2021-04-22 | 2023-01-24 | 中国银联股份有限公司 | 一种任务调度方法、装置及计算机可读存储介质 |
CN113641476B (zh) * | 2021-08-16 | 2023-07-14 | 腾讯科技(深圳)有限公司 | 一种任务调度方法、游戏引擎、设备及存储介质 |
CN113741872B (zh) * | 2021-09-03 | 2024-04-23 | 上海新炬网络信息技术股份有限公司 | 基于作业调度的软件应用自动化发布方法 |
CN113835892B (zh) * | 2021-09-27 | 2024-02-13 | 苏州浪潮智能科技有限公司 | 统一存储设备及其业务管理方法、模块和可读存储介质 |
CN113919877B (zh) * | 2021-10-15 | 2024-06-28 | 深圳市酷开网络科技股份有限公司 | 基于dmp平台圈人任务进度处理方法、装置及可读存储介质 |
CN116069388A (zh) * | 2021-10-30 | 2023-05-05 | 华为技术有限公司 | 一种任务处理方法及电子装置 |
CN114020434A (zh) * | 2021-11-09 | 2022-02-08 | 中国建设银行股份有限公司 | 一种任务处理方法、装置、电子设备及存储介质 |
CN114167766A (zh) * | 2021-11-15 | 2022-03-11 | 成都四方伟业软件股份有限公司 | 一种多关联设备时指令下发执行的方法及装置 |
CN114416346B (zh) * | 2021-12-23 | 2023-03-24 | 广州市玄武无线科技股份有限公司 | 一种多节点任务调度方法、装置、设备及存储介质 |
CN114327819B (zh) * | 2021-12-24 | 2023-02-03 | 北京百度网讯科技有限公司 | 一种任务管理方法、装置、设备及存储介质 |
CN114358649B (zh) * | 2022-01-17 | 2022-09-13 | 安徽君鲲科技有限公司 | 一种海事现场监管方法及系统 |
CN115328639B (zh) * | 2022-10-13 | 2022-12-13 | 北京云枢创新软件技术有限公司 | 一种基于芯片验证回归的任务调度系统 |
CN115816441B (zh) * | 2022-10-31 | 2023-08-08 | 实时侠智能控制技术有限公司 | 基于任务描述的机器人控制方法、装置及可读介质 |
CN115640102B (zh) * | 2022-11-16 | 2023-03-31 | 武汉大学 | 基于分布式任务的可重复执行式计算方法、系统和介质 |
CN115955481B (zh) * | 2022-12-12 | 2024-06-14 | 支付宝(杭州)信息技术有限公司 | 应急响应方法和装置 |
CN116107724B (zh) * | 2023-04-04 | 2023-07-18 | 山东浪潮科学研究院有限公司 | 一种ai加速核调度管理方法、装置、设备及存储介质 |
CN116501474B (zh) * | 2023-06-08 | 2023-09-22 | 之江实验室 | 一种批量同质任务的处理系统、方法以及装置 |
CN116723225B (zh) * | 2023-06-16 | 2024-05-17 | 广州银汉科技有限公司 | 游戏任务的自动分配方法及系统 |
CN117992198B (zh) * | 2024-02-06 | 2024-06-14 | 广州翌拓软件开发有限公司 | 用于自适应调度的任务处理方法及系统 |
CN117806806B (zh) * | 2024-02-28 | 2024-05-17 | 湖南科技大学 | 任务部分卸载调度方法、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134499A (zh) * | 2019-03-29 | 2019-08-16 | 新智云数据服务有限公司 | 任务调度方法、任务调度系统、存储介质和计算机设备 |
CN111708628A (zh) * | 2020-06-23 | 2020-09-25 | 中国平安财产保险股份有限公司 | 任务调度管理方法、装置、设备及存储介质 |
WO2020259392A1 (zh) * | 2019-06-25 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 一种异常任务的根因任务确定方法及装置 |
CN112667383A (zh) * | 2020-12-31 | 2021-04-16 | 北京高途云集教育科技有限公司 | 一种任务执行及调度方法、系统、装置、计算设备及介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949853B2 (en) * | 2011-08-04 | 2015-02-03 | Microsoft Corporation | Using stages to handle dependencies in parallel tasks |
CN104915260B (zh) * | 2015-06-19 | 2018-05-25 | 北京搜狐新媒体信息技术有限公司 | 一种Hadoop集群管理任务的分发方法和系统 |
CN108287756A (zh) * | 2018-01-25 | 2018-07-17 | 联动优势科技有限公司 | 一种处理任务的方法及装置 |
CN108491254A (zh) * | 2018-02-07 | 2018-09-04 | 链家网(北京)科技有限公司 | 一种数据仓库的调度方法及装置 |
CN109725995B (zh) * | 2018-06-15 | 2024-04-12 | 中国平安人寿保险股份有限公司 | 数据抽取任务执行方法、装置、设备及可读存储介质 |
CN110895484A (zh) * | 2018-09-12 | 2020-03-20 | 北京奇虎科技有限公司 | 任务调度方法及装置 |
WO2020062305A1 (zh) * | 2018-09-30 | 2020-04-02 | 华为技术有限公司 | 运算加速器、交换器、任务调度方法及处理系统 |
CN110516971B (zh) * | 2019-08-29 | 2023-04-25 | 杭州网易再顾科技有限公司 | 异常检测的方法、装置、介质和计算设备 |
CN112114956A (zh) * | 2020-09-29 | 2020-12-22 | 中国银行股份有限公司 | 一种任务调度方法、装置和系统 |
CN112596876A (zh) * | 2020-12-17 | 2021-04-02 | 平安普惠企业管理有限公司 | 一种任务调度方法、装置及相关设备 |
CN112631751A (zh) * | 2020-12-22 | 2021-04-09 | 平安普惠企业管理有限公司 | 任务调度方法、装置、计算机设备及存储介质 |
CN112559156B (zh) * | 2020-12-23 | 2024-06-18 | 百果园技术(新加坡)有限公司 | 一种多依赖任务分组管理方法、装置、设备及存储介质 |
CN113238838B (zh) * | 2021-04-22 | 2023-01-24 | 中国银联股份有限公司 | 一种任务调度方法、装置及计算机可读存储介质 |
-
2021
- 2021-04-22 CN CN202110436537.2A patent/CN113238838B/zh active Active
-
2022
- 2022-01-28 WO PCT/CN2022/074659 patent/WO2022222567A1/zh active Application Filing
- 2022-02-25 TW TW111107056A patent/TWI791389B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134499A (zh) * | 2019-03-29 | 2019-08-16 | 新智云数据服务有限公司 | 任务调度方法、任务调度系统、存储介质和计算机设备 |
WO2020259392A1 (zh) * | 2019-06-25 | 2020-12-30 | 深圳前海微众银行股份有限公司 | 一种异常任务的根因任务确定方法及装置 |
CN111708628A (zh) * | 2020-06-23 | 2020-09-25 | 中国平安财产保险股份有限公司 | 任务调度管理方法、装置、设备及存储介质 |
CN112667383A (zh) * | 2020-12-31 | 2021-04-16 | 北京高途云集教育科技有限公司 | 一种任务执行及调度方法、系统、装置、计算设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113238838A (zh) | 2021-08-10 |
TW202242643A (zh) | 2022-11-01 |
WO2022222567A1 (zh) | 2022-10-27 |
TWI791389B (zh) | 2023-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113238838B (zh) | 一种任务调度方法、装置及计算机可读存储介质 | |
WO2020211579A1 (zh) | 一种基于分布式批量处理系统的处理方法、装置及系统 | |
CN109582455B (zh) | 多线程任务处理方法、装置及存储介质 | |
US8713571B2 (en) | Asynchronous task execution | |
CN108572873B (zh) | 一种解决Spark数据倾斜问题的负载均衡方法及装置 | |
CN102043675B (zh) | 一种基于任务处理请求任务量大小的线程池管理方法 | |
WO2021159638A1 (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
TWI462021B (zh) | 用於資料平行產生及消耗之電腦可讀取儲存媒體與方法 | |
JP4797095B2 (ja) | バッチ処理多重化方法 | |
CN111078396A (zh) | 一种基于多任务实例的分布式数据接入方法和系统 | |
US10067793B2 (en) | Data processing method and apparatus for executing task code using reservation instruction and release instruction | |
KR101392584B1 (ko) | 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 | |
CN106775975B (zh) | 进程调度方法及装置 | |
CN113467908A (zh) | 任务执行方法、装置、计算机可读存储介质及终端设备 | |
CN111522630B (zh) | 基于批次调度中心的计划任务执行方法以及系统 | |
CN103959276A (zh) | 基于用户意图和进程独立性的知识的资源分配优先化 | |
WO2017167070A1 (zh) | 集群数据复制方法、优先级确定方法及装置 | |
CN111708799A (zh) | Spark任务处理方法、装置、电子设备及存储介质 | |
CN111143063A (zh) | 任务的资源预约方法及装置 | |
CN106598726A (zh) | 一种多任务管理系统及其分布式部署方法 | |
CN111290868B (zh) | 任务处理方法、装置和系统以及流程引擎 | |
CN116737331B (zh) | 一种智能化任务流编排方法和平台 | |
Thai et al. | Algorithms for optimising heterogeneous Cloud virtual machine clusters | |
CN112395063A (zh) | 一种动态多线程调度方法及系统 | |
CN111190725A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40056940 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |