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,是由於它的管理界面確實太很差用了。

相關文章
相關標籤/搜索