Azkaban、Xxl-Job与Airflow对比分析

概述

Xxl-Job

简述

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

xxl-job架构图

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

项目地址

Github:xuxueli/xxl-jobsql

Azkaban

简述

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

image.png

图片来源: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架构图

图片来源:https://www.jianshu.com/p/2ecef979c606分布式

项目地址

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,是由于它的管理界面确实太很差用了。

相关文章
相关标签/搜索