介绍
Airbnb开源的一款调度工具,核心特征是分布式、基于工作流,此外还提供了UI方便管理和监控,可看做crontab的升级版,功能更加丰富和完善;
核心概念
- DAG:WorkFlow的定义,调度的基本单元,由若干存在依赖关系的Task组成;
- Task:DAG中一个节点,即具体的某个调度任务;
- Operator:任务的定义,包括任务类型、执行逻辑等等;
架构图
Master-Slave架构,存在两种主要角色Seheduler和Executor,以及辅助角色WebServer,如下图所示:
- Seheduler:调度器,周期性地轮询元数据库,筛选需要被执行的DAG(同一时间只能存在一个);
- Executor:执行器,负责任务的执行;
- WebServer:WEB服务器,为前端提供监控管理调度任务的能力;
HA说明
- Worker Node:以集群的形式存在,而且可以很方便的扩容缩容,避免单点问题;
- Master Node:需要借助第三方组件airflow-scheduler-failover-controller实现HA,部署一台备用节点,正常情况下只启动主节点的Seheduler,主节点宕机时,通过组件启动备用节点的Seheduler;(官方并没有给出HA的方案)
- 元数据库:数据库需要主备部署;
性能瓶颈
- 随着节点数量的增加,数据库的压力会越来越大,成为瓶颈点;
优化建议
- DAG使用python代码定义,可提供可视化的方案降低使用门槛,以及提升使用效率;
参考: