CN116737331A - 一种智能化任务流编排方法和平台 - Google Patents

一种智能化任务流编排方法和平台 Download PDF

Info

Publication number
CN116737331A
CN116737331A CN202310317560.9A CN202310317560A CN116737331A CN 116737331 A CN116737331 A CN 116737331A CN 202310317560 A CN202310317560 A CN 202310317560A CN 116737331 A CN116737331 A CN 116737331A
Authority
CN
China
Prior art keywords
task
queue
execution
flow
tasks
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.)
Pending
Application number
CN202310317560.9A
Other languages
English (en)
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.)
Lianyang Guorong Beijing Technology Co ltd
Original Assignee
Lianyang Guorong Beijing 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 Lianyang Guorong Beijing Technology Co ltd filed Critical Lianyang Guorong Beijing Technology Co ltd
Priority to CN202310317560.9A priority Critical patent/CN116737331A/zh
Publication of CN116737331A publication Critical patent/CN116737331A/zh
Pending legal-status Critical Current

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
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种智能化任务流编排方法和平台,本发明任务流编排方法具备高可用和高可靠性,减少了因为网络或硬件故障问题导致任务流执行失败的可能性,在集群计算资源使用较少时自动加大任务资源,提升资源利用效率的同时减少任务流执行的耗时,避免在有大量任务正在执行,集群计算资源已被占满时继续执行新的任务,防止任务资源相互挤占甚至导致资源死锁的情况,进一步提升任务流执行的稳定性;通过合理的优先级管理,任务流编排平台会自动识别耗时长的任务并尽量优先执行,避免出现木桶效应,进一步提升资源利用效率和任务流执行的耗时。支持通过可视化页面和Shell命令行多种方式提交和管理任务流,降低使用者的操作门槛,减少人工成本。

Description

