当前位置: 代码迷 >> 综合 >> 调度系统 | Azkaban、Xxl-Job与Airflow对比分析
  详细解决方案

调度系统 | Azkaban、Xxl-Job与Airflow对比分析

热度:48   发布时间:2023-12-13 15:12:44.0

Xxl-Job


简述

XXL-JOB是一个国内轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。基于Java技术栈,调度中心与执行器通信基于作者另一个开源项目xxl-rpc,采用自建注册中心,整体架构简单明了,易于上手。

xxl-job架构图

图片来源:

http://www.xuxueli.com/xxl-job/#/?id=_533-架构图

项目地址

Github:xuxueli/xxl-job

Azkaban


简述

Azkaban为LinkedIn开源的分布式工作流调度框架,项目起源于解决Hadoop Jop依赖管理问题,但实际已经是一个通用的工作流调度框架,适用于不同业务场景。

图片来源:

https://github.com/azkaban/azkaban/blob/master/docs/figures/azkaban2overviewdesign.png

项目地址

Github:azkaban/azkaban

Airflow


简述

Apache-Airflow 是Airbnb开源的一款数据流程工具,已经在Apache孵化成功,成为Apache的顶级项目。以非常灵活的方式来支持数据的ETL过程,同时还支持非常多的插件来完成诸如HDFS监控、邮件通知等功能。Airflow支持单机和分布式两种模式,支持Master-Slave模式,支持Mesos等资源调度,有非常好的扩展性。

                                                Airflow架构图

项目地址

Github:apache/airflow

功能对比

功能 Xxl-job Azkaban Airflow
license GNU General Public License v3.0 Apache License, Version 2.0 Apache License, Version 2.0
调度模块 Quartz Quartz 自实现
调度中心HA 支持,基于Quartz集群实现 不支持 不支持
执行器HA 支持 支持 支持
业务耦合度 高,业务逻辑在执行器中实现 低,与实际业务无耦合。 低,与实际业务无耦合。
Job类型 Java Command、HadoopShell、Java、HadoopJava、Pig、Hive等,支持插件式扩展 Python、Bash、HTTP、Mysql等,支持Operator的自定义扩展。
Executor触发 RPC Restful Restful
工作流 无,可配置任务级联触发 支持,自定义DSL语法 支持,基于Python DAG
管理界面 简单但不美观,符合国人习惯,上手简单 简单,美观程度略胜于xxl-job,整体功能逻辑清晰,上手简单 该有的功能都有,但是就是让你用得不爽。
部署运维 简单 简单 较复杂,包括WebServer、Scheduler、Worker和Flower(可选,用于)
单点故障 Web Server存在单点故障风险 Scheduler存在单点故障风险。

总结分析

Xxl-Job、Azkaban与Airflow三者目标定位有所不同,Xxl-Job是一个轻量级分布式的任务调度框架,Azkaban则是为了解决Hadoop的任务依赖关系问题,而Airflow则是通用的批量数据处理。

Xxl-Job依赖于Xxl-Rpc,可以认为是一个微服务系统,调度中心是服务消费者,调度器是服务提供者,只是服务调用不是通过访问而是通过定时触发而已。

Azkaban重心则在工作流调度,通过DSL语法定义工作流,同时支持子工作流,子工作流可以在主工作流中调度,也可单独调度。

Airflow基于Dag也可以定义复杂的工作流,属于Python技术栈。
总体来说,如果是简单的定时任务调度,可以选择Xxl-Job,与主流Java框架Spring结合很好,上手简单快捷,功能够用;如果调度任务有明确的workflow,需要对workflow状态进行监控分析,则建议使用Azkaban,之所以不选择Airflow,是因为它的管理界面确实太不好用了。