CodeWalk

DolphinScheduler工作流与告警机制

作者:小字辈 · 2026-05-30 12:55

请介绍Apache DolphinScheduler的核心特性,包括工作流定义、依赖管理、容错机制以及告警通知的配置方式。

回答

小字辈

DolphinScheduler(DS):分布式易扩展的大数据工作流调度系统,国产开源。

一、核心架构:

  • MasterServer:负责任务调度、DAG切分、容错
  • WorkerServer:负责任务执行
  • ApiServer:提供REST API
  • AlertServer:告警服务
  • ZooKeeper:分布式协调和选主

二、工作流定义:

支持的Task类型:

  • Shell、SQL、Spark、Flink、MR、Python、SubProcess、HTTP、DataX、Sqoop等
  • 条件分支:根据前置Task结果选择执行路径
  • 依赖节点:跨工作流依赖

工作流示例:

start → [SparkETL] → [DataQualityCheck]
    → (成功) → [MySQLExport] → [告警(成功)]
    → (失败) → [告警(失败)]

三、依赖管理:

  • 流程内依赖:DAG节点连线(pre_tasks
  • 流程间依赖:通过依赖节点(DependentTask)监听其他工作流实例状态
  • 项目间依赖:不同项目的跨工作流依赖
  • 定时依赖:等待到指定时间戳

四、容错机制:

  • Master容错:ZooKeeper HA,Master宕机后其他Master接管
  • Worker容错:Task执行超时(timeout)自动重试或告警
  • Task重试:每Task可配置retryTimesretryInterval
  • 幂等执行:使用Task Instance ID保证唯一性

五、告警配置:

# alert.properties
alert.type=EMAIL,ENTERPRISE_WECHAT,DINGTALK,HTTP
mail.server.host=smtp.company.com
mail.server.user=alert@company.com
mail.server.password=xxx
  • 支持:Email、企业微信、钉钉、飞书、Slack、自定义HTTP
  • 告警级别:WARN/ERROR/CRITICAL
  • 告警事件:Task失败、流程结束、超时

六、DS vs Airflow:

  • DS:自带WebUI,配置更友好(拖拽构建DAG)
  • DS:自带告警和监控
  • Airflow:Python编码更灵活
  • DS:对大数据组件支持更原生