一种智能化任务流编排方法和平台
技术领域
本申请涉及智能化任务流编排技术领域,特别是涉及一种智能化任务流编排方法和平台。
背景技术
企业在生产和大数据业务处理时往往需要定期执行大量批处理任务,并且任务之间往往存在先后依赖关系,因此我们可以将一组存在依赖关系的任务称作任务流。ApacheDolphinScheduler和ApacheAirflow都是业界常用的任务流调度工具,它们都是将任务流抽象为一张有向无环图(DAG),任务会按照DAG的节点顺序依次执行,使用起来直观且方便。
现有任务流调度工具存在以下问题:
在集群资源使用率较低时,使用者往往希望当前的任务能利用更多的计算资源尽快跑完任务,而DolphinScheduler和Airflow中的任务资源是固定死的,无法根据资源使用情况自适应调整;
当集群中任务数量太多时,继续提交任务只会导致任务资源相互挤占,影响执行效率。DolphinScheduler和Airflow都只能根据DAG定义的任务流程按顺序提交任务,无法做到限流;
DolphinScheduler和Airflow都能支持任务粒度的优先级控制,但是当优先级相同时,任务执行的顺序往往时随机的,而用户往往希望耗时长的任务优先执行,避免耗时长任务到最后才开始执行,徒增任务流的总耗时。
大型任务流难以应对:企业的生产任务流往往会有成百上千个任务节点,如果还是通过web页面上对任务进行管理,非常容易出错,增加人工成本。同时大型的任务流也更容易出现集群任务资源使用率不高需要任务资源自适应调整,或者是提交任务过多需要限流的情况。
发明内容
基于此,针对上述技术问题,提供一种智能化任务流编排方法和平台以解决现有任务流调度工具存在无法根据资源使用情况自适应调整、当集群中任务数量太多时无法做到限流和大型任务流难以应对的问题。
第一方面,一种智能化任务流编排方法,所述方法包括:
接收用户发送的目标任务流以及所述目标任务流配置;
根据所述目标任务流配置,对所述目标任务流进行解析翻译,生成作业配置;
根据所述作业配置对所述目标任务流进行初始化,并创建所述目标任务流对应的调度器;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行初始化;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,并实时生成所述目标任务流处理状态;
接收用户的查询输入,展示所述目标任务流处理状态。
上述方案中,可选地,所述接收用户发送的目标任务流以及所述目标任务流配置,包括:
通过命令行客户端或web客户端接收用户发送的目标任务流以及所述目标任务流配置,其中,所述目标任务流包括创建、管理、提交和重试任务,所述目标任务流配置包括建立所述目标任务流中每个任务的处理优先级。
上述方案中,进一步可选地,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,包括:
所述任务池检查包括:遍历任务池中的所有待提交任务,若任务满足提交条件,则将所述任务提交到任务队列;
所述任务队列检查包括:检查所述任务队列队头的任务是否满足执行条件,若满足则将任务提交到执行器启动执行,所述调度器待到实例开始执行后再继续下面的流程,若在实例开始执行之前所述任务实例状态异常,则将所述任务提交至重试队列等待重新执行,若任务重试次数超过预设次数则所述任务处理失败;
所述执行器检查包括:检查所述执行器中完成的任务状态,若任务失败,则重新将所述任务延迟提交到任务队列重新执行,若任务重试次数超过预设次数则所述任务处理失败;
所述重试队列检查包括:检查所述重试队列的队头是否存在任务,若存在所述任务重新提交到任务队列。
上述方案中,进一步可选地,所述任务满足提交条件包括:上游节点依赖条件或自定义条件;其中,所述上游节点依赖条件为当前任务依赖的上游任务节点执行成功时,则满足提交条件;所述自定义条件为用户通过插件化的方式自定义提交条件;
所述任务满足执行条件包括:集群可用资源条件或自定义条件;其中,所述集群可用资源超过任务配置的阈值时,满足执行条件;
所述自定义条件为用户通过插件化的方式自定义执行条件。
上述方案中,进一步可选地,所述根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流中,所述优先级控制方案包括:所述任务队列负责所有待执行任务的优先级管理,具体为,用户为每个任务配置优先级和任务估算耗时,并根据所述优先级和任务估算耗时生成优先级控制方案;
若未配置,调度器会为任务设置默认优先级。
上述方案中,进一步可选地,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,之后还包括:重试控制,重试队列负责所有待重试任务的管理,提交至重试队列的任务只有在等待预设时间后被处理,实现所述任务的重试控制。
上述方案中,进一步可选地,所述目标任务流处理状态包括:
未执行状态,当任务刚初始化,还未开始调度;
等待中状态,任务在任务池中;
准备执行状态,任务在任务队列中,已满足提交条件检查;
运行中状态,任务在执行器中,已满足执行条件检查;
重试等待中状态,任务在重试队列中,任务出现失败但未超过预设失败次数;
成功状态,任务处理成功;
失败状态:任务出现失败并且超过了失败次数阈值
强制停止状态。
第二方面,一种智能化任务流编排平台,所述平台包括:
客户端:用于通过命令行或在web页面上与任务流编排平台进行消息通信和交互,进行创建、管理、提交、重试任务流,查询任务执行情况,分析执行结果操作;
解释器:用于负责将用户配置的任务流配置翻译为供执行层执行的作业配置;将作业的执行信息翻译为可视化展示信息;
管理器:用于接收作业配置信息,并根据所述作业配置信息初始化所有待执行的任务到任务池,启动调度器开始执行;作业唯一ID找到对应的调度器、任务队列和任务池,获取作业的执行情况;
调度器:用于负责任务的整体编排调度;
任务池:用于负责存放所有完成初始化但还未满足提交条件的任务;
任务队列:用于存放所有满足提交条件的任务;
执行器:用于对任务队列中满足执行条件的任务进行任务的执行和运行时管理,并记录所有运行过的任务实例信息;
重试队列:用于存放所有任务失败但未超过预设重试次数的任务。
第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收用户发送的目标任务流以及所述目标任务流配置;
根据所述目标任务流配置,对所述目标任务流进行解析翻译,生成作业配置;
根据所述作业配置对所述目标任务流进行初始化,并创建所述目标任务流对应的调度器;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行初始化;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,并实时生成所述目标任务流处理状态;
接收用户的查询输入,展示所述目标任务流处理状态。
第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收用户发送的目标任务流以及所述目标任务流配置;
根据所述目标任务流配置,对所述目标任务流进行解析翻译,生成作业配置;
根据所述作业配置对所述目标任务流进行初始化,并创建所述目标任务流对应的调度器;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行初始化;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,并实时生成所述目标任务流处理状态;
接收用户的查询输入,展示所述目标任务流处理状态。
本发明至少具有以下有益效果:
本发明基于对现有技术问题的进一步分析和研究,认识到现有任务流调度工具存在无法根据资源使用情况自适应调整、当集群中任务数量太多时无法做到限流和大型任务流难以应对的问题。本发明通过接收用户发送的目标任务流以及所述目标任务流配置,根据所述目标任务流配置,对所述目标任务流进行解析翻译,生成作业配置,根据所述作业配置对所述目标任务流进行初始化,并创建所述目标任务流对应的调度器,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行初始化,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,并实时生成所述目标任务流处理状态,接收用户的查询输入,展示所述目标任务流处理状态。
本发明任务流编排方法具备高可用和高可靠性,通过多实例的部署,极大提升了任务流执行的稳定性,减少了因为网络或硬件故障问题导致任务流执行失败的可能性;通过资源自适应,在集群计算资源使用较少时自动加大任务资源,提升资源利用效率的同时减少任务流执行的耗时;通过任务限流,避免在有大量任务正在执行,集群计算资源已被占满时继续执行新的任务,防止任务资源相互挤占甚至导致资源死锁的情况,进一步提升任务流执行的稳定性;通过合理的优先级管理,任务流编排平台会自动识别耗时长的任务并尽量优先执行,避免出现木桶效应,进一步提升资源利用效率和任务流执行的耗时。支持通过可视化页面和Shell命令行多种方式提交和管理任务流,降低使用者的操作门槛,减少人工成本。
附图说明
图1为本发明一个实施例提供的智能化任务流编排方法的流程示意图;
图2为本发明一个实施例提供的智能化任务流编排平台的逻辑架构示意图;
图3为本发明一个实施例提供的智能化任务流编排方法的任务流提交流程时序图;
图4为本发明一个实施例提供的智能化任务流编排方法的调度器执行逻辑图;
图5为本发明一个实施例提供的智能化任务流编排方法的任务状态图;
图6为本发明一个实施例提供的智能化任务流编排方法的多实例部署示意图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种智能化任务流编排方法,包括以下步骤:
接收用户发送的目标任务流以及所述目标任务流配置;
根据所述目标任务流配置,对所述目标任务流进行解析翻译,生成作业配置;
根据所述作业配置对所述目标任务流进行初始化,并创建所述目标任务流对应的调度器;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行初始化;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,并实时生成所述目标任务流处理状态;
接收用户的查询输入,展示所述目标任务流处理状态。
在一个实施例中,所述接收用户发送的目标任务流以及所述目标任务流配置,包括:
通过命令行客户端或web客户端接收用户发送的目标任务流以及所述目标任务流配置,其中,所述目标任务流包括创建、管理、提交和重试任务,所述目标任务流配置包括建立所述目标任务流中每个任务的处理优先级。
在一个实施例中,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,包括:
所述任务池检查包括:遍历任务池中的所有待提交任务,若任务满足提交条件,则将所述任务提交到任务队列;
所述任务队列检查包括:检查所述任务队列队头的任务是否满足执行条件,若满足则将任务提交到执行器启动执行,所述调度器待到实例开始执行后再继续下面的流程,若在实例开始执行之前所述任务实例状态异常,则将所述任务提交至重试队列等待重新执行,若任务重试次数超过预设次数则所述任务处理失败;
所述执行器检查包括:检查所述执行器中完成的任务状态,若任务失败,则重新将所述任务延迟提交到任务队列重新执行,若任务重试次数超过预设次数则所述任务处理失败;
所述重试队列检查包括:检查所述重试队列的队头是否存在任务,若存在所述任务重新提交到任务队列。
在一个实施例中,所述任务满足提交条件包括:上游节点依赖条件或自定义条件;其中,所述上游节点依赖条件为当前任务依赖的上游任务节点执行成功时,则满足提交条件;所述自定义条件为用户通过插件化的方式自定义提交条件;
所述任务满足执行条件包括:集群可用资源条件或自定义条件;其中,所述集群可用资源超过任务配置的阈值时,满足执行条件;
所述自定义条件为用户通过插件化的方式自定义执行条件。
在一个实施例中,所述根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流中,所述优先级控制方案包括:所述任务队列负责所有待执行任务的优先级管理,具体为,用户为每个任务配置优先级和任务估算耗时,并根据所述优先级和任务估算耗时生成优先级控制方案;
若未配置,调度器会为任务设置默认优先级。
在一个实施例中,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,之后还包括:重试控制,重试队列负责所有待重试任务的管理,提交至重试队列的任务只有在等待预设时间后被处理,实现所述任务的重试控制。
在一个实施例中,所述目标任务流处理状态包括:
未执行状态,当任务刚初始化,还未开始调度;
等待中状态,任务在任务池中;
准备执行状态,任务在任务队列中,已满足提交条件检查;
运行中状态,任务在执行器中,已满足执行条件检查;
重试等待中状态,任务在重试队列中,任务出现失败但未超过预设失败次数;
成功状态,任务处理成功;
失败状态:任务出现失败并且超过了失败次数阈值
强制停止状态。
本实施例中,任务流编排方法具备高可用和高可靠性,通过多实例的部署,极大提升了任务流执行的稳定性,减少了因为网络或硬件故障问题导致任务流执行失败的可能性;通过资源自适应,在集群计算资源使用较少时自动加大任务资源,提升资源利用效率的同时减少任务流执行的耗时;通过任务限流,避免在有大量任务正在执行,集群计算资源已被占满时继续执行新的任务,防止任务资源相互挤占甚至导致资源死锁的情况,进一步提升任务流执行的稳定性;通过合理的优先级管理,任务流编排平台会自动识别耗时长的任务并尽量优先执行,避免出现木桶效应,进一步提升资源利用效率和任务流执行的耗时。支持通过可视化页面和Shell命令行多种方式提交和管理任务流,降低使用者的操作门槛,减少人工成本。
在一个实施例中,附图2展示了任务流编排平台的逻辑架构图,发明内容部分已经对平台的各个角色进行了介绍。每个任务流编排平台的实例都部署在一个独立的节点上,每个节点内部都包含附图1中列举的所有角色。
在一个实施例中,附图3展示了任务流执行的完整流程,按照顺序介绍如下:
用户通过客户端提交任务流配置,启动执行;
解释器在接收到任务流配置后,对其进行解析翻译,生成可执行的作业配置;
解释器将作业配置继续下发到执行层的管理器,管理器接收到作业配置后,根据配置进行初始化,并创建该任务对应的调度器;
调度器创建后对任务池、任务队列、执行器和重试队列进行初始化;
调度器按照附图4的流程开启任务编排调度;
所有任务完成后,调度器-管理器-解释器依次返回任务结果;
在一个实施例中,附图4展示了调度器的完整执行逻辑。可分为四个大步骤:
1)任务池检查:遍历任务池中的所有待提交任务,如果任务符合可提交条件,则将任务提交到任务队列,如果任务依赖的上游任务失败,那么此任务也跟着失败;
2)任务队列检查:检查任务队列队头的任务是否满足可执行条件,如果满足则将任务提交到执行器启动执行,调度器会等待一段时间直到实例正式开始执行后再继续下面的流程,如果期间任务实例状态异常,则将任务提交至重试队列等待重新执行,如果任务重试次数超过阈值则任务失败;
3)执行器检查:检查执行器中新完成的任务状态,如果任务失败了则重新将任务延迟提交到任务队列重新执行,如果任务重试次数超过阈值则任务失败;
4)重试队列检查:检查重试队列的队头是否存在任务,如果存在说明该任务已准备好重新执行,将该任务重新提交到任务队列。
当任务池、任务队列、重试队列和执行器中都没有未完成的任务时,调度器的任务结束。
在一个实施例中,所述任务可提交条件:调度器通过可提交条件检查来判断任务是否能够从任务池提交到任务队列。可提交条件支持以下几种:
上游节点依赖:当前任务依赖的上游任务节点执行成功时,满足可提交条件;
自定义条件:用户可通过插件化的方式自定义可提交条件,例如当hive表指定分区创建成功,或者hdfs指定文件或目录创建成功时,满足可提交条件。
在一个实施例中,所述任务可执行条件:调度器通过可执行条件检查来判断任务是否能够从任务队列提交到执行器执行。可提交条件支持以下几种:
集群可用资源:当集群可用资源(例如核心数,内存大小)超过任务配置的阈值时,满足可执行条件,否则就会继续等待执行。任务编排平台就是基于该方式实现任务限流的功能。
自定义条件:用户可通过插件化的方式自定义可执行条件。
在一个实施例中,所述优先级控制:任务队列负责所有待执行任务的优先级管理,其本质是一个优先队列,优先级越高,耗时越长的任务越靠近队列头。
用户可以为每个任务配置优先级和任务估算耗时,若未配置,调度器会为任务设置默认优先级,若该任务曾经执行过,那么会将上次任务执行的耗时设为默认的任务估算耗时。
在一个实施例中,所述重试控制:重试队列负责所有待重试任务的管理,其本质是一个延时队列,提交至重试队列的任务只有在等待一段时间之后,才能重新被查询到。从而实现任务的重试控制。
在一个实施例中,所述任务状态附图5展示了任务的状态图,有以下几种UNSTARTED:未执行,当任务刚初始化,还未开始调度时,处于该状态;
WAITING:等待中,此时任务在任务池中;
SUBMITTING:准备执行,此时任务在任务队列中,已满足可提交条件检查;
RUNNING:运行中,此时任务在执行器中,以满足可执行条件检查;
RETRY_WAITING:重试等待中,此时任务在重试队列中,任务出现失败但未超过失败次数阈值;
SUCCESS:成功
FAILED:任务出现失败并且超过了失败次数阈值
KILLED:强制停止
在一个实施例中,所述高可用实现:附图6展示了任务流编排平台的高可用架构,采用多实例的部署方式,每个实例都分别部署在不同的节点上。
各个实例之间通过zookeeper选举出一个主实例,其他节点为备用实例,所有的任务流编排调度都是在主实例中执行。由于任务流编排平台的实例本身是无状态的,所有的状态数据均保存在关系型数据库中。若主实例故障,则所有备用节点中选举出一个新的主实例,新的主实例能立即从数据库中获取到所需的任务流配置信息并继续进行任务流的编排调度
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种智能化任务流编排平台,包括以下程序模块:
客户端:用于通过命令行或在web页面上与任务流编排平台进行消息通信和交互,进行创建、管理、提交、重试任务流,查询任务执行情况,分析执行结果操作;
解释器:用于负责将用户配置的任务流配置翻译为供执行层执行的作业配置;将作业的执行信息翻译为可视化展示信息;
管理器:用于接收作业配置信息,并根据所述作业配置信息初始化所有待执行的任务到任务池,启动调度器开始执行;作业唯一ID找到对应的调度器、任务队列和任务池,获取作业的执行情况;
调度器:用于负责任务的整体编排调度;
任务池:用于负责存放所有完成初始化但还未满足提交条件的任务;
任务队列:用于存放所有满足提交条件的任务;
执行器:用于对任务队列中满足执行条件的任务进行任务的执行和运行时管理,并记录所有运行过的任务实例信息;
重试队列:用于存放所有任务失败但未超过预设重试次数的任务。
在一个实施例中,任务流编排平台内部包含客户端,解释器,管理器,调度器,任务池,任务队列,重试队列,执行器这几种模块,其中:
客户端:客户端分为命令行客户端和web客户端,用户可通过命令行或在web页面上与任务流编排平台进行消息通信和交互。来进行创建、管理、提交、重试任务流,查询任务执行情况,分析执行结果等等的操作。
解释器:解释器是对接应用层和执行层的桥梁,在提交任务流时负责将用户配置的任务流配置翻译为可供执行层执行的作业配置。在查询任务执行情况时,解释器会将作业的执行信息翻译为对用户友好的可视化展示信息。
管理器:提交任务流时,管理器会接收来自应用层的作业配置信息,并根据作业配置初始化所有要执行的任务到任务池,完成初始化后,启动调度器开始执行。查询任务流执行情况时,管理器会作业唯一ID找到其对应的调度器、任务队列和任务池,从而获取作业的执行情况。
调度器:调度器负责任务的整体编排调度,保障在最大化利用集群计算资源的情况下实现优先级控制,自动重试,动态调整资源等等功能。
任务池:是调度器的一个子模块,负责存放所有完成初始化但还未满足可提交条件的任务。
任务队列:是调度器的一个子模块,所有满足可提交条件的任务都首先会进入到队列中等待执行,队列中的任务按优先级顺序排序,优先级最高的任务在队列头部。
执行器:是调度器的一个子模块,调度器将任务队列中满足可执行条件的任务提交给执行器来进行任务的执行和运行时管理,并记录所有运行过的任务实例信息。
重试队列:是调度器的一个子模块,所有任务失败但未超过重试次数阈值的任务都会被存放至重试队列等待重新执行,重试队列实际上是一个延迟队列,提交至此的任务只有等待一段时间才能被查询到。
在一个实施例中,任务流编排平台分为两层:
a)应用层:底层提供的接口在应用层都会被包装成符合业务需求的接口,供使用者调用,客户端和解释器都属于应用层的模块;
b)执行层:负责任务的执行和调度编排,管理器、调度器、任务池、任务流、执行器、重试队列都属于执行层的模块。
在一个实施例中,所述任务流编排平台支持多实例的部署方式,多个实例之间通过leader选举的方式保证一个任务流在同一时间只有一个实例负责执行,当实例出现故障时,备用节点可立即切换为主节点,接管任务流的执行,实现平台的台7*24小时高可用运行。
在一个实施例中,所述任务流编排平台的所有状态数据都通过关系型数据库进行存储,通过业界成熟的关系型数据库高可用方案(例如MySQL的binlog或者Postgresql的流复制技术),从而保证在实例故障出现切换时能保证状态数据不会出现丢失。
在一个实施例中,在任务流执行期间,如果集群的计算资源使用率较低,任务流编排平台可以支持在执行接下来的任务时,自动加大资源,提交任务执行效率。
在一个实施例中,在任务流执行期间,如果同一时间有大量任务需要执行,任务流编排平台会自动根据优先级进行限流,防止大量任务在集群中执行导致出现资源死锁的问题。
在一个实施例中,所述优先级管理:用户可以为每个任务配置优先级,优先级高的任务会优先执行,当有多个任务优先级相同时,任务流编排平台会判断各个任务所需的执行时间,耗时长的任务会优先执行,防止任务流执行到最后只有少数几个耗时长的任务在运行,无法完全利用集群的计算资源。
在一个实施例中,所述多种任务触发方式:任务流中的任务不仅仅可以依赖上游任务节点的执行情况,也可以自定义任务触发方式,例如监听表分区是否存在,或者文件是否创建等等,
本实施例中,任务流编排平台具备高可用和高可靠性,通过多实例的部署,极大提升了任务流执行的稳定性,减少了因为网络或硬件故障问题导致任务流执行失败的可能性;
通过资源自适应,在集群计算资源使用较少时自动加大任务资源,提升资源利用效率的同时减少任务流执行的耗时;
通过任务限流,避免在有大量任务正在执行,集群计算资源已被占满时继续执行新的任务,防止任务资源相互挤占甚至导致资源死锁的情况,进一步提升任务流执行的稳定性;
通过合理的优先级管理,任务流编排平台会自动识别耗时长的任务并尽量优先执行,避免出现木桶效应,进一步提升资源利用效率和任务流执行的耗时。
支持通过可视化页面和Shell命令行多种方式提交和管理任务流,降低使用者的操作门槛,减少人工成本。
关于智能化任务流编排平台的具体限定可以参见上文中对于智能化任务流编排方法的限定,在此不再赘述。上述智能化任务流编排平台中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过平台总线连接的处理器、存储器、通信接口、显示屏和输入平台。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作平台和计算机程序。该内存储器为非易失性存储介质中的操作平台和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种智能化任务流编排方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入平台可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,涉及上述实施例方法中的全部或部分流程。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,涉及上述实施例方法中的全部或部分流程。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random AccessMemory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandomAccessMemory,SRAM)或动态随机存取存储器(DynamicRandomAccessMemory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种智能化任务流编排方法,其特征在于,所述方法包括:
接收用户发送的目标任务流以及所述目标任务流配置;
根据所述目标任务流配置,对所述目标任务流进行解析翻译,生成作业配置;
根据所述作业配置对所述目标任务流进行初始化,并创建所述目标任务流对应的调度器;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行初始化;
所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,并实时生成所述目标任务流处理状态;
接收用户的查询输入,展示所述目标任务流处理状态。
2.根据权利要求1所述的方法,其特征在于,所述接收用户发送的目标任务流以及所述目标任务流配置,包括:
通过命令行客户端或web客户端接收用户发送的目标任务流以及所述目标任务流配置,其中,所述目标任务流包括创建、管理、提交和重试任务,所述目标任务流配置包括建立所述目标任务流中每个任务的处理优先级。
3.根据权利要求1所述的方法,其特征在于,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,包括:
所述任务池检查包括:遍历任务池中的所有待提交任务,若任务满足提交条件,则将所述任务提交到任务队列;
所述任务队列检查包括:检查所述任务队列队头的任务是否满足执行条件,若满足则将任务提交到执行器启动执行,所述调度器待到实例开始执行后再继续下面的流程,若在实例开始执行之前所述任务实例状态异常,则将所述任务提交至重试队列等待重新执行,若任务重试次数超过预设次数则所述任务处理失败;
所述执行器检查包括:检查所述执行器中完成的任务状态,若任务失败,则重新将所述任务延迟提交到任务队列重新执行,若任务重试次数超过预设次数则所述任务处理失败;
所述重试队列检查包括:检查所述重试队列的队头是否存在任务,若存在所述任务重新提交到任务队列。
4.根据权利要求3所述的方法,其特征在于,所述任务满足提交条件包括:上游节点依赖条件或自定义条件;其中,所述上游节点依赖条件为当前任务依赖的上游任务节点执行成功时,则满足提交条件;所述自定义条件为用户通过插件化的方式自定义提交条件;
所述任务满足执行条件包括:集群可用资源条件或自定义条件;其中,所述集群可用资源超过任务配置的阈值时,满足执行条件;
所述自定义条件为用户通过插件化的方式自定义执行条件。
5.根据权利要求1所述的方法,其特征在于,所述根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流中,所述优先级控制方案包括:所述任务队列负责所有待执行任务的优先级管理,具体为,用户为每个任务配置优先级和任务估算耗时,并根据所述优先级和任务估算耗时生成优先级控制方案;
若未配置,调度器会为任务设置默认优先级。
6.根据权利要求1所述的方法,其特征在于,所述调度器对所述目标任务流的任务池、任务队列、执行器和重试队列进行检查,并根据预设规则生成所述目标任务流优先级控制方案,按照所述优先级控制方案处理所述目标任务流,之后还包括:重试控制,重试队列负责所有待重试任务的管理,提交至重试队列的任务只有在等待预设时间后被处理,实现所述任务的重试控制。
7.根据权利要求1所述的方法,其特征在于,所述目标任务流处理状态包括:
未执行状态,当任务刚初始化,还未开始调度;
等待中状态,任务在任务池中;
准备执行状态,任务在任务队列中,已满足提交条件检查;
运行中状态,任务在执行器中,已满足执行条件检查;
重试等待中状态,任务在重试队列中,任务出现失败但未超过预设失败次数;
成功状态,任务处理成功;
失败状态:任务出现失败并且超过了失败次数阈值
强制停止状态。
8.一种智能化任务流编排平台,其特征在于,所述平台包括:
客户端:用于通过命令行或在web页面上与任务流编排平台进行消息通信和交互,进行创建、管理、提交、重试任务流,查询任务执行情况,分析执行结果操作;
解释器:用于负责将用户配置的任务流配置翻译为供执行层执行的作业配置;将作业的执行信息翻译为可视化展示信息;
管理器:用于接收作业配置信息,并根据所述作业配置信息初始化所有待执行的任务到任务池,启动调度器开始执行;作业唯一ID找到对应的调度器、任务队列和任务池,获取作业的执行情况;
调度器:用于负责任务的整体编排调度;
任务池:用于负责存放所有完成初始化但还未满足提交条件的任务;
任务队列:用于存放所有满足提交条件的任务;
执行器:用于对任务队列中满足执行条件的任务进行任务的执行和运行时管理,并记录所有运行过的任务实例信息;
重试队列:用于存放所有任务失败但未超过预设重试次数的任务。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202310317560.9A 2023-03-27 2023-03-27 一种智能化任务流编排方法和平台 Pending CN116737331A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310317560.9A CN116737331A (zh) 2023-03-27 2023-03-27 一种智能化任务流编排方法和平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310317560.9A CN116737331A (zh) 2023-03-27 2023-03-27 一种智能化任务流编排方法和平台

Publications (1)

Publication Number Publication Date
CN116737331A true CN116737331A (zh) 2023-09-12

Family

ID=87903294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310317560.9A Pending CN116737331A (zh) 2023-03-27 2023-03-27 一种智能化任务流编排方法和平台

Country Status (1)

Country Link
CN (1) CN116737331A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244584A1 (en) * 2007-03-26 2008-10-02 Smith Gary S Task scheduling method
CN110737485A (zh) * 2019-09-29 2020-01-31 武汉海昌信息技术有限公司 一种基于云架构的工作流配置系统和方法
CN113986514A (zh) * 2021-12-24 2022-01-28 飞狐信息技术(天津)有限公司 基于数据库部署的任务流控制方法和装置
CN115170390A (zh) * 2022-08-31 2022-10-11 广州极尚网络技术有限公司 一种文件风格化方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244584A1 (en) * 2007-03-26 2008-10-02 Smith Gary S Task scheduling method
CN110737485A (zh) * 2019-09-29 2020-01-31 武汉海昌信息技术有限公司 一种基于云架构的工作流配置系统和方法
CN113986514A (zh) * 2021-12-24 2022-01-28 飞狐信息技术(天津)有限公司 基于数据库部署的任务流控制方法和装置
CN115170390A (zh) * 2022-08-31 2022-10-11 广州极尚网络技术有限公司 一种文件风格化方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US11379272B2 (en) Autoscaling using file access or cache usage for cluster machines
US10453010B2 (en) Computer device, method, and apparatus for scheduling business flow
US9501319B2 (en) Method and apparatus for scheduling blocking tasks
US8713571B2 (en) Asynchronous task execution
CN102508716B (zh) 任务控制装置和任务控制方法
CN113535367B (zh) 任务调度方法及相关装置
CN113238838A (zh) 一种任务调度方法、装置及计算机可读存储介质
US8516492B2 (en) Soft partitions and load balancing
CN111625331B (zh) 任务调度方法、装置、平台、服务器及存储介质
WO2021000758A1 (zh) 机器人资源任务周期管控方法及装置
CN111338791A (zh) 集群队列资源的调度方法、装置、设备及存储介质
US10067793B2 (en) Data processing method and apparatus for executing task code using reservation instruction and release instruction
CN105786603B (zh) 一种基于分布式的高并发业务处理系统及方法
CN108958789B (zh) 一种并行流式计算方法、电子设备、存储介质及系统
CN112181621A (zh) 一种任务调度系统、方法、设备及存储介质
CN112579267A (zh) 一种去中心化大数据作业流调度方法及装置
CN111666141A (zh) 任务调度方法、装置、设备及计算机存储介质
US20180210916A1 (en) Memory-aware plan negotiation in query concurrency control
CN112181661B (zh) 一种任务调度方法
CN113467908A (zh) 任务执行方法、装置、计算机可读存储介质及终端设备
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN116737331A (zh) 一种智能化任务流编排方法和平台
US10834021B1 (en) Dynamic management of concurrent access to shared computing resources
US10417040B2 (en) Job scheduler test program, job scheduler test method, and information processing apparatus
US20230393889A1 (en) Multi-core processor, multi-core processor processing method, and related device

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