CN116302381B - 并行拓扑调度组件及方法、任务调度方法和任务处理方法 - Google Patents

并行拓扑调度组件及方法、任务调度方法和任务处理方法 Download PDF

Info

Publication number
CN116302381B
CN116302381B CN202211098026.5A CN202211098026A CN116302381B CN 116302381 B CN116302381 B CN 116302381B CN 202211098026 A CN202211098026 A CN 202211098026A CN 116302381 B CN116302381 B CN 116302381B
Authority
CN
China
Prior art keywords
tasks
task
scheduling
queue
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
Application number
CN202211098026.5A
Other languages
English (en)
Other versions
CN116302381A (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.)
Shanghai Shuhe Information Technology Co Ltd
Original Assignee
Shanghai Shuhe Information Technology 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 Shanghai Shuhe Information Technology Co Ltd filed Critical Shanghai Shuhe Information Technology Co Ltd
Priority to CN202211098026.5A priority Critical patent/CN116302381B/zh
Publication of CN116302381A publication Critical patent/CN116302381A/zh
Application granted granted Critical
Publication of CN116302381B publication Critical patent/CN116302381B/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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及一种并行拓扑调度组件及方法、任务调度方法和任务处理方法。所述组件包括调度主节点、多个工作子节点、待执行队列和完成队列;调度主节点,用于初始化有向无环图中所有任务的入度,将当前入度为0的任务加入所述待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当在途节点数大于0时,执行基于Kahn算法的任务调度循环逻辑;各工作子节点,用于在调度主节点执行任务调度循环逻辑时,并行执行任务处理循环逻辑。本申请实施例能够在网络拓扑的复杂度越来越高,出入度也越来越稠密的情况下实现高效率任务调度。

Description

