Skip to content

功能特性

Dagu 提供了一套全面的功能特性,用于构建和管理工作流。本节详细介绍你需要了解的每个功能。

功能分类

🖥️ 接口

如何与 Dagu 交互:

🔧 执行器

运行命令的不同方式:

  • Shell - 运行任何命令或脚本(默认)
  • Docker - 在容器中执行以实现隔离
  • SSH - 在远程服务器上运行命令
  • HTTP - 发起 REST API 调用和 webhook 请求
  • Mail - 发送邮件通知和报告
  • JQ - 处理和转换 JSON 数据

调度

控制工作流的运行时间:

  • 支持时区的 Cron 表达式
  • 每个工作流的多个调度
  • 启动/停止/重启模式
  • 跳过冗余执行

🚀 执行控制

高级执行模式:

  • 带并发限制的并行执行
  • 条件执行(前置条件)
  • 失败时继续模式
  • 重试和重复策略
  • 输出大小管理
  • 信号处理

📊 数据流

管理工作流中的数据:

  • 参数和运行时值
  • 步骤间的输出变量
  • 环境变量管理
  • JSON 路径引用
  • 模板渲染
  • 特殊系统变量

📋 队列系统

大规模工作流编排:

  • 内置队列管理
  • 每个 DAG 的队列分配
  • 基于优先级的执行
  • 手动队列操作
  • 并发控制

📧 通知

及时了解工作流状态:

  • 成功/失败时的邮件提醒
  • 自定义通知处理器
  • 日志附件
  • 灵活的 SMTP 配置

🔍 OpenTelemetry 追踪

用于可观测性的分布式追踪:

  • 端到端工作流可见性
  • 性能瓶颈识别
  • 嵌套 DAG 关联
  • 与 Jaeger、Tempo 等集成

分布式执行

在多个机器上扩展工作流:

  • 协调器 - 工作器架构
  • 基于标签的任务路由
  • 实时工作器监控
  • 需要共享存储用于 DAG 文件和状态
  • 水平扩展

工作器标签

分布式执行的任务路由:

  • 基于能力的工作器标记
  • 灵活的标签匹配
  • 资源优化
  • 地理分布
  • 合规要求

功能亮点

零依赖

与其他工作流引擎不同,Dagu 只需要:

  • 无数据库
  • 无消息代理
  • 无运行时依赖
  • 仅需单个二进制文件

语言无关

运行任何在你的系统上工作的内容:

yaml
steps:
  - name: python
    command: python script.py

  - name: node
    command: npm run task

  - name: go
    command: go run main.go

  - name: bash
    command: ./script.sh

分层工作流

从简单部分构建复杂系统:

yaml
steps:
  - name: data-pipeline
    run: etl
    params: "DATE=today"
    
  - name: ml-training
    run: train
    parallel: "image text"
    params: "MODEL=latest TYPE=${ITEM}"
    
  - name: deployment
    run: deploy
    parallel: "staging production"
    params: "ENV=${ITEM}"

---
name: etl
params:
  - DATE: today
steps:
  - name: etl
    command: python etl.py

---
name: train
params:
  - MODEL: latest
  - TYPE: ""
steps:
  - name: train
    command: python train.py --model ${MODEL} --type ${TYPE}

---
name: deploy
params:
  - ENV: ""
steps:
  - name: deploy
    command: kubectl apply -f deployment.yaml --env ${ENV}

另请参阅

探索特定功能:

本站为 Dagu 中文文档,由 Dagu.dev 基于 Dagu 原版英文文档翻译维护。