大数跨境

从定义管理到任务执行,DolphinScheduler工作流服务全解析 | AI生成技术文档系列

从定义管理到任务执行,DolphinScheduler工作流服务全解析 | AI生成技术文档系列 海豚调度
2025-09-29
2
导读:本文详细概述了Apache DolphinScheduler工作流服务的架构、关键组件以及它们之间的交互方式。

点击蓝字,关注我们

工作流服务是Apache DolphinScheduler的核心组件,负责工作流定义管理、工作流实例生命周期以及任务执行控制。本文详细概述了工作流服务的架构、关键组件以及它们之间的交互方式。

有关任务插件和执行的信息,请参阅任务系统。有关调度的详细信息,请参阅调度服务。

1

概述

工作流服务管理DolphinScheduler中工作流的整个生命周期,包括工作流定义、工作流实例创建、工作流执行、工作流状态管理以及任务协调。它为创建、运行和监控数据管道奠定了基础。


2

关键组件


工作流服务主要由两个组件组成:

2.1. ProcessService

ProcessService接口及其实现类ProcessServiceImpl为工作流定义和实例管理提供核心功能。它处理工作流定义创建、工作流实例创建、任务定义管理以及工作流状态跟踪。

2.2. ExecutorService

ExecutorService接口及其实现类ExecutorServiceImpl提供执行工作流和控制其执行的功能。它包括触发工作流、回填工作流、检查工作流有效性以及控制工作流执行(暂停、停止、恢复)的方法。


3

工作流定义管理


工作流服务为工作流定义提供全面管理,包括创建、更新、版本控制以及验证工作流定义。

3.1. 工作流定义结构

DolphinScheduler中的工作流定义(WorkflowDefinition)包含:

  • 元数据
    代码、名称、描述、项目代码等。
  • 全局参数
    可在整个工作流中使用的变量。
  • 任务定义
    构成工作流的任务的定义。
  • 任务关系
    定义任务之间的依赖关系(形成有向无环图)。
  • 位置信息
    工作流的可视化表示。

3.2. 创建和更新工作流定义

工作流定义管理功能包括:

  • 创建新的工作流定义。
  • 更新现有的工作流定义。
  • 保存工作流内的任务定义。
  • 管理任务关系以定义工作流结构。

工作流定义管理的关键操作包括:

  • saveWorkflowDefine
    保存工作流定义元数据。
  • saveTaskDefine
    保存与工作流关联的任务定义。
  • saveTaskRelation
    保存任务之间的关系。
  • genDagGraph
  • 从工作流定义生成有向无环图(DAG)。

3.3. 工作流版本管理

DolphinScheduler支持工作流定义的版本控制,允许用户跟踪更改并在不同版本之间切换。

工作流版本管理的关键操作包括:

  • switchVersion
    在工作流定义的不同版本之间切换。
  • findWorkflowDefinition
    通过代码和版本查找工作流定义。
  • findWorkflowDefinitionByCode
    通过代码查找工作流定义的最新版本。

    4

    工作流执行


工作流服务管理工作流的执行,包括启动工作流、控制工作流执行以及处理工作流执行状态。

4.1. 工作流执行生命周期

DolphinScheduler中的工作流执行生命周期涉及:

4.2. 启动工作流

工作流可以通过不同方式启动:

  • 手动触发
    按需启动工作流。使用ExecutorService中的triggerWorkflowDefinition方法。
  • 定时触发
    根据调度计划启动工作流。通过调度服务创建并使用工作流服务执行。
  • 回填
    针对历史日期多次运行工作流。使用ExecutorService中的backfillWorkflowDefinition方法。
  • 子工作流
    作为另一个工作流的一部分启动工作流。由父工作流中的子工作流任务启动。

4.3. 工作流实例构建

当触发工作流时,通过ProcessService中的constructWorkflowInstance方法创建工作流实例。此过程包括:

  • 查找工作流定义。
  • 生成新的工作流实例或恢复现有实例。
  • 处理全局参数。
  • 设置执行选项(优先级、工作线程组等)。
  • 设置工作流实例的初始状态。

4.4. 控制工作流执行

工作流服务提供方法来控制正在运行的工作流的执行:

  • 暂停
    暂停正在运行的工作流。
  • 恢复
    恢复已暂停的工作流。
  • 停止
    停止正在运行的工作流。
  • 重新运行
    重新运行已完成的工作流。
  • 恢复
    恢复失败的工作流。
这些控制操作通过ExecutorService中的controlWorkflowInstance方法实现。

5

任务管理

工作流服务管理工作流中的任务,包括任务定义、任务实例和任务执行。

5.1. 任务定义管理

