1. 程式人生 > >Azkaban、Xxl-Job與Airflow對比分析

Azkaban、Xxl-Job與Airflow對比分析

概述

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依賴管理問題,但實際已經是一個通用的工作流排程框架,適用於不同業務場景。

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-jobAzkabanAirflow
licenseGNU General Public License v3.0Apache License, Version 2.0Apache License, Version 2.0
排程模組QuartzQuartz自實現
排程中心HA支援,基於Quartz叢集實現不支援不支援
執行器HA支援支援支援
業務耦合度高,業務邏輯在執行器中實現低,與實際業務無耦合。低,與實際業務無耦合。
Job型別JavaCommand、HadoopShell、Java、HadoopJava、Pig、Hive等,支援外掛式擴充套件Python、Bash、HTTP、Mysql等,支援Operator的自定義擴充套件。
Executor觸發RPCRestfulRestful
工作流無,可配置任務級聯觸發支援,自定義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,是因為它的管理介面確