CN112379995B - 一种基于dag的单元化分布式调度系统及方法 - Google Patents
一种基于dag的单元化分布式调度系统及方法 Download PDFInfo
- Publication number
- CN112379995B CN112379995B CN202110028517.1A CN202110028517A CN112379995B CN 112379995 B CN112379995 B CN 112379995B CN 202110028517 A CN202110028517 A CN 202110028517A CN 112379995 B CN112379995 B CN 112379995B
- Authority
- CN
- China
- Prior art keywords
- task
- execution
- scheduling
- tasks
- node
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于DAG的单元化分布式调度系统及方法,包括管理平台服务模块、任务调度服务模块、任务状态管理模块、任务执行模块和数据存储模块;管理平台服务模块用于配置任务类型、任务参数、基于DAG配置任务执行依赖和执行顺序;任务调度服务模块用于基于管理平台服务模块配置的数据进行任务调度,向任务执行模块发起可执行任务的拉起命令;任务状态管理模块用于存储执行过程中的状态数据;任务执行模块用于接收任务调度服务模块发送的任务拉起命令,执行节点根据命令拉起任务执行;数据存储模块用于存取任务输入输出数据、配置管理数据和业务数据;该系统能实现复杂任务调度、基于DAG的流程化任务执行。
Description
技术领域
本发明涉及分布式调度系统技术领域,具体涉及一种基于DAG的单元化分布式调度系统及方法。
背景技术
随着现阶段系统规模和业务数据规模的爆炸式增长,定时执行的任务越来越多,对任务执行的要求也越来越复杂;在传统的系统中,定时调度任务基本都是采用单服务应用,均基于quartz的定时单体调度执行;但单体调度难以胜任大规模的任务管理和任务执行,而且在高可用上也存在难以扩展的限制。
在如今大规模的业务系统下,业务系统数据库由单体数据库逐步升级为分布式数据库,或是采用多实例,多数据节点分布式存储结构;近些年来也有很多优秀的开源分布式调度系统,例如:XXX-Job,ElasticJob,Saturn Job,SIA-Task,将单体服务调度发展成分布式调度,主要采用基于Zookeeper作为节点的分布式执行支持,实现了多节点、大规模调度任务的执行与管理;而目前在任务调度系统上,既需要在业务任务的角度支持多种任务的flow流程化执行,又需要基于不同的场景下可对一个业务下的多数据节点、多数据库实例或者多个分库同时并发执行相同的任务flow流程;对任务的执行编排、执行配置、任务执行并发以及执行调度都有更加复杂性的要求;但主流的分布式调度系统对任务流的依赖执行支持有限,仅支持简单的链式顺序执行或者事件触发执行,也无法实现管理端很好的任务调度依赖编排功能,无法对复杂的依赖任务进行有效的编排和调度执行;SIA的调度虽然也提供了任务按workflow的编排功能,但仍然难以实现复杂的调度任务配置,需要由业务的任务按场景单独编码实现,而且任务的执行对调度节点的依赖很强,对调度节点的可靠性要求更高,需要同步管理Zookeeper和数据库中的任务状态,对发生问题的任务状态难以维护。
而且在分布式调度系统中,分布式任务的执行状态的更新和状态变更是调度系统中的难点;同时目前的分布式调度系统更多集中在大数据领域,解决大数据处理的调度任务的节点分配问题,或者采用消息队列、任务调度算法的创新解决任务执行的顺序和执行优先级的问题;其更多的是提升任务的调度效率和任务执行资源的分配上,对调度系统的运维和任务管理的支持上表现不够,在对偏业务系统的调度上,通常通过消息队列和数据分片的方式实现大量任务的执行和执行调度管理,其存在对任务的执行依赖以及在执行流程管控上存在支持有限的问题。
发明内容
针对上述问题,本发明的一个目的是提供一种基于DAG的单元化分布式调度系统,该系统支持可视化的多种类型任务的workflow流程化配置,能实现大规模复杂任务调度、能实现基于DAG(有向无环图)的流程化任务执行,按flow流程在分布式环境下任务并行或依赖执行;实现所见即所得的任务编排配置和执行配置;实现在多数据库实例或多个分库场景下多单元任务的并行执行,即以任务组合的方式在任务flow流程上进行单元化任务以及嵌套式流程任务的并行执行和依赖执行,解决了对任务的执行依赖以及执行流程的管控上存在支持有限的问题;该系统的任务执行节点以分布式的方式在不同的主机上分别执行,由调度服务节点和执行节点通过消息监听,以RPC双向通讯的方式确认任务的执行情况并更新。
本发明的第二个目的是提供一种基于DAG的单元化分布式调度方法。
本发明所采用的第一个技术方案是:一种基于DAG的单元化分布式调度系统,包括管理平台服务模块、任务调度服务模块、任务状态管理模块、任务执行模块和数据存储模块;
所述管理平台服务模块用于配置任务类型和任务参数,编排单元化的分布式任务调度流程,基于DAG配置任务执行依赖和执行顺序,并将配置和编排的数据存储至所述数据存储模块;所述任务类型包括任务链任务,所述任务链任务是由多个任务节点以workflow的任务流程配置而成;所述任务节点用于嵌套配置一种或多种类型的任务,所述一种或多种类型的任务包括进程类执行任务、脚本类执行任务、服务类执行任务、分区单元任务和/或任务链任务;
所述任务调度服务模块用于根据所述管理平台服务模块配置的数据进行任务调度,调度服务节点向所述任务执行模块发起可执行任务的拉起命令,并监听任务流程中所有任务的执行情况,判断后续节点是否可执行,若为可执行节点,则进行调度执行;
所述任务状态管理模块用于存储执行过程中任务状态的状态数据;所述任务状态包括任务链中每个任务节点的执行状态、进程分片任务的执行状态、进程中线程的执行状态和线程中业务步骤的执行状态;
所述任务执行模块用于接收所述任务调度服务模块发送的任务拉起命令,执行节点根据所述命令拉起任务开始执行;还用于管理、监控任务在执行时的执行状态,并将执行记录发送至所述任务调度服务模块和任务状态管理模块;其中,所述执行节点分布在不同的主机上分别执行;
所述数据存储模块用于存取管理消息队列的任务输入输出数据、调度的配置管理数据和调度任务执行的业务数据;
其中,单元化的分布式任务调度流程包括:
一个单元任务至少在一个执行节点上执行;在一个单元任务中配置至少一个进程分片任务,多个所述进程分片任务在不同的执行节点上并行执行;在一个所述进程分片任务中配置至少一个线程的并行子任务,多个线程子任务在进程中并行执行。
优选地,所述管理平台服务模块包括任务编排子模块、任务管理子模块、作业配置子模块、告警配置子模块、调度节点管理子模块、参数配置子模块、审计监控子模块和任务监控子模块;
所述任务编排子模块用于编排单元化的分布式任务调度流程,基于DAG配置待执行任务的执行依赖和执行顺序;
所述任务管理子模块用于配置执行的任务类型、任务参数以及定义需要执行的任务信息;
所述作业配置子模块用于配置任务执行时间、执行方式、执行参数以及作业关联的执行任务信息;
所述告警配置子模块用于配置与任务作业执行相关以及服务相关的告警阈值和告警方式;
所述调度节点管理子模块用于监控和管理系统中的所有执行节点;
所述参数配置子模块用于配置任务和调度计划中的公共参数;
所述审计监控子模块用于记录和管理所有执行和变更操作;
所述任务监控子模块用于统计任务的执行状态,查看执行进程和执行明细,跟踪执行作业的执行情况。
优选地,所述任务调度服务模块包括执行监控子模块、任务拉起子模块、执行重试子模块和回调服务子模块;
所述执行监控子模块用于监控调度服务节点拉起的执行任务的执行情况;
所述任务拉起子模块用于调度服务节点向所述任务执行模块发起可执行任务的任务拉起命令;
所述执行重试子模块用于对发生异常未执行或执行失败的任务重新发起执行的通知操作;
所述回调服务子模块用于提供操作回调接口。
优选地,所述任务执行模块包括执行器服务子模块、执行线程池子模块、执行状态管理子模块和任务注册子模块;
所述执行器服务子模块用于根据所述任务调度服务模块发送的任务拉起命令,拉起任务并开始执行,还用于监控当前服务器上执行任务的执行情况;
所述执行线程池子模块用于监控任务执行线程状态并获取任务执行状态数据;
所述执行状态管理子模块用于在执行节点管理当前节点在执行时的任务状态,监控执行时间和执行资源的使用,并将执行状态和执行记录发送给所述任务调度服务模块和任务状态管理模块;
所述任务注册子模块用于将当前执行节点已部署的任务自动注册至系统中,并通过任务配置完成任务管理。
优选地,所述数据存储模块包括消息队列子模块、文件存储子模块、调度信息数据库和业务数据库;
所述消息队列子模块用于处理属于消息队列的任务输入或输出数据,还用于跨系统的数据传输;
所述文件存储子模块用于处理文件的输入或输出;
所述调度信息数据库用于保存调度的配置管理数据;
所述业务数据库用于保存调度任务执行的业务数据,也作为数据源给调度任务执行提供所需的数据参数。
优选地,所述配置的任务类型还包括进程类执行任务、脚本类执行任务、服务类执行任务和分区单元任务;
所述进程类执行任务、脚本类执行任务和服务类执行任务包含具体的业务执行;所述分区单元任务和调用链任务包含多个可执行的任务。
优选地,所述分区单元任务包含若干个执行任务分区和一个在分区上执行的任务;每个分区任务在不同的执行节点上执行。
优选地,所述任务节点嵌套配置一种或多种类型的任务通过以下方式实现:将配置好的一种或多种类型的任务作为任务节点添加到当前任务链的执行流程中。
本发明所采用的第二个技术方案是:一种基于DAG的单元化分布式调度方法,包括以下步骤:
S100:配置任务类型、任务参数以及基于DAG配置任务执行依赖和执行顺序,编排单元化的分布式任务调度流程;所述任务类型包括任务链任务,所述任务链任务是由多个任务节点以workflow的任务流程配置而成;所述任务节点用于嵌套配置一种或多种类型的任务,所述一种或多种类型的任务包括进程类执行任务、脚本类执行任务、服务类执行任务、分区单元任务和/或任务链任务;
S200:基于所述执行顺序配置任务流程,将待执行任务定义为定时执行作业,并将配置信息进行存储;
S300:监控并保存发布的所述定时执行作业,监控已执行任务链上的任务执行状态;
S400:当监控到可执行的任务时,调度分配所述可执行的任务,拉起任务开始执行;
S500:定时将执行任务的状态信息进行更新存储;
其中,所述步骤S400中,基于所述单元化的分布式任务调度流程调度分配所述可执行的任务,包括:
一个单元任务至少在一个执行节点上执行;在一个单元任务中配置至少一个进程分片任务,多个所述进程分片任务在不同的执行节点上并行执行;在一个所述进程分片任务中配置至少一个线程的并行子任务,多个线程子任务在进程中并行执行。
优选地,任务链的执行包括以下步骤:
S410:从开始节点执行,查询开始节点的后续节点,若开始节点的后续节点为可执行的任务,则给所述可执行的任务分配执行节点开始执行;
S420:监听可执行任务的执行结果,当所述可执行任务的执行结果为失败时,则不执行后续任务;当所述可执行任务的执行结果为完成时,则检查所述可执行任务节点的后续可执行任务;
S430:若后续可执行任务为并列的若干分区单元任务,则向执行服务节点分配所述若干分区单元任务中可执行的各个单元任务,各个分区单元任务以及每个分区单元任务中的各子单元任务都作为独立可执行的任务在执行服务节点并行执行;
S440:监听所述各个分区单元任务中各子单元任务的执行状态;当所述分区单元任务中的各子单元任务均执行完成后,则判定所述分区单元任务执行完成;
S450:当并列的部分或全部分区单元任务执行完成后,继续并行独立执行若干个分区单元任务的后续可执行任务,直至执行到结束节点时,则判定当前任务链任务执行完成。
上述技术方案的有益效果:
(1)本发明公开的基于DAG的单元化分布式调度系统支持可视化的多种类型任务的workflow流程化配置,能实现大规模复杂任务的调度、能实现基于DAG(有向无环图)的流程化任务执行,按flow流程在分布式环境下任务并行或依赖执行。
(2)本发明公开的调度系统中任务执行节点以分布式的方式在不同的主机上分别执行,由调度服务节点和执行节点通过消息监听,RPC双向通讯的方式确认任务的执行情况并更新,在分布式系统中,调度服务节点用于监听任务流程中的所有任务的执行情况,并负责调度判断后续节点的执行;分布式调度服务采用任务分配,执行节点中的执行服务监听器监听分配的任务调度并拉起任务开始执行。
(3)本发明能实现在多数据库实例或多个分库场景下多单元任务的并行执行,即以任务组合的方式在任务flow流程上进行单元化任务以及嵌套式流程任务的并行执行和依赖执行,解决了对任务的执行依赖、执行流程的管控上支持有限的问题。
(4)本发明能实现在分布式数据系统中针对分布式单元中复杂任务流程编排,在任务流程编排节点中可相互嵌入单元化任务和流程化任务,单元任务节点可配置多个数据单元相同任务的并行执行,任务链的的嵌套任务则可在任务的执行上支持随意复杂的多层任务执行,这也是现有调度系统不具备的高级复杂调度功能;传统的调度系统只支持单一联调的顺序执行,以及简单流程化任务调度,对单元化的任务和流程化任务的复杂编排都不具备配置编排能力。
(5)本发明公开的基于DAG的单元化分布式调度系统采用微服务技术架构,使用基于Spring Boot、Spring Cloud的服务框架作为调度系统的基础平台框架,使用分布式服务系统设计,支持任务执行节点的水平扩展,能按任务数量规模和处理速度要求动态扩展系统整体调度能力。
(6)本发明公开的调度系统具有任务并行处理的特点;本调度系统具有动态的多层级的任务并行处理能力,数据单元任务的并行执行,单元中的任务多进程并行,进程中多线程的并行处理,在任务调度流程编排过程中,配置每个调用链中节点的分片并行数和线程并行数,在单元任务节点中,同时管理多个任务单元任务的并行数;通过3级并发并行任务管理,在处理海量数据的情况下,通过弹性的资源扩展,实现处理任务效率的快速扩容;在单元任务中,多个单元任务将在不同的执行节点中并行执行,在调度配置中可动态配置一个单元任务中可并行执行的进程分片数量,对一个单元任务配置在多个主机中多个进程任务并行执行,分配进程的数量在配置任务流程节点时按分片参数配置;在任务流程节点中,同时可配置进分片任务的并行度,并行度的值配置为一个进程中并发多线程数量。
(7)本发明支持多种任务类型的使用,本调度系统通过扩展的方式支持脚本类型、API接口任务、Java可执行进程类任务的调度执行;在支持的脚本功能上,可配置Shell、Groovy、Java、Python等多种类型的任务脚本;调度系统中的脚本任务可通过管理端直接编辑修改,对Python、Groovy等脚本语言具有动态执行的能力,无需生成脚本文件可执行在JVM中运行,Java的脚本执行任务系统采用JIT动态即时编译技术,可实现基于Java任务的即时执行,无需重新发布部署任务节点;本调度系统采用SPI设计模式,采用接口扩展的方式扩展任务流中支持的任务节点,实现在不服务的情况下扩展新的任务类型。
(8)本发明的任务调度系统结构可靠性高,具有不需要使用三方中间件的高可用保证;系统调度的高可用采用主从结构,调度服务节点、执行节点的存活信息和状态信息以RPC心跳监控的方式实时更新节点状态至数据存储模块中;由数据存储模块保证节点状态的完整性和正确性实现节点状态的可靠性;由于数据库属于本系统的核心依赖系统,关系数据库(调度信息数据库)与业务数据库相关联,运维人员无需维护额外三方中间件,调度任务状态和执行信息直接保存在数据存储模块中;调度服务节点和执行节点做状态检查时采用全量节点状态检查机制,每个集群节点都将检查当前集群中所有节点的健康度和当前状态,当节点状态不再变更时,从节点将持续检查主节点的存活和可用性,当调度主节点不存在时,将从多个从节点中选取最早启动节点升级为主节点;在执行节点上,当节点不可用时,其他可执行此任务的执行节点将重新分配待执行任务,保证执行节点的高可用;系统的高可用设计仅依赖于数据存储模块,因此在系统的稳定性和可靠性上,远高于依赖于三方中间件服务的调度系统。
附图说明
图1为本发明的一个实施例提供的一种基于DAG的单元化分布式调度系统的结构示意图;
图2为本发明的一个实施例提供的进程类执行任务的执行示意图;
图3为本发明的一个实施例提供的脚本类执行任务的执行示意图;
图4为本发明的一个实施例提供的服务类执行任务的执行示意图;
图5为本发明的一个实施例提供的分区单元任务的执行示意图;
图6为本发明的一个实施例提供的任务链任务的执行示意图;
图7为本发明的一个实施例提供的在分区单元视角下的多个任务链的任务结构关系示意图;
图8为本发明的一个实施例提供的在任务链视角下查看任务时的结构示意图;
图9为本发明的一个实施例提供的多层级的任务并行处理的示意图;
图10为本发明的一个实施例提供的一种基于DAG的单元化分布式调度方法流程图;
图11为本发明的一个实施例提供的任务链任务中任务链的执行流程示意图。
具体实施方式
下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例的详细描述和附图用于示例性地说明本发明的原理,但不能用来限制本发明的范围,即本发明不限于所描述的优选实施例,本发明的范围由权利要求书限定。
在本发明的描述中,需要说明的是,除非另有说明,“多个”的含义是两个或两个以上;术语“第一”“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性;对于本领域的普通技术人员而言,可视具体情况理解上述术语在本发明中的具体含义。
实施例一
图1为本发明的一个实施例提供的一种基于DAG的单元化分布式调度系统的结构示意图,包括管理平台服务模块、任务调度服务模块、任务状态管理模块、任务执行模块(任务执行区)和数据存储模块;
管理平台服务模块为系统的web管理控制台,用于配置任务类型、任务参数、基于DAG配置任务执行依赖和执行顺序等数据,编排单元化的分布式任务调度流程,并将配置和编排的数据存储至数据存储模块,还用于管理待执行任务以及执行中的任务;其中,单元化的分布式任务调度流程包括:一个单元任务至少在一个执行节点上执行;在一个单元任务中配置至少一个进程分片任务,多个所述进程分片任务在不同的执行节点上并行执行;在一个所述进程分片任务中配置至少一个线程的并行子任务,多个线程子任务在进程中并行执行。
管理平台服务模块包括任务编排子模块、任务管理子模块、作业配置子模块、告警配置子模块、调度节点管理子模块、参数配置子模块、审计监控子模块和任务监控子模块;其中,任务编排子模块用于编排单元化的分布式任务调度流程,基于DAG有向无环图配置管理待执行任务的执行依赖和执行顺序,执行的作业中包含多个需执行的任务,在管理平台服务模块对待执行作业中的任务执行依赖和执行顺序进行可视化的流程性配置;任务管理子模块用于配置执行的任务类型、任务参数以及定义需要执行的任务信息;作业配置子模块用于配置任务执行时间、执行方式、执行参数以及作业关联的执行任务等信息;告警配置子模块用于配置与任务作业执行相关以及服务相关的告警阈值和告警方式,包括任务执行的时间超时、资源使用超出阈值和告警信息推送方式等配置;调度节点管理子模块用于监控和管理系统中的所有执行节点,查看执行节点的资源使用情况和执行节点的任务执行情况;参数配置子模块用于配置任务和调度计划中的公共参数,在任务和调度作业中复用公共参数,避免重复设置;审计监控子模块用于记录和管理所有执行和变更操作,监控操作人员的执行轨迹;任务监控子模块用于对执行作业中的任务的执行状态进行统计,查看执行进程,查看任务的执行明细,跟踪执行作业的执行情况,通过监控看板查看任务的整体执行情况。
任务调度服务模块用于基于管理平台服务模块配置的任务类型、任务参数、任务执行依赖和执行顺序等进行任务调度服务,调度服务节点向任务执行模块发起可执行任务的拉起命令,并对在执行中的任务进行监控,监听任务流程中的所有任务的执行情况,判断后续节点是否可执行,若为可执行节点,则进行调度执行;任务调度服务模块包括执行监控子模块、任务拉起子模块、执行重试子模块和回调服务子模块;其中,执行监控子模块用于监控调度服务节点拉起执行的任务的执行情况,包括执行时间、执行结果和执行资源情况的采集等;任务拉起子模块用于调度服务节点向任务执行模块发起可执行任务的任务拉起命令,告知任务执行模块任务可被拉起执行;执行重试子模块用于对发生异常未执行或执行失败的任务重新发起执行的通知操作,重试未被执行拉起的任务;回调服务子模块用于提供操作回调接口,回调服务子模块具有向执行节点或执行任务发起回调操作,通知更新执行进度情况的功能。
任务状态管理模块用于存储记录执行过程中各种执行任务状态的状态数据,在执行的任务中包含不同阶段的执行任务状态,包括执行计划的状态、任务链和单元任务的整体状态、任务链中具体每个任务节点的执行状态、任务并行执行时的分片进程的执行状态、每个进程中的各自线程执行状态以及每个线程中具体执行业务步骤的执行状态等。
任务状态管理模块能使用微服务架构下的注册中心、配置中心来提供节点和状态的记录管理,能使用开源Zookeeper调度协调器作为分布式任务管理,也能使用Etcd或数据库作为状态管理的存储和服务模块,可实现基于不同业务任务规模的插拔性适配支持;状态数据包括管理节点状态、调度节点状态、执行节点状态、任务状态和作业状态;管理节点状态为服务节点的运行情况和资源情况;调度节点状态为调度服务节点的运行情况和资源情况;执行节点状态为执行服务的运行情况和资源情况;任务状态为执行过程中的任务的执行记录和执行明细,包括时间、状态和处理进度等信息;作业状态为执行作业的状态数据,包括开始时间、结束时间、作业结果、作业状态和关联任务量等;状态数据还包括执行的结果、进度、开始时间、结束时间、上下文参数、环境信息、执行数据统计等。
任务执行模块(任务执行区)用于接收任务调度服务模块发送的任务拉起命令,并根据命令拉起执行具体的任务;还用于管理、监控任务在执行时的执行状态,并将执行记录发送至任务调度服务模块和任务状态管理模块;任务执行模块的服务由部署在不同主机上的执行节点进行管理,每个执行节点负责执行具体在执行的任务;任务执行模块包括执行器服务子模块、执行线程池子模块、执行状态管理子模块和任务注册子模块;执行器服务子模块用于根据任务调度服务模块发送的任务拉起命令,执行节点独立拉起执行任务,并负责监控当前服务器上的执行任务的执行情况;执行线程池子模块用于监控任务执行线程状态并获取任务执行状态数据,执行任务在运行的任务线程都统一在执行线程池中执行;执行状态管理子模块用于在执行节点管理当前节点在执行时的任务状态,监控执行时间和执行资源的使用,并将执行状态和执行记录汇报给任务调度服务模块和任务状态管理模块;任务注册子模块用于将当前执行节点已部署的任务自动注册至系统中,再通过任务配置完成任务管理。本发明公开的调度系统中执行节点以分布式的方式在不同的主机上分别执行,由调度服务节点和执行节点通过消息监听,RPC双向通讯的方式确认任务的执行情况并更新,在分布式系统中,调度服务节点用于监听任务流程中的所有任务的执行情况,并负责调度判断后续节点的执行;分布式调度服务采用任务分配,执行节点中的执行服务监听器监听分配的任务调度并拉起任务开始执行。
数据存储模块用于对单元化分布式调度系统中的消息队列的任务输入输出数据、调度的配置管理数据和调度任务执行的业务数据进行存取管理;数据存储模块包括消息队列子模块、文件存储子模块、调度信息数据库和业务数据库;消息队列子模块用于处理属于消息队列的任务输入或输出数据,还用于跨系统的数据传输;文件存储子模块用于处理文件的输入或输出,存储使用共享存储和存储服务两种存储形式;调度信息数据库采用关系数据库进行存储,用于保存调度的配置管理数据,例如调度系统的配置信息、任务信息和执行信息;业务数据库用于保存调度任务执行的业务数据,也作为数据源给调度任务执行提供所需的数据参数,调度任务执行过程中对业务数据库的数据进行读取和写入操作。
本发明的任务调度系统结构可靠性高,具有不需要使用三方中间件的高可用保证;系统调度的高可用采用主从结构,调度服务节点、执行节点的存活信息和状态信息以RPC心跳监控的方式实时更新节点状态至数据存储模块中;由数据存储模块保证节点状态的完整性和正确性实现节点状态的可靠性;由于数据库属于本系统的核心依赖系统,关系数据库(调度信息数据库)与业务数据库相关联,运维人员无需维护额外三方中间件,调度任务状态和执行信息直接保存在数据存储模块中;调度服务节点和执行节点做状态检查时采用全量节点状态检查机制,每个集群节点都将检查当前集群中所有节点的健康度和当前状态,当节点状态不再变更时,从节点将持续检查主节点的存活和可用性,当调度主节点不存在时,将从多个从节点中选取最早启动节点升级为主节点;在执行节点上,当节点不可用时,其他可执行此任务的执行节点将重新分配待执行任务,保证执行节点的高可用;系统的高可用设计仅依赖于数据存储模块,因此在系统的稳定性和可靠性上,远高于依赖于三方中间件服务的调度系统。
进一步的,在一个实施例中,在基于DAG的单元化分布式调度系统任务的定义上,本系统配置了五种任务类型,包括进程类执行任务、脚本类执行任务、服务类执行任务、分区单元任务和任务链任务。
其中,进程类执行任务、脚本类执行任务和服务类执行任务为可执行类型任务,包含具体的业务执行;分区单元任务和调用链任务为容器类任务,包含多个可执行任务的配置;所有任务的定义和任务的配置均通过管理平台服务模块可视化配置管理;任务所需的执行资源由任务调度服务模块中的调度服务节点按配置和执行节点状态动态分配,任务的执行由具体的所在执行节点负责拉起任务进行执行。
如图2所示,进程类执行任务是由执行节点拉起执行,在执行节点服务器上执行的任务,任务每次执行时都作为系统中一个独立的进程拉起执行,例如一个可执行的Javajar文件、一个数据处理的执行程序等;进程类执行任务作为独立的进程在执行节点服务器上运行,在执行任务进程内部可按业务任务要求执行多线程的并行处理,任务执行的生命周期由此独立进程负责维护。
脚本类执行任务是在执行节点的服务中拉起执行,其作为执行节点的一个执行线程被拉起运行,任务处理逻辑封装在执行脚本中,如图3所示,执行脚本按功能可划分为Shell脚本、Sql脚本和JVM脚本;脚本执行的生命周期由执行节点中的线程维护。
服务类执行任务是以执行接口的形式将需要执行的任务发布到基于DAG的单元化分布式调度系统中,任务执行时由执行节点调用服务类任务的执行接口并拉起任务开始执行,如图4所示,任务执行业务逻辑在调起的任务服务中执行,有任务服务端的执行维护任务执行的生命周期。
本发明支持多种任务类型的使用,本调度系统通过扩展的方式支持脚本类执行任务、API接口任务(服务类执行任务)、Java可执行进程类任务(进程类执行任务)的调度执行;在支持的脚本功能上,可配置Shell、Groovy、Java、Python等多种类型的任务脚本;调度系统中的脚本任务可通过管理端直接编辑修改,对Python、Groovy等脚本语言具有动态执行的能力,无需生成脚本文件可执行在JVM中运行,Java的脚本执行任务系统采用JIT动态即时编译技术,可实现基于Java任务的即时执行,无需重新发布部署任务节点;本调度系统采用SPI设计模式,采用接口扩展的方式扩展任务流中支持的任务节点,实现在不服务的情况下扩展新的任务类型。
分区单元任务是针对数据库的分库和业务数据的分区配置的任务,此任务本身不具有业务执行逻辑,属于容器类任务;一个分区单元任务包含若干的执行任务分区和一个在分区上执行的任务,此任务可以是任意类型的任务,既可以是一个可执行类型任务,也可以是一个容器类型任务;分区单元任务中的每个分区任务可在不同的执行节点上执行,实现单元分区任务的分布式并行执行;如图5所示,分区单元任务的每个分区单元中对应不同的数据库的分区数据或不同的数据库实例,每个分区在不同的节点上执行,每个分区上都将会执行任务1、任务2和任务3相同的可执行任务,不同的是处理的分区数据不同;通过对分区单元的配置,实现了一个任务并行处理、不同数据分区的数据分布式任务功能。
任务链任务是由多个任务节点以workflow的任务流程的方式配置而成,任务链任务也是一个容器类任务,任务链任务中的任务链包含开始节点、结束节点、任务节点和汇聚节点;如图6所示,每个任务链任务都包含一个开始节点和结束节点,开始节点和结束节点也是任务执行的发起端和结束端,任务节点可配置在此节点中具体执行的任务和任务参数,可嵌套配置包含容器类型节点在内的任意种类型任务。
任务链任务被作为一个独立的任务进行定义配置,配置任务链的过程就是任务节点的编排过程,在任务链流程编排时,任务节点能嵌套配置不同类型的任务,具体为:将已配置好的不同类型的任务作为任务节点添加到当前任务链的执行流程中,实现了任务的嵌套;不同类型的任务包括进程类执行任务、脚本类执行任务、服务类执行任务、分区单元任务和任务链任务中的一种或多种;不同类型的任务以任务节点的形式添加到当前任务流程编排中,其只作为当前任务链的一个节点进行执行,在执行过程中当此任务节点中的全部任务按其自有的任务流程执行完成后,当前任务节点才被认为执行完成,继续执行其后续的可执行依赖任务;当嵌套进去的任务为任务链任务时,该嵌套进去的任务链任务中的任务节点还能继续进行不同类型任务的嵌套,实现了复杂任务的嵌套。本发明以任务组合的方式在任务flow流程上进行单元化任务以及嵌套式流程任务的并行执行和依赖执行,解决了对任务的执行依赖、执行流程的管控上支持有限的问题。
本发明能实现在分布式数据系统中针对分布式单元中复杂任务流程编排,在任务流程编排节点中可相互嵌入单元化任务和流程化任务,单元任务节点可配置多个数据单元相同任务的并行执行,任务链的嵌套任务则可在任务的执行上支持随意复杂的多层任务执行,这也是现有调度系统不具备的高级复杂调度功能;传统的调度系统只支持单一联调的顺序执行,以及简单流程化任务调度,对单元化的任务和流程化任务的复杂编排都不具备配置编排能力。
本系统通过任务链中的任务节点流转实现了复杂任务的嵌套、执行顺序管理等复杂的分布式任务的执行依赖管理;其中,每个任务链中的任务可在不同的执行节点上独立执行,此节点任务执行完成后,会由调度节点发起后续节点的执行请求,再发布到可用资源的节点上继续执行后续节点任务;上述任务链任务是基于DAG(有向无环图)的流程化任务执行,按flow流程在分布式环境下任务并行或依赖执行。
在分区单元任务的视角维度上查看任务时,每个分区单元中都包含相同多组的任务链任务,在分布式多执行节点的环境中,由任务调度服务模块中的调度服务节点负责分配不同分区中的不同任务链下的具体执行任务节点所在的执行节点,执行具体的任务;如图7所示,图7中显示了子分区单元视角下多个数据分区内部需要执行的多个任务链的任务结构关系。
如图8所示,在任务链视角上查看任务时,按任务链的顺序依次执行task1到task5,其中,每个task都是一个分区单元的任务,每个分区单元包含了多个数据分区,每个数据分区是一个独立可执行的任务,在当前所有的分区任务执行完成后,调用链中的task1的任务才执行完成,后续task2可继续执行,依次类推,执行完全部的任务链任务。
如图9所示,在任务调度流程编排(调用链任务的任务节点编排)过程中,配置每个调用链中节点的分片并行数和线程并行数,一个单元任务至少在一个执行节点上执行,一个单元任务至少配置一个进程分片任务,两个及两个以上的进程的分片任务在不同的执行节点上并行执行;在一个所述的进程分片任务中,可配置至少一个线程的并行子任务,通常将执行节点的CPU核数作为进程分片任务的线程数量,多个线程子任务在进程中并行执行;本发明公开的调度系统具有任务并行处理的特点,本调度系统具有动态的多层级的任务并行处理能力,数据单元任务的并行执行,单元中的任务多进程并行,进程中多线程的并行处理。
在单元任务节点中,同时管理多个任务单元任务的并行数,通过3级并发并行任务管理,在处理海量数据的情况下,通过弹性的资源扩展,实现处理任务效率的快速扩容;在单元任务中,多个单元任务将在不同的执行节点中并行执行,在调度配置中可动态配置一个单元任务中可并行执行的进程分片数量,对一个单元任务配置在多个主机中多个进程任务并行执行,分配进程的数量在配置任务流程节点时按分片参数配置;在任务流程节点中,同时可配置进分片任务的并行度,并行度的值配置为一个进程中并发多线程数量。
实施例二
图10为本发明的一个实施例提供的一种基于DAG的单元化分布式调度方法,包括以下步骤:
S100:配置进程类执行任务、脚本类执行任务、服务类执行任务的任务参数和执行参数,编排单元化的分布式任务调度流程;配置分区单元任务中的单元执行任务以及单元执行任务的任务参数和执行参数;配置任务链任务中的任务链,基于DAG配置任务链中的任务执行依赖和执行顺序;
S200:基于执行节点的执行顺序配置任务流程,将待执行任务定义为一个定时执行的作业,将配置信息保存到数据存储模块中;
S300:监控保存发布的定时执行作业,同时监控已执行任务链上的任务执行状态;
S400:当监控到可执行的任务时,调度分配所述可执行的任务;将可执行的任务状态修改为开始执行状态,并拉起任务开始执行;
S500:定时将执行任务的状态信息进行更新存储;
其中,步骤S400中基于单元化的分布式任务调度流程调度分配可执行的任务,包括:
一个单元任务至少在一个执行节点上执行;在一个单元任务中配置至少一个进程分片任务,多个所述进程分片任务在不同的执行节点上并行执行;在一个所述进程分片任务中配置至少一个线程的并行子任务,多个线程子任务在进程中并行执行。
进一步的,在一个实施例中,如图11所示,任务链的执行流程基于有向无环图(DAG),图11的任务节点中包含了可执行的进程任务、分区单元任务、服务接口任务和任务链任务,实现了多种类型任务的嵌套;任务开始由调度服务节点拉起执行,调度服务节点监听任务链中任务节点的执行状态,判断后续节点是否具备可执行条件,后续节点可执行的前提是节点的前置任务全部执行完成,如果有失败的任务则此任务链的任务流程执行失败,后续节点将不再执行;
任务链的执行流程具体包括以下步骤:
S410:任务调度服务模块从开始节点执行,查询开始节点的后续节点,开始节点的后续节点为Java进程执行任务1,则任务调度服务模块将此任务分配执行节点开始执行,当任务1执行完成或执行失败,执行节点将执行结果状态更新至状态存储中;
S420:任务调度服务模块监听任务1的执行状态结果,当任务1的执行结果为失败时,此任务链的任务整体失败,将不会再向后执行;当任务1的执行结果为完成时,调度服务将检查任务链上任务1节点的后续可执行任务,后续可执行任务节点为分区单元任务2和分区单元任务3;
S430:任务调度服务模块中的调度服务节点同时将分区单元任务2和任务3设置为开始执行状态,由于任务2和任务3为分区单元节点,因此,调度服务节点向执行服务节点按调度策略分配可执行的各个单元任务,每个单元都作为独立可执行的任务在执行服务节点并行执行;调度节点将任务2和任务3中的子单元1、子单元2、子单元3作为单独的子任务分配给不同的执行节点;
S440:执行节点监听分配给此节点的各个单元执行任务,并由执行节点拉起执行,各个单元的任务执行完成后将各自更新每个单元的执行任务状态;
S450:任务调度服务模块监听分区单元任务的整体执行情况,当任务2中的子单元1、子单元2和子单元3的任务均执行完成后,此时分区单元任务2的所在节点将全部完成;同样,当任务3的子单元1、子单元2和子单元3的任务均执行完成后,分区单元任务3的所在节点将全部完成;
S460:当分区单元任务2和分区单元任务3执行完成后,任务调度服务模块将继续并行独立执行服务任务4和服务任务5,将任务4和任务5分配到执行服务节点执行任务;
S470:任务调度服务模块监听任务4和任务5的执行状态,当任务4和任务5都执行完成后,开始执行任务链任务6;任务链任务6将按上述任务链流程执行,当任务6的任务链中的任务全部执行完成后,任务6节点将被任务调度服务模块判定为执行完成;
S480:任务调度服务模块执行到结束节点时,则判定当前此任务链任务执行完成。
本系统采用微服务技术架构,使用基于Spring Boot、Spring Cloud的服务框架作为调度系统的基础平台框架,使用分布式服务系统设计,支持任务执行节点的水平扩展,按任务数量规模和处理速度要求动态扩展系统整体调度处理能力;系统中的调度服务、管理平台服务、执行节点均以微服务的形式注册至注册中心服务,由注册中心服务管理分布式调度系统的服务集群,由配置中心服务提供服务配置管理和任务状态管理。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种基于DAG的单元化分布式调度系统,其特征在于,包括管理平台服务模块、任务调度服务模块、任务状态管理模块、任务执行模块和数据存储模块;
所述管理平台服务模块用于配置任务类型和任务参数,编排单元化的分布式任务调度流程,基于DAG配置任务执行依赖和执行顺序,并将配置和编排的数据存储至所述数据存储模块;所述任务类型包括任务链任务,所述任务链任务是由多个任务节点以workflow的任务流程配置而成;所述任务节点用于嵌套配置一种或多种类型的任务,具体为:将配置好的一种或多种类型的任务作为任务节点添加到当前任务链的执行流程中,所述一种或多种类型的任务包括进程类执行任务、脚本类执行任务、服务类执行任务、分区单元任务和/或任务链任务;
所述任务调度服务模块用于根据所述管理平台服务模块配置的数据进行任务调度,调度服务节点向所述任务执行模块发起可执行任务的拉起命令,并监听任务流程中所有任务的执行情况,判断后续节点是否可执行,若为可执行节点,则进行调度执行;
所述任务状态管理模块用于存储执行过程中任务状态的状态数据;所述任务状态包括任务链中每个任务节点的执行状态、进程分片任务的执行状态、进程中线程的执行状态和线程中业务步骤的执行状态;
所述任务执行模块用于接收所述任务调度服务模块发送的任务拉起命令,执行节点根据所述命令拉起任务开始执行;还用于管理、监控任务在执行时的执行状态,并将执行记录发送至所述任务调度服务模块和任务状态管理模块;其中,所述执行节点分布在不同的主机上分别执行;
所述数据存储模块用于存取管理消息队列的任务输入输出数据、调度的配置管理数据和调度任务执行的业务数据;
其中,所述任务调度服务模块用于实现所述单元化的分布式任务调度流程,包括:
一个单元任务至少在一个执行节点上执行;在一个单元任务中配置至少一个进程分片任务,多个所述进程分片任务在不同的执行节点上并行执行;在一个所述进程分片任务中配置至少一个线程的并行子任务,多个线程子任务在进程中并行执行;
所述任务调度服务模块包括执行监控子模块、任务拉起子模块、执行重试子模块和回调服务子模块;
所述执行监控子模块用于监控调度服务节点拉起的执行任务的执行情况;
所述任务拉起子模块用于调度服务节点向所述任务执行模块发起可执行任务的任务拉起命令;
所述执行重试子模块用于对发生异常未执行或执行失败的任务重新发起执行的通知操作;
所述回调服务子模块用于提供操作回调接口。
2.根据权利要求1所述的单元化分布式调度系统,其特征在于,所述管理平台服务模块包括任务编排子模块、任务管理子模块、作业配置子模块、告警配置子模块、调度节点管理子模块、参数配置子模块、审计监控子模块和任务监控子模块;
所述任务编排子模块用于编排单元化的分布式任务调度流程,基于DAG配置待执行任务的执行依赖和执行顺序;
所述任务管理子模块用于配置执行的任务类型、任务参数以及定义需要执行的任务信息;
所述作业配置子模块用于配置任务执行时间、执行方式、执行参数以及作业关联的执行任务信息;
所述告警配置子模块用于配置与任务作业执行相关以及服务相关的告警阈值和告警方式;
所述调度节点管理子模块用于监控和管理系统中的所有执行节点;
所述参数配置子模块用于配置任务和调度计划中的公共参数;
所述审计监控子模块用于记录和管理所有执行和变更操作;
所述任务监控子模块用于统计任务的执行状态,查看执行进程和执行明细,跟踪执行作业的执行情况。
3.根据权利要求1所述的单元化分布式调度系统,其特征在于,所述任务执行模块包括执行器服务子模块、执行线程池子模块、执行状态管理子模块和任务注册子模块;
所述执行器服务子模块用于根据所述任务调度服务模块发送的任务拉起命令,拉起任务并开始执行,还用于监控当前服务器上执行任务的执行情况;
所述执行线程池子模块用于监控任务执行线程状态并获取任务执行状态数据;
所述执行状态管理子模块用于在执行节点管理当前节点在执行时的任务状态,监控执行时间和执行资源的使用,并将执行状态和执行记录发送给所述任务调度服务模块和任务状态管理模块;
所述任务注册子模块用于将当前执行节点已部署的任务自动注册至系统中,并通过任务配置完成任务管理。
4.根据权利要求1所述的单元化分布式调度系统,其特征在于,所述数据存储模块包括消息队列子模块、文件存储子模块、调度信息数据库和业务数据库;
所述消息队列子模块用于处理属于消息队列的任务输入或输出数据,还用于跨系统的数据传输;
所述文件存储子模块用于处理文件的输入或输出;
所述调度信息数据库用于保存调度的配置管理数据;
所述业务数据库用于保存调度任务执行的业务数据,也作为数据源给调度任务执行提供所需的数据参数。
5.根据权利要求1所述的单元化分布式调度系统,其特征在于,配置的所述任务类型还包括进程类执行任务、脚本类执行任务、服务类执行任务和分区单元任务;
所述进程类执行任务、脚本类执行任务和服务类执行任务包含具体的业务执行;所述分区单元任务和任务链任务包含多个可执行的任务。
6.根据权利要求5所述的单元化分布式调度系统,其特征在于,所述分区单元任务包含若干个执行任务分区和一个在分区上执行的任务;每个分区任务在不同的执行节点上执行。
7.一种基于DAG的单元化分布式调度方法,其特征在于,包括以下步骤:
S100:配置任务类型、任务参数以及基于DAG配置任务执行依赖和执行顺序,编排单元化的分布式任务调度流程;所述任务类型包括任务链任务,所述任务链任务是由多个任务节点以workflow的任务流程配置而成;所述任务节点用于嵌套配置一种或多种类型的任务,具体为:将配置好的一种或多种类型的任务作为任务节点添加到当前任务链的执行流程中,所述一种或多种类型的任务包括进程类执行任务、脚本类执行任务、服务类执行任务、分区单元任务和/或任务链任务;
S200:基于所述执行顺序配置任务流程,将待执行任务定义为定时执行作业,并将配置信息进行存储;
S300:监控并保存发布的所述定时执行作业,监控已执行任务链上的任务执行状态;
S400:当监控到可执行的任务时,调度分配所述可执行的任务,拉起任务开始执行;
S500:定时将执行任务的状态信息进行更新存储;
其中,所述步骤S400中,基于单元化的分布式任务调度流程调度分配所述可执行的任务,包括:
一个单元任务至少在一个执行节点上执行;在一个单元任务中配置至少一个进程分片任务,多个所述进程分片任务在不同的执行节点上并行执行;在一个所述进程分片任务中配置至少一个线程的并行子任务,多个线程子任务在进程中并行执行;
以及,其中,任务链的执行包括以下子步骤:
S410:从开始节点执行,查询开始节点的后续节点,若开始节点的后续节点为可执行的任务,则给所述可执行的任务分配执行节点开始执行;
S420:监听可执行任务的执行结果,当所述可执行任务的执行结果为失败时,则不执行后续任务;当所述可执行任务的执行结果为完成时,则检查所述可执行任务节点的后续可执行任务;
S430:若后续可执行任务为并列的若干分区单元任务,则向执行服务节点分配所述若干分区单元任务中可执行的各个单元任务,各个分区单元任务以及每个分区单元任务中的各子单元任务都作为独立可执行的任务在执行服务节点并行执行;
S440:监听所述各个分区单元任务中各子单元任务的执行状态;当所述分区单元任务中的各子单元任务均执行完成后,则判定所述分区单元任务执行完成;
S450:当并列的部分或全部分区单元任务执行完成后,继续并行独立执行若干个分区单元任务的后续可执行任务,直至执行到结束节点时,则判定当前任务链任务执行完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110028517.1A CN112379995B (zh) | 2021-01-11 | 2021-01-11 | 一种基于dag的单元化分布式调度系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110028517.1A CN112379995B (zh) | 2021-01-11 | 2021-01-11 | 一种基于dag的单元化分布式调度系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112379995A CN112379995A (zh) | 2021-02-19 |
CN112379995B true CN112379995B (zh) | 2021-04-20 |
Family
ID=74590018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110028517.1A Active CN112379995B (zh) | 2021-01-11 | 2021-01-11 | 一种基于dag的单元化分布式调度系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379995B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968504A (zh) * | 2021-02-26 | 2022-08-30 | 中国联合网络通信集团有限公司 | 一种分布式任务调度方法、装置及存储介质 |
CN113138812A (zh) * | 2021-04-23 | 2021-07-20 | 中国人民解放军63920部队 | 航天器任务调度方法及装置 |
CN113485828B (zh) * | 2021-06-30 | 2024-02-09 | 上海数禾信息科技有限公司 | 基于quartz的分布式任务调度系统及方法 |
CN113254010A (zh) * | 2021-07-09 | 2021-08-13 | 广州光点信息科技有限公司 | 一种可视化dag工作流任务调度系统及其运行方法 |
CN113434279A (zh) * | 2021-07-14 | 2021-09-24 | 上海浦东发展银行股份有限公司 | 一种任务执行方法、装置、设备及存储介质 |
CN113553066A (zh) * | 2021-07-23 | 2021-10-26 | 国网江苏省电力有限公司 | 一种基于流程化配置的智能任务调度方法 |
CN113656157B (zh) * | 2021-08-10 | 2024-04-23 | 北京锐安科技有限公司 | 一种分布式任务调度方法、装置、存储介质及电子设备 |
CN113626167A (zh) * | 2021-08-11 | 2021-11-09 | 京东科技控股股份有限公司 | 线程控制方法、装置、设备及计算机存储介质 |
CN113934782A (zh) * | 2021-09-22 | 2022-01-14 | 易联众智鼎(厦门)科技有限公司 | 一种基于dag模型的数据etl系统及使用方法 |
CN114493832A (zh) * | 2022-01-07 | 2022-05-13 | 厦门国际银行股份有限公司 | 一种分离式电子银行保函处理系统及方法 |
CN114884948A (zh) * | 2022-05-05 | 2022-08-09 | 零氪科技(北京)有限公司 | 一种数据处理系统 |
CN115421898A (zh) * | 2022-11-07 | 2022-12-02 | 杭州比智科技有限公司 | 一种基于quartz框架的大数据任务调度管理系统及方法 |
CN116048709A (zh) * | 2023-04-03 | 2023-05-02 | 深圳迅策科技有限公司 | 一种高扩展性的实时及离线数据处理系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815071A (zh) * | 2017-01-12 | 2017-06-09 | 上海轻维软件有限公司 | 基于有向无环图的大数据作业调度系统 |
CN109814986A (zh) * | 2017-11-20 | 2019-05-28 | 上海寒武纪信息科技有限公司 | 任务并行处理方法、存储介质、计算机设备、装置和系统 |
CN111831418A (zh) * | 2020-07-14 | 2020-10-27 | 华东师范大学 | 一种基于延迟调度技术的大数据分析作业性能优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436507B2 (en) * | 2014-07-12 | 2016-09-06 | Microsoft Technology Licensing, Llc | Composing and executing workflows made up of functional pluggable building blocks |
-
2021
- 2021-01-11 CN CN202110028517.1A patent/CN112379995B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815071A (zh) * | 2017-01-12 | 2017-06-09 | 上海轻维软件有限公司 | 基于有向无环图的大数据作业调度系统 |
CN109814986A (zh) * | 2017-11-20 | 2019-05-28 | 上海寒武纪信息科技有限公司 | 任务并行处理方法、存储介质、计算机设备、装置和系统 |
CN111831418A (zh) * | 2020-07-14 | 2020-10-27 | 华东师范大学 | 一种基于延迟调度技术的大数据分析作业性能优化方法 |
Non-Patent Citations (1)
Title |
---|
云计算环境下多DAG 调度的资源分配进化算法;田国忠,肖创柏,赵娟娟;《计算机应用研究》;20140930;第31卷(第9期);2798-2802 * |
Also Published As
Publication number | Publication date |
---|---|
CN112379995A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112379995B (zh) | 一种基于dag的单元化分布式调度系统及方法 | |
US11537435B2 (en) | System and method of providing system jobs within a compute environment | |
US8640137B1 (en) | Methods and apparatus for resource management in cluster computing | |
US7779298B2 (en) | Distributed job manager recovery | |
US9940598B2 (en) | Apparatus and method for controlling execution workflows | |
CN111506412A (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
CN111694888A (zh) | 基于微服务架构的分布式etl数据交换系统及方法 | |
US9804889B2 (en) | Methods and apparatus for state objects in cluster computing | |
US20030135615A1 (en) | Method for rebalancing resources within a global resource namespace | |
CN112445598B (zh) | 一种基于quartz的任务调度方法、装置、电子设备以及介质 | |
US20090100196A1 (en) | Generic shared memory barrier | |
CN111240819A (zh) | 一种调度任务的发布系统及方法 | |
CN114565502A (zh) | Gpu资源管理方法、调度方法、装置、电子设备及存储介质 | |
CN111522630B (zh) | 基于批次调度中心的计划任务执行方法以及系统 | |
CN113032110A (zh) | 一种基于分布式对等架构设计的高可用任务调度方法 | |
US12008405B2 (en) | System and method of providing system jobs within a compute environment | |
CN102681881A (zh) | 跨机调度方法及其系统 | |
CN115858245A (zh) | 一种数据备份作业调度系统及备份作业调度方法 | |
CN116737406A (zh) | 一种统一计算引擎管理的中间件系统 | |
CN115220895A (zh) | 资源调度方法及管理集群、存储介质、电子设备 | |
CN114168290A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN117478748A (zh) | 用于跨PaaS中心架构的分布式任务调度的方法和系统 | |
CN114896054A (zh) | 一种跨异构计算引擎的大数据任务调度方法、设备及介质 | |
CN115309528A (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 |