惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
D
Docker
J
Java Code Geeks
腾讯CDC
Blog — PlanetScale
Blog — PlanetScale
G
Google Developers Blog
M
MIT News - Artificial intelligence
L
LangChain Blog
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
博客园 - Franky
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
N
Netflix TechBlog - Medium
B
Blog RSS Feed
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News

博客园 - wasp

2026 研发管理者从 TL 到“AI 协作架构师”的转型指南 拯救草台班子-破局“文档式”管理:构建以工具链为载体的研发全流程闭环 《2026,不做草台班子》有感 LiteFlow 框架全景解析:从入门到精通的技术内幕 AI时代代码质量提升实战指南:别让效率成为质量的敌人 LiteFlow 框架分析系列(一):工作原理与快速入门 拯救草台班子-战略制定 AgentScope Java 核心架构深度解析 AgentScope深入分析-LLM&MCP AgentScope深入学习-总体认识 大厂生存启示录:从“螺丝钉”到“金牌个人”的 9 次关键跃迁 按DDD领域分析Openfeign WebMVC 与 WebFlux 模式对比分析 Spring Cloud Gateway 源码分析一 Spring Cloud Gateway WebFlux 模式架构分析 Hudi 文件格式分析 Hudi 数据模型分析 Apache Hudi 项目总体分析 Spring AI 代码分析(十)--Spring Boot集成 Spring AI 代码分析(九)--记忆能力实现
DolphinScheduler 工作原理与使用指南
wasp · 2025-12-27 · via 博客园 - wasp

DolphinScheduler 工作原理与使用指南

请关注公众号【碳硅化合物AI

摘要

DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度系统。本文档从技术专家的视角,深入浅出地解析 DolphinScheduler 的核心工作原理,包括系统架构、关键组件、工作流程,并提供实际使用示例。通过阅读本文档,你将全面理解 DolphinScheduler 如何实现分布式任务调度,以及如何在实际项目中应用它。

一、系统整体架构

DolphinScheduler 采用分布式无中心化架构设计,主要包含以下几个核心组件:

1.1 核心组件

  • MasterServer(主节点):负责任务调度、工作流管理、资源分配和监控
  • WorkerServer(工作节点):负责任务的实际执行
  • ApiServer(API服务):提供 RESTful API 接口,供前端和外部系统调用
  • AlertServer(告警服务):处理告警通知
  • Registry(注册中心):服务注册与发现,支持 Zookeeper、Nacos、Etcd 等

1.2 系统架构图

image.png

二、工作原理

2.1 工作流执行流程

DolphinScheduler 的工作流程可以概括为以下几个步骤:

  1. 工作流定义:用户通过 UI 或 API 创建工作流定义(DAG),定义任务节点和依赖关系
  2. 调度触发:Master 根据调度策略(定时调度或手动触发)创建工作流实例
  3. 任务分发:Master 将工作流中的任务分发给可用的 Worker
  4. 任务执行:Worker 接收任务并执行,执行过程中上报状态给 Master
  5. 状态管理:Master 根据任务执行状态和依赖关系,决定是否触发后续任务
  6. 完成通知:工作流执行完成后,触发告警(如配置)

2.2 核心流程时序图

image.png

三、关键类关系

3.1 Master 核心类

image.png

3.2 Worker 核心类

image.png

四、关键技术点

4.1 分布式调度机制

DolphinScheduler 采用去中心化的 Master 架构,多个 Master 节点通过注册中心协调工作。当某个 Master 节点故障时,其他 Master 节点可以接管其工作,实现高可用。

4.2 任务依赖管理

系统通过 DAG(有向无环图)来管理任务依赖关系。Master 会分析任务的前置依赖,只有当所有前置任务成功完成后,才会触发后续任务的执行。

4.3 任务分发策略

Master 根据 Worker 的负载情况、资源可用性等因素,选择合适的 Worker 来执行任务。支持多种分发策略,如轮询、随机、负载均衡等。

4.4 状态管理

任务和工作流的状态通过数据库持久化,同时通过事件总线在内存中维护实时状态,保证系统的高效运行和故障恢复能力。

五、使用示例

5.1 创建工作流定义

通过 Python SDK 创建工作流:

from dolphinscheduler import DolphinScheduler

# 连接 DolphinScheduler
ds = DolphinScheduler(url="http://localhost:12345", user="admin", password="dolphinscheduler123")

# 创建项目
project = ds.create_project("test_project", "测试项目")

# 创建工作流
workflow = project.create_workflow("test_workflow", "测试工作流")

# 添加任务
task1 = workflow.add_task("shell_task", "Shell任务", "echo 'Hello World'")
task2 = workflow.add_task("python_task", "Python任务", "print('Hello from Python')")

# 设置依赖关系
task2.set_upstream(task1)

# 保存工作流
workflow.save()

5.2 触发工作流执行

# 手动触发
workflow.run()

# 定时调度(每天凌晨2点执行)
workflow.set_schedule("0 0 2 * * ?")
workflow.enable_schedule()

5.3 监控工作流状态

# 查询工作流实例
instances = workflow.list_instances()

for instance in instances:
    print(f"实例ID: {instance.id}, 状态: {instance.state}")
    
    # 查询任务实例
    tasks = instance.list_tasks()
    for task in tasks:
        print(f"  任务: {task.name}, 状态: {task.state}")

六、最佳实践

  1. 合理设置任务超时时间:避免任务长时间占用资源
  2. 使用任务组:将相关任务组织在一起,便于管理
  3. 配置告警:及时了解任务执行情况
  4. 资源隔离:使用租户和队列机制实现资源隔离
  5. 监控和日志:定期查看系统监控和任务日志,及时发现问题

七、总结

DolphinScheduler 通过分布式架构、DAG 调度、插件化设计等核心技术,实现了高效、可靠的任务调度系统。其去中心化的 Master 设计保证了高可用性,灵活的插件机制支持多种任务类型,完善的监控和告警机制帮助运维人员及时发现问题。

在实际使用中,我们需要理解其工作原理,合理设计工作流,配置好资源隔离和监控告警,才能充分发挥 DolphinScheduler 的优势。