任务定义指定工作流中任务的配置。工作流服务提供以下方法:

  • 创建任务定义。
  • 更新任务定义。
  • 管理任务定义版本。
  • 创建任务之间的关系。

关键操作包括:

  • saveTaskDefine
    保存任务定义。
  • saveTaskRelation
    保存任务之间的关系。
  • switchTaskDefinitionVersion
    在任务定义版本之间切换。

5.2. 任务执行控制

工作流服务提供方法来控制单个任务的执行:

  • executeTask
    在工作流中执行特定任务。
  • forceStartTaskInstance
    强制启动任务实例。
  • forceWorkflowInstanceSuccessByTaskInstanceId
    强制将任务设置为成功状态。


6

与其他组件的集成


工作流服务与DolphinScheduler的其他组件集成,以提供完整的工作流管理系统。

关键集成包括:

  • 数据库持久化
    工作流服务使用各种映射器和数据访问对象(DAO)来持久化工作流定义、实例、任务及其关系。
  • Master Server
    工作流服务提供Master Server用于创建和管理工作流实例的方法。
  • Worker Server
    工作线程向工作流服务报告任务执行状态。
  • 注册中心
    工作流服务与注册中心(ZooKeeper / JDBC)交互以进行服务发现和协调。
  • 警报服务
    工作流服务可以为工作流执行事件触发警报。


7

工作流执行状态

工作流服务管理工作流执行状态,跟踪工作流实例在其生命周期中的进展状态。

工作流执行状态在WorkflowExecutionStatus枚举中定义,包括:

  • RUNNING_EXECUTION
    工作流正在运行。
  • SUCCESS
    工作流成功完成。
  • FAILURE
    工作流失败。
  • PAUSE
    工作流已暂停。
  • STOP
    工作流已停止。
  • 以及针对不同工作流条件的各种其他状态。

工作流服务在工作流执行过程中更新这些状态,并提供查询和操作它们的方法。


8

命令系统

命令系统是工作流服务的关键部分,支持工作流的异步执行控制。

命令指定要在工作流上执行的操作:

  • START_PROCESS
    启动新的工作流。
  • RECOVER_TOLERANCE_FAULT_PROCESS
    恢复失败的工作流。
  • COMPLEMENT_DATA
    针对历史日期多次运行工作流。
  • REPEAT_RUNNING
    重新运行已完成的工作流。
  • EXECUTE_TASK
    在工作流中执行特定任务。

命令由API服务器或调度服务创建,并由Master服务器处理,然后Master服务器使用工作流服务来管理生成的工作流实例。

9

全局参数

工作流服务管理工作流的全局参数,这些参数是可在整个工作流中使用并传递给任务的变量。

全局参数在工作流定义中定义,可以是:

  • 输入参数
    在启动工作流时提供。
  • 输出参数
    在工作流执行期间生成。
  • 系统参数
    由系统自动提供(例如,调度时间)。

工作流服务在构建工作流实例时处理这些参数,并在执行期间将它们提供给任务。

全局参数处理的关键方法包括:

  • setGlobalParamIfCommanded:根据命令参数设置全局参数。
  • curingGlobalParams:处理和评估全局参数。

原文链接:https://deepwiki.com/apache/dolphinscheduler/3.1-workflow-service





用户案例



天翼云Zoom网易邮箱 
每日互动 惠生工程  作业帮 
博世智驾 蔚来汽车 长城汽车
集度长安汽车思科网讯
食行生鲜联通医疗联想
新网银行唯品富邦消费金融 
自如有赞伊利当贝大数据
珍岛集团传智教育Bigo
YY直播  拈花云科太美医疗
Cisco Webex兴业证券




迁移实战



Azkaban   Ooize(当贝迁移案例)
Airflow (有赞迁移案例)
Air2phin(迁移工具)
Airflow迁移实践



发版消息




Apache DolphinScheduler 3.2.2版本正式发布!
Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!




加入社区



关注社区的方式有很多:

  • GitHub: https://github.com/apache/dolphinscheduler
  • 官网:https://dolphinscheduler.apache.org/en-us
  • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
  • X.com:@DolphinSchedule
  • YouTube:https://www.youtube.com/@apachedolphinscheduler
  • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

📂非代码方式包括:

完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

👩‍💻代码方式包括:

查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

如果你❤️小海豚,就来为我点亮Star吧!

https://github.com/apache/dolphinscheduler


你的好友秀秀子拍了拍你

并请你帮她点一下“分享”

【声明】内容源于网络
0
0
海豚调度
Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
内容 667
粉丝 0
海豚调度 Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
总阅读167
粉丝0
内容667