Airflow vs Dagu对比
我正在开发一个名为Dagu的 OSS 工作流调度程序,目标是开发一个更简单的工作流调度程序来替换 Airflow。
Airflow 多年来一直是一种流行的工具,但作为 Cron 的替代品,它是一种矫枉过正的解决方案。
Dagu 允许您比 Airflow 更简单地定义 DAG(工作流),并具有您作为调度程序所需的所有功能。
在这篇文章中,我想详细解释一下 Dagu 相比 Airflow 的优势。
大沽相对于Airflow的优势
大沽相对Airflow有以下5大优势
-
轻松安装(单个二进制文件,不依赖其他库)
-
轻松设置和运行(无需数据库)
-
以简单的 YAML 格式定义 DAG(工作流)
-
按原样使用现有程序,无需修改
-
使用 Cron 表达式调度
1\。轻松安装
要安装 Dagu,您只需要安装二进制文件。
brew install yohamta/tap/dagu
进入全屏模式 退出全屏模式
如果brew不可用,只需运行以下 Bash 命令即可将 Dagu 安装到当前目录。
curl -L https://raw.githubusercontent.com/yohamta/dagu/main/scripts/downloader.sh | bash
进入全屏模式 退出全屏模式
2\。轻松设置和运行(无需数据库)
要让 Dagu 运行,只需运行dagu server命令。
dagu server
进入全屏模式 退出全屏模式
然后去http://127.0.0.1:8080你会看到dagu的web UI。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--W4V_h11V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com /yohamta/dagu/raw/main/assets/images/ui-dashboard.png%3Fraw%3Dtrue)
无需安装数据库!
3\。以简单的 YAML 格式定义 DAG(工作流)
输出“hello world”和“done!”的工作流程到日志可以简单地定义如下。
steps:
- name: "step 1"
command: "echo Hello World"
- name: "step 2" command: "echo done!
command: "echo done!
depends:
- "step 1"
进入全屏模式 退出全屏模式
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--lMQGC-b_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://storage .googleapis.com/zenn-user-upload/f610bee8ae59-20220712.png)
Airflow 在 Python 代码中定义了工作流程。与上述相同的工作流程可以定义如下。
同一 DAG 的气流版本
from airflow import DAG
from airflow.operators.bash import BashOperator
dag = DAG(dag_id="hello_world_dag")
task1 = BashOperator(
task_id="hello_world",
bash_command='echo Hello World',
dag=dag)
task2 = BashOperator(
task_id="done",
bash_command='echo done',
dag=dag)
task1 >> task2
进入全屏模式 退出全屏模式
Airflow 的弱点是乍一看很难理解工作流的作用。
4\。按原样使用现有程序,无需修改
在 Dagu 工作流程中,您可以简单地按原样编写任何命令。它没有什么特别之处。
如果你有一个在 Cron 中运行的程序,你可以通过简单地将 Crontab 中编写的命令复制并粘贴到 YAML 文件中,将其作为 Dagu 的工作流调用。
无需编写 Python 代码来调用现有代码,也无需像使用 Airflow 那样麻烦地将其重写为 Python 代码。
5.使用 Cron 表达式调度
使用 Cron 表达式可以轻松设置 Dagu 工作流计划。只需在 YAML 文件中写入schedule,如下所示。
schedule: "0 10 * * * *"
steps:
- name: step 1
command: echo Hello World
进入全屏模式 退出全屏模式
大沽调度器可以通过dagu scheduler命令调用。只需运行它,您的工作流程就会自动按照计划进行。
dagu scheduler --dags=<directory>
进入全屏模式 退出全屏模式
总结
Dagu 调度器比 Airflow 更容易安装,并且允许使用简单、简短的 YAML 配置工作流(或作业)。
如果您在 Cron 中运行作业,则在安装 Airflow 或任何其他工作流调度程序时需要考虑很多事情。例如,如果您正在为调度程序部署数据库,则需要使该数据库成为冗余的,这样它就不会出现单点故障。
** Dagu 的最大优势在于它很容易设置,因为它不依赖任何数据库,因为它的架构都是基于文件的。**
大沽源代码及仓库
Dagu 是一个使用 Golang 和 React 开发的开源软件,并且正在持续开发中。如果您有兴趣,请以您想要的方式为该软件做出贡献。你很受欢迎:)
https://github.com/yohamta/dagu
更多推荐


所有评论(0)