并行拓扑调度组件及方法、任务调度方法和任务处理方法
技术领域
本申请涉及任务调度领域,特别是涉及一种并行拓扑调度组件及方法、任务调度方法和任务处理方法。
背景技术
以下陈述仅提供与本申请有关的背景信息,而不必然地构成现有技术。
在互联网或者金融的实际业务中,任务(或节点)的执行在逻辑上有依赖关系,因此在执行顺序上有严格的先后顺序,这些任务构成了一个有向无环图(Directed AcyclicGraph,以下简称DAG);在业务层经常需要把这一批任务按照逻辑的先后顺序进行拓扑排序,再按照这个拓扑排序的结果依次执行调度。
以往进行任务调度的解决方案通常是采用DFS(Depth First Search,深度优先搜索)的拓扑排序算法或基于入度的原生Kahn拓扑排序算法(简称为Kahn算法)来进行设计的,然而,发明人意识到,当前网络拓扑的复杂度越来越高,出入度也越来越稠密,在这样的场景中,上述两种算法的适用性越来越弱,比如,上述的基于DFS的拓扑排序算法是串行算法,其求解问题的速度和求解问题的规模难以满足上述场景的要求,并且该算法输出的是一个逻辑“逆序”,即必须先解出全部任务的顺序,再翻转解出的顺序,之后才能基于翻转得到的顺序来执行任务,因此该算法的计算过程非常不适合动态计算;而原生Kahn算法本质上也是串行算法,并且该算法是单线程的,计算效率较低。因此,如何在网络拓扑的复杂度越来越高,出入度也越来越稠密的情况下实现高效率地任务调度成为亟需解决的问题。
发明内容
本申请针对上述不足或缺点,提供了一种并行拓扑调度组件及方法、任务调度方法和任务处理方法,本申请实施例能够在网络拓扑的复杂度越来越高,出入度也越来越稠密的情况下实现高效率任务调度。
本申请根据第一方面提供了一种并行拓扑调度组件,在一个实施例中,上述组件包括调度主节点、多个工作子节点、待执行队列和完成队列;其中:
调度主节点,用于初始化有向无环图中所有任务的入度,将当前入度为0的任务加入待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;其中,任务调度循环逻辑包括:实时获取完成队列的头部任务,头部任务指位于完成队列的头部的任务;如果获取不到,则自旋等待;如果能获取到,则取出头部任务,并对有向无环图中与头部任务相邻的每个下游任务的入度进行递减,如果有任一下游任务的最新入度为0,则将其加入待执行队列,并对在途任务数进行累加;
各工作子节点,用于在调度主节点执行任务调度循环逻辑时,并行执行任务处理循环逻辑;其中,任务处理循环逻辑包括:从待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入完成队列。
在一个实施例中,调度主节点,还用于获取运行过程中的实时工作量信息和计算资源信息,根据实时工作量信息和计算资源信息对目标对象进行弹性扩容或者缩容;目标对象是指上述多个工作子节点、待执行队列和完成队列中的一项或多项。
在一个实施例中,调度主节点,还用于初始化有向无环图,对有向无环图进行环路侦测,并在确定有向无环图中不含环路后,执行上述初始化有向无环图中所有任务的入度的步骤。
在一个实施例中,各工作子节点从待执行队列中获取任务时,以先到先得的方式抢夺待执行队列中的任务。
在一个实施例中,调度主节点,还用于在停止执行任务调度循环逻辑时,以异步的方式向待执行队列发送终止命令;
各工作子节点,还用于在执行任务处理循环逻辑时,若从待执行队列中获得终止命令,则停止执行任务处理循环逻辑。
在一个实施例中,任务处理循环逻辑还包括:
基于预设模式处理执行失败或执行超时的任务;预设模式包括重试模式、越控模式、熔断退出模式和超时退出模式中的任一项。
在一个实施例中,调度主节点,还用于通过restful接口向目标业务系统提供调度主节点执行任务调度循环逻辑时的实时状态信息和/或各工作子节点在执行任务处理循环逻辑时的实时状态信息。
本申请根据第二方面提供了一种并行拓扑调度方法,在一个实施例中,上述方法应用于上述任一实施例提供的并行拓扑调度组件;上述方法包括:
调度主节点初始化有向无环图中所有任务的入度,将当前入度为0的任务加入待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;
任务调度循环逻辑包括:实时获取完成队列的头部任务,头部任务指位于完成队列的头部的任务,如果获取不到,则自旋等待,如果能获取到,则取出头部任务,并对有向无环图中与头部任务相邻的每个下游任务的入度进行递减,如果有任一下游任务的最新入度为0,则将其加入待执行队列,并对在途任务数进行累加;
在调度主节点执行任务调度循环逻辑时,各工作子节点并行执行任务处理循环逻辑;
任务处理循环逻辑包括:从待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入完成队列。
本申请根据第三方面提供了一种任务调度方法,在一个实施例中,上述方法应用于上述任一实施例提供的并行拓扑调度组件中的调度主节点;上述方法包括:
初始化有向无环图中所有任务的入度,将当前入度为0的任务加入待执行队列,并且根据当前入度为0的任务数初始化在途任务数;
当在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;
任务调度循环逻辑包括:实时获取完成队列的头部任务,头部任务指位于完成队列的头部的任务;如果获取不到,则自旋等待;如果能获取到,则取出头部任务,并对有向无环图中与头部任务相邻的每个下游任务的入度进行递减,如果有任一下游任务的最新入度为0,则将其加入待执行队列,并对在途任务数进行累加。
本申请根据第四方面提供了一种任务处理方法,在一个实施例中,上述方法应用于上述任一实施例提供的并行拓扑调度组件中的任一工作子节点;上述方法包括:
监听并行拓扑调度组件中的待执行队列;
当待执行队列中包含任务时,从待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入并行拓扑调度组件中的完成队列。
本申请的上述实施例对原生的Kahn算法进行了扩展,从而可以在网络拓扑的复杂度越来越高,出入度也越来越稠密的情况下实现高效率地任务调度。其中,通过用一主多从的架构将任务调度的操作和任务处理的操作分离,使任务调度的操作和任务处理的操作可以并行执行,相比原本串行计算的方式,能够提高求解问题的速度和扩大求解问题的规模,进而实现高效率的任务调度;此外,用两个消息队列来分别存放待执行的任务和执行完成的任务,可以避免出现调度过早结束的情况,以及可以提高并发控制不当、状态更新不及时等情况下的容错率。
附图说明
图1为一种有向无环图的示意图;
图2为本申请一个或多个实施例提供的一种并行拓扑调度组件的原理图;
图3为本申请一个或多个实施例提供的一种任务调度方法的流程示意图;
图4为本申请一个或多个实施例提供的一种任务处理方法的流程示意图;
图5为本申请根据一个或多个实施例提供的计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
有向无环图:在数学,特别是图论和计算机科学中,有向无环图指的是一个无回路的有向图,比如图1所示。
入度、出度:在有向无环图中,顶点被指向的箭头个数,就是它的入度;顶点指出去的箭头个数,就是它的出度。比如,在图1中,顶点A的入度是0,出度是3,顶点B的入度和出度均是1。
在本申请实施例中,会按照任务间的依赖关系将需要执行的一批任务处理为有向无环图,有向无环图中的各个顶点分别对应于各个任务,顶点的入度可以表示该顶点对应的任务所依赖的任务数量,顶点间的边的方向(边的方向是指箭头的方向)可以表示顶点间的依赖关系,各顶点对应的任务需要等该顶点依赖的所有顶点对应的任务执行完成之后才能执行。比如,在图1所示的有向无环图中,顶点B的入度为1,即表示其依赖的顶点的数量是1,从图中可以看出,顶点A和顶点B间的边的方向为A→B,因此可以确定顶点B依赖的顶点即是顶点A,顶点B对应的任务需要等顶点A对应的任务执行完成之后才能执行。
为了在网络拓扑的复杂度越来越高,出入度也越来越稠密的情况下实现高效率地任务调度,将原本串行执行的原生的Kahn拓扑排序算法进行了并行化和分布式化的改造,从而使改造后的算法能够适用于单机多线程并发环境或者多机分布式计算环境,对于高出入度的稠密网络DAG(Directed Acyclic Graph,有向无环图)计算来说,能够大幅提升执行效率。
为了实现并行化和分布式化,采用一主多从(即一调度主节点,多个工作子节点)的简单架构,架构中的调度主节点和工作子节点有各自的分工。其中,调度主节点不参与任何具体业务,而只纯粹进行DAG中各个任务的入度更新和整体的任务调度,各个工作子节点负责处理任务,而不参与DAG的任何更新。本方案可以应用于多线程并发环境或多机分布式计算环境,当应用场景为多线程并发环境时,调度主节点和工作节点可以通过线程安全的阻塞队列来进行通信,而当应用场景为多机分布式计算环境时,调度主节点和工作节点可以通过消息队列中间件来进行通信。
进一步地,在原生的Kahn算法中,只监听了一个入度为0的任务消息队列,当该任务消息队列不为空,则弹出消息队列顶部的任务并执行这个任务,当这个任务执行完成,那么下游直接依赖此任务的节点的依赖则被扣除(对应的入度也减1),随着任务串行的不断完成,越来越多的任务的上游依赖被解开,当某一个任务的入度为0时,则会被加入该任务消息队列尾部,从而实现串行的拓扑排序串行调度。发明人注意到,原生的Kahn算法是串行算法,并且只关心入度为0的任务消息队列而没有考虑任务“在途”的问题,假如将该算法直接应用到并行拓扑排序的场景中,则会造成由于子任务更新不及时导致的调度过早结束的情况。此外,如果并发控制不当和/或状态更新不及时,即会造成调度陷入死循环,从而无法结束的问题。
为解决上述可能出现的问题,本申请综合考虑原生的Kahn算法的动态计算优势,在上述方案的基础上设置了两个消息队列(一个是“待执行队列”,用于实时记录待执行的任务;另一个“完成队列”,用于实时记录执行完成的任务;两个消息队列均可支持数据的持久化),通过观察这两个消息队列的队列长度的入队计数差值(即在途任务数),来判断是否结束完整的并行拓扑排序计算。
基于上述改造,本申请提供了一种并行拓扑调度组件。在一个实施例中,该并行拓扑调度组件包括调度主节点、多个工作子节点、待执行队列和完成队列;
调度主节点,用于初始化有向无环图中所有任务的入度,将当前入度为0的任务加入待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;其中,任务调度循环逻辑包括:实时获取完成队列的头部任务,头部任务指位于完成队列的头部的任务;如果获取不到,则自旋等待;如果能获取到,则取出头部任务,并对有向无环图中与头部任务相邻的每个下游任务的入度进行递减,如果有任一下游任务的最新入度为0,则将其加入待执行队列,并对在途任务数进行累加;
各工作子节点,用于在调度主节点执行任务调度循环逻辑时,并行执行任务处理循环逻辑;其中,任务处理循环逻辑包括:从待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入完成队列。
其中,上述Kahn算法是对原生的Kahn算法改造后得到的。
请参见图2,图2所示为并行拓扑排序组件的原理图。从图中可知,在本实施例中,调度主节点不参与任何具体业务,而只纯粹进行DAG中各个任务的入度更新和整体的任务调度,即循环执行以下步骤:
1.将有向无环图中零入度的任务放入待执行队列;
2.从完成队列中获取已执行完成的任务;
3.将已执行完成的任务从有向无环图中删除,并更新有向无环图中与已执行完成的任务关联的每个任务的入度。
其中,调度主节点在执行上述循环逻辑之前,需要先初始化有向无环图,对有向无环图进行环路侦测,并在确定有向无环图中不含环路后,再整理以及获取有向无环图中初始的零入度的任务。
从图2中可知,各个工作子节点不参与DAG的任何更新,只是专注于与待执行队列和完成队列进行交互,即循环执行以下步骤:
(1)从待执行队列中获取任务;
(2)执行获得的任务;
(3)将执行完成的任务放入完成队列。
其中,待执行任务可以根据实际业务场景进行高度定制。除了工作子节点会与两个消息队列进行简易交互外,整体调度框架不会侵入具体业务逻辑。
具体地,各个工作子节点可以采用先来先得的方式来抢夺待执行队列中的任务。
在本实施例中,使用简洁清晰的思路解决了并行拓扑排序在环路侦测、任务分配和收集、状态同步等方面的难题,算法效率高,健壮性强。其中,通过对原生的Kahn算法进行扩展,可以在网络拓扑的复杂度越来越高,出入度也越来越稠密的情况下实现高效率地任务调度。其中,通过用一主多从的架构将任务调度的操作和任务处理的操作分离,使任务调度的操作和任务处理的操作可以并行执行,相比原本串行计算的方式,能够提高求解问题的速度和扩大求解问题的规模,进而实现高效率的任务调度;此外,用两个消息队列来分别存放待执行的任务和执行完成的任务,可以避免出现调度过早结束的情况,以及可以提高并发控制不当、状态更新不及时等情况下的容错率。
此外,本实施例提供的并行拓扑排序组件也是一个轻量级的独立调度模块,与业务系统对接简单,耦合低,侵入少,并且还可采用多种计算模式(多线程、多机分布式和消息中间件等)进行弹性并行计算,能够适应各种硬件资源下的个性化配置。
在一个实施例中,调度主节点,还用于获取运行过程中的实时工作量信息和计算资源信息,根据实时工作量信息和计算资源信息对目标对象进行弹性扩容或者缩容。其中,目标对象是指上述多个工作子节点、待执行队列和完成队列中的一项或多项。
在本实施例中,调度主节点可以根据运行过程中的实时工作量和计算资源(如CPU、内存等单元的使用率)来对目标对象进行弹性扩容或者缩容,以实现对计算机资源的充分利用。比如,当工作量较大,调度主节点可以申请更多计算资源来实现工作子节点的扩容,从而提升队列的吞吐能力,反之,当工作量较小,调度主节点可以减小工作子节点的计算资源,以实现工作子节点的缩容,从而实现对计算资源的充分利用。
在一个实施例中,调度主节点,还用于在停止执行任务调度循环逻辑时,以异步的方式向待执行队列发送终止命令;相应地,各工作子节点,还用于在执行任务处理循环逻辑时,若从待执行队列中获得终止命令,则停止执行任务处理循环逻辑。
在本实施例中,各工作子节点在接收到终止命令之前,会持续执行任务处理循环逻辑。
在一个实施例中,上述的任务处理循环逻辑还包括:基于预设模式处理执行失败或执行超时的任务;预设模式包括重试模式、越控模式、熔断退出模式和超时退出模式中的任一项。
在本实施例中,支持多种预设模式来进行处理执行失败或者超时的任务,从而能够实现细腻的个性化业务需求。
在一个实施例中,调度主节点,还用于通过restful接口向目标业务系统提供调度主节点执行任务调度循环逻辑时的实时状态信息和/或各工作子节点在执行任务处理循环逻辑时的实时状态信息。
在本实施例中,可以通过restful接口将运行实时状态信息提供给目标业务系统进行展示或监控,方便目标业务系统了解当前任务调度的具体情况。
基于相同的发明构思,本申请还提供了一种并行拓扑调度方法,上述方法可应用于上述实施例中提供的并行拓扑调度组件;在一个实施例中,上述方法包括:
调度主节点初始化有向无环图中所有任务的入度,将当前入度为0的任务加入待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;其中,任务调度循环逻辑包括:实时获取完成队列的头部任务,头部任务指位于完成队列的头部的任务,如果获取不到,则自旋等待,如果能获取到,则取出头部任务,并对有向无环图中与头部任务相邻的每个下游任务的入度进行递减,如果有任一下游任务的最新入度为0,则将其加入待执行队列,并对在途任务数进行累加;
在调度主节点执行任务调度循环逻辑时,各工作子节点并行执行任务处理循环逻辑;其中,任务处理循环逻辑包括:从待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入完成队列。
在一个实施例中,上述方法还包括:调度主节点获取运行过程中的实时工作量信息和计算资源信息,根据实时工作量信息和计算资源信息对目标对象进行弹性扩容或者缩容;目标对象是指上述多个工作子节点、待执行队列和完成队列中的一项或多项。
在一个实施例中,调度主节点实时获取待执行队列的队列长度和完成队列的队列长度之前还包括:调度主节点初始化有向无环图,对有向无环图进行环路侦测,并在确定有向无环图中不含环路后,执行上述初始化有向无环图中所有任务的入度的步骤。
在一个实施例中,各工作子节点从待执行队列中获取任务时,具体是以先到先得的方式抢夺待执行队列中的任务。
在一个实施例中,上述方法还包括:调度主节点在停止执行任务调度循环逻辑时,以异步的方式向待执行队列发送终止命令。相应地,各工作子节点在执行任务处理循环逻辑时,若从待执行队列中获得终止命令,则停止执行任务处理循环逻辑。
在一个实施例中,上述任务处理循环逻辑还包括:基于预设模式处理执行失败或执行超时的任务;预设模式包括重试模式、越控模式、熔断退出模式和超时退出模式中的任一项。
在一个实施例中,上述方法还包括:通过restful接口向目标业务系统提供调度主节点执行任务调度循环逻辑时的实时状态信息和/或各工作子节点在执行任务处理循环逻辑时的实时状态信息。
关于并行拓扑调度方法的具体限定可以参见上文中对于并行拓扑调度组件的限定,在此不再赘述。
基于相同的发明构思,本申请还提供了一种任务调度方法,上述方法可以应用于上述实施例提供的并行拓扑调度组件中的调度主节点;在一个实施例中,如图3所示,上述方法包括:
S110:初始化有向无环图中所有任务的入度,将当前入度为0的任务加入待执行队列,并且根据当前入度为0的任务数初始化在途任务数。
S120:当在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑。
其中,任务调度循环逻辑包括:实时获取完成队列的头部任务,头部任务指位于完成队列的头部的任务;如果获取不到,则自旋等待;如果能获取到,则取出头部任务,并对有向无环图中与头部任务相邻的每个下游任务的入度进行递减,如果有任一下游任务的最新入度为0,则将其加入待执行队列,并对在途任务数进行累加。
在一个实施例中,上述方法还包括:获取运行过程中的实时工作量信息和计算资源信息,根据实时工作量信息和计算资源信息对目标对象进行弹性扩容或者缩容;目标对象是指上述多个工作子节点、待执行队列和完成队列中的一项或多项。
在一个实施例中,上述方法还包括:初始化有向无环图,对有向无环图进行环路侦测,并在确定有向无环图中不含环路后,执行上述初始化有向无环图中所有任务的入度的步骤。
在一个实施例中,上述方法还包括:在停止执行任务调度循环逻辑时,以异步的方式向待执行队列发送终止命令,以使各工作子节点在从待执行队列中获得终止命令,停止执行任务处理循环逻辑。
在一个实施例中,上述方法还包括:通过restful接口向目标业务系统提供调度主节点执行任务调度循环逻辑时的实时状态信息和/或各工作子节点在执行任务处理循环逻辑时的实时状态信息。
关于任务调度方法的具体限定可以参见上文中对于并行拓扑调度组件的限定,在此不再赘述。
基于相同的发明构思,本申请还提供了一种任务处理方法,上述方法可以应用于上述实施例提供的并行拓扑调度组件中的任一工作子节点;在一个实施例中,如图4所示,上述方法包括:
S210:监听并行拓扑调度组件中的待执行队列。
S220:当待执行队列中包含任务时,从待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入并行拓扑调度组件中的完成队列。
在一个实施例中,从待执行队列中获取任务,包括:以先到先得的方式抢夺待执行队列中的任务。
在一个实施例中,上述方法还包括:在执行任务处理循环逻辑时,若从待执行队列中获得来自调度主节点的终止命令,则停止执行任务处理循环逻辑。
在一个实施例中,任务处理循环逻辑还包括:基于预设模式处理执行失败或执行超时的任务;预设模式包括重试模式、越控模式、熔断退出模式和超时退出模式中的任一项。
关于任务处理方法的具体限定可以参见上文中对于并行拓扑调度组件的限定,在此不再赘述。
需要说明的是,关于上述任何实施例中提供的并行拓扑调度方法、任务调度方法或任务处理方法所包括的各个步骤,除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,这些步骤中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图5所示。
该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储有向无环图等数据,具体存储的数据还可以参见上述方法实施例中的限定。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述实施例提供的任务调度方法或任务处理方法中的步骤。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例提供的任务调度方法或任务处理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例提供的任务调度方法或任务处理方法中的步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)、直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种并行拓扑调度组件,其特征在于,所述组件包括调度主节点、多个工作子节点、待执行队列和完成队列;
所述调度主节点,初始化有向无环图中所有任务的入度,将当前入度为0的任务加入所述待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当所述在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;所述在途任务数是所述待执行队列和所述完成队列的队列长度的入队计数差值;其中,所述任务调度循环逻辑包括:实时获取所述完成队列的头部任务,所述头部任务指位于所述完成队列的头部的任务,如果获取不到,则自旋等待,如果能获取到,则取出所述头部任务,并对所述有向无环图中与所述头部任务相邻的每个下游任务的入度进行递减,如果有任一所述下游任务的最新入度为0,则将其加入所述待执行队列,并对所述在途任务数进行累加;
各所述工作子节点,用于在所述调度主节点执行所述任务调度循环逻辑时,并行执行任务处理循环逻辑;其中,所述任务处理循环逻辑包括:从所述待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入所述完成队列。
2.如权利要求1所述的组件,其特征在于,所述调度主节点,还用于获取运行过程中的实时工作量信息和计算资源信息,根据所述实时工作量信息和所述计算资源信息对目标对象进行弹性扩容或者缩容。
3.如权利要求1或2所述的组件,其特征在于,所述调度主节点,还用于初始化所述有向无环图,对所述有向无环图进行前置静态环路侦测,并在确定所述有向无环图中不含环路后,执行所述初始化有向无环图中所有任务的入度的步骤。
4.如权利要求1所述的组件,其特征在于,各所述工作子节点从所述待执行队列中获取任务时,以先到先得的方式抢夺所述待执行队列中的任务。
5.如权利要求1或4所述的组件,其特征在于,所述调度主节点,还用于在停止执行任务调度循环逻辑时,以异步的方式向所述待执行队列发送终止命令;
各所述工作子节点,还用于在执行所述任务处理循环逻辑时,若从所述待执行队列中获得所述终止命令,则停止执行所述任务处理循环逻辑。
6.如权利要求1所述的组件,其特征在于,所述任务处理循环逻辑还包括:
基于预设模式处理执行失败或执行超时的任务;所述预设模式包括重试模式、越控模式、熔断退出模式和超时退出模式中的任一项。
7.如权利要求1或6所述的组件,其特征在于,所述调度主节点,还用于通过restful接口向目标业务系统提供所述调度主节点执行所述任务调度循环逻辑时的实时状态信息和/或各所述工作子节点在执行所述任务处理循环逻辑时的实时状态信息。
8.一种并行拓扑调度方法,其特征在于,应用于如权利要求1-7任一项所述的并行拓扑调度组件;所述方法包括:
所述调度主节点初始化有向无环图中所有任务的入度,将当前入度为0的任务加入所述待执行队列,并且根据当前入度为0的任务数初始化在途任务数,当所述在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;
所述任务调度循环逻辑包括:实时获取所述完成队列的头部任务,所述头部任务指位于所述完成队列的头部的任务,如果获取不到,则自旋等待,如果能获取到,则取出所述头部任务,并对所述有向无环图中与所述头部任务相邻的每个下游任务的入度进行递减,如果有任一所述下游任务的最新入度为0,则将其加入所述待执行队列,并对所述在途任务数进行累加;
在所述调度主节点执行所述任务调度循环逻辑时,各所述工作子节点并行执行任务处理循环逻辑;
所述任务处理循环逻辑包括:从所述待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入所述完成队列。
9.一种任务调度方法,其特征在于,应用于如权利要求1-7任一项所述的并行拓扑调度组件中的调度主节点;所述方法包括:
初始化有向无环图中所有任务的入度,将当前入度为0的任务加入所述待执行队列,并且根据当前入度为0的任务数初始化在途任务数;
当所述在途任务数大于0时,执行基于Kahn算法的任务调度循环逻辑;
所述任务调度循环逻辑包括:
实时获取所述完成队列的头部任务,所述头部任务指位于所述完成队列的头部的任务;
如果获取不到,则自旋等待;
如果能获取到,则取出所述头部任务,并对所述有向无环图中与所述头部任务相邻的每个下游任务的入度进行递减,如果有任一所述下游任务的最新入度为0,则将其加入所述待执行队列,并对所述在途任务数进行累加。
10.一种任务处理方法,其特征在于,应用于如权利要求1-7任一项所述的并行拓扑调度组件中的任一工作子节点;所述方法包括:
监听所述并行拓扑调度组件中的待执行队列;
当所述待执行队列中包含任务时,从所述待执行队列中获取任务,执行获得的任务,并将执行完成的任务放入所述并行拓扑调度组件中的完成队列。
CN202211098026.5A 2022-09-08 2022-09-08 并行拓扑调度组件及方法、任务调度方法和任务处理方法 Active CN116302381B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211098026.5A CN116302381B (zh) 2022-09-08 2022-09-08 并行拓扑调度组件及方法、任务调度方法和任务处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211098026.5A CN116302381B (zh) 2022-09-08 2022-09-08 并行拓扑调度组件及方法、任务调度方法和任务处理方法

Publications (2)

Publication Number Publication Date
CN116302381A CN116302381A (zh) 2023-06-23
CN116302381B true CN116302381B (zh) 2024-02-06

Family

ID=86811873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211098026.5A Active CN116302381B (zh) 2022-09-08 2022-09-08 并行拓扑调度组件及方法、任务调度方法和任务处理方法

Country Status (1)

Country Link
CN (1) CN116302381B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117610320B (zh) * 2024-01-23 2024-04-02 中国人民解放军国防科技大学 有向无环图工作流引擎循环调度方法、装置和设备
CN117610325B (zh) * 2024-01-24 2024-04-05 中国人民解放军国防科技大学 基于分布式的优化设计节点调度方法、系统和设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109523187A (zh) * 2018-11-27 2019-03-26 北京字节跳动网络技术有限公司 任务调度方法、装置和设备
CN109977497A (zh) * 2019-03-10 2019-07-05 西安电子科技大学 基于cpu加速通用雷达信号处理流程的并行方法
WO2020119307A1 (zh) * 2018-12-14 2020-06-18 深圳云天励飞技术有限公司 一种基于dsp的任务调度方法及装置
CN112214289A (zh) * 2019-07-11 2021-01-12 腾讯科技(深圳)有限公司 一种任务调度方法、装置及服务器、存储介质
CN112948096A (zh) * 2021-04-07 2021-06-11 中国工商银行股份有限公司 一种批量调度方法、装置和设备
CN113535367A (zh) * 2021-09-07 2021-10-22 北京达佳互联信息技术有限公司 任务调度方法及相关装置
CN113535363A (zh) * 2021-07-28 2021-10-22 重庆度小满优扬科技有限公司 任务调用方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924976B2 (en) * 2011-08-26 2014-12-30 Knu-Industry Cooperation Foundation Task scheduling method and apparatus

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109523187A (zh) * 2018-11-27 2019-03-26 北京字节跳动网络技术有限公司 任务调度方法、装置和设备
WO2020119307A1 (zh) * 2018-12-14 2020-06-18 深圳云天励飞技术有限公司 一种基于dsp的任务调度方法及装置
CN109977497A (zh) * 2019-03-10 2019-07-05 西安电子科技大学 基于cpu加速通用雷达信号处理流程的并行方法
CN112214289A (zh) * 2019-07-11 2021-01-12 腾讯科技(深圳)有限公司 一种任务调度方法、装置及服务器、存储介质
CN112948096A (zh) * 2021-04-07 2021-06-11 中国工商银行股份有限公司 一种批量调度方法、装置和设备
CN113535363A (zh) * 2021-07-28 2021-10-22 重庆度小满优扬科技有限公司 任务调用方法、装置、电子设备及存储介质
CN113535367A (zh) * 2021-09-07 2021-10-22 北京达佳互联信息技术有限公司 任务调度方法及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
异构计算环境下基于优先队列划分的调度算法;王兰;张龙信;满君丰;周立前;李肯立;;小型微型计算机系统(02);全文 *

Also Published As

Publication number Publication date
CN116302381A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
CN116302381B (zh) 并行拓扑调度组件及方法、任务调度方法和任务处理方法
Bril et al. Worst-case response time analysis of real-time tasks under fixed-priority scheduling with deferred preemption
JP6469083B2 (ja) コンピューティングシステムによって実行されるタスクの制御
CN111625331B (zh) 任务调度方法、装置、平台、服务器及存储介质
CN110233802B (zh) 一种构建一主链多侧链的区块链架构的方法
RU2603497C2 (ru) Способ управления исполнением задачи в компьютерной системе
Jiang et al. Suspension-based locking protocols for parallel real-time tasks
CN116302420A (zh) 并发调度方法、装置、计算机设备及计算机可读存储介质
CN112612604B (zh) 基于Actor模型的任务调度方法、装置
CN111290868B (zh) 任务处理方法、装置和系统以及流程引擎
KR20160100377A (ko) 실시간 태스크 시퀀스 플랜을 구성하고 실행하는 방법
Singh et al. Mixed criticality scheduling of probabilistic real-time systems
CN116542334B (zh) 基于Web浏览器的深度神经网络推理调度方法和装置
CN113360189B (zh) 适用于流处理的异步优化方法、系统、装置和可读介质
CN110187979B (zh) 链路消息处理方法、装置、存储介质及计算机设备
Hilbrich et al. Modeling Quality Aspects: Real-Time
Nikiforov et al. Multi-Partite Graphs and Verification of Software Applications for Real-Time Systems
CN114461377A (zh) 一种线程资源配置方法、装置及计算机可读存储介质
CN117992226A (zh) 模板化作业运维方法、装置和设备
CN110716987A (zh) 一种同步任务异步执行的方法和调度系统
CN117149378A (zh) 智能汽车操作系统的任务调度方法、装置、设备及介质
CN116737331A (zh) 一种智能化任务流编排方法和平台
CN115168060A (zh) 神经网络处理器npu调度方法和计算机存储介质
Garousi et al. a unified approach for predictability analysis of real-time systems using UML-based control flow information
CN117632432A (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
GR01 Patent grant
GR01 Patent grant