一、簡介
1.1 概述
XXL-JOB是一個輕量級分布式任務調度框架,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。
1.2 特性
- 1、簡單:支持通過Web頁面對任務進行CRUD操作,操作簡單,一分鍾上手;
- 2、動態:支持動態修改任務狀態、暫停/恢復任務,以及終止運行中任務,即時生效;
- 3、調度中心HA(中心式):調度采用中心式設計,“調度中心”基於集群Quartz實現並支持集群部署,可保證調度中心HA;
- 4、執行器HA(分布式):任務分布式執行,任務"執行器"支持集群部署,可保證任務執行HA;
- 5、注冊中心: 執行器會周期性自動注冊任務, 調度中心將會自動發現注冊的任務並觸發執行。同時,也支持手動錄入執行器地址;
- 6、彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會重新分配任務;
- 7、路由策略:執行器集群部署時提供豐富的路由策略,包括:第一個、最后一個、輪詢、隨機、一致性HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;
- 8、故障轉移:任務路由策略選擇"故障轉移"情況下,如果執行器集群中某一台機器故障,將會自動Failover切換到一台正常的執行器發送調度請求。
- 9、失敗處理策略;調度失敗時的處理策略,策略包括:失敗告警(默認)、失敗重試;
- 10、失敗重試:調度中心調度失敗且啟用"失敗重試"策略時,將會自動重試一次;執行器執行失敗且回調失敗重試狀態時,也將會自動重試一次;
- 11、阻塞處理策略:調度過於密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄后續調度、覆蓋之前調度;
- 12、分片廣播任務:執行器集群部署時,任務路由策略選擇"分片廣播"情況下,一次任務調度將會廣播觸發集群中所有執行器執行一次任務,可根據分片參數開發分片任務;
- 13、動態分片:分片廣播任務以執行器為維度進行分片,支持動態擴容執行器集群從而動態增加分片數量,協同進行業務處理;在進行大數據量業務操作時可顯著提升任務處理能力和速度。
- 14、事件觸發:除了"Cron方式"和"任務依賴方式"觸發任務執行之外,支持基於事件的觸發任務方式。調度中心提供觸發任務單次執行的API服務,可根據業務事件靈活觸發。
- 15、任務進度監控:支持實時監控任務進度;
- 16、Rolling實時日志:支持在線查看調度結果,並且支持以Rolling方式實時查看執行器輸出的完整的執行日志;
- 17、GLUE:提供Web IDE,支持在線開發任務邏輯代碼,動態發布,實時編譯生效,省略部署上線的過程。支持30個版本的歷史版本回溯。
- 18、腳本任務:支持以GLUE模式開發和運行腳本任務,包括Shell、Python、NodeJS等類型腳本;
- 19、任務依賴:支持配置子任務依賴,當父任務執行結束且執行成功后將會主動觸發一次子任務的執行, 多個子任務用逗號分隔;
- 20、一致性:“調度中心”通過DB鎖保證集群分布式調度的一致性, 一次任務調度只會觸發一次執行;
- 21、自定義任務參數:支持在線配置調度任務入參,即時生效;
- 22、調度線程池:調度系統多線程觸發調度運行,確保調度精確執行,不被堵塞;
- 23、數據加密:調度中心和執行器之間的通訊進行數據加密,提升調度信息安全性;
- 24、郵件報警:任務失敗時支持郵件報警,支持配置多郵件地址群發報警郵件;
- 25、推送maven中央倉庫: 將會把最新穩定版推送到maven中央倉庫, 方便用戶接入和使用;
- 26、運行報表:支持實時查看運行數據,如任務數量、調度次數、執行器數量等;以及調度報表,如調度日期分布圖,調度成功分布圖等;
- 27、全異步:系統底層實現全部異步化,針對密集調度進行流量削峰,理論上支持任意時長任務的運行;
- 28、國際化:調度中心支持國際化設置,提供中文、英文兩種可選語言,默認為中文;
1.3 發展
於2015年中,我在github上創建XXL-JOB項目倉庫並提交第一個commit,隨之進行系統結構設計,UI選型,交互設計……
於2015-11月,XXL-JOB終於RELEASE了第一個大版本V1.0, 隨后我將之發布到OSCHINA,XXL-JOB在OSCHINA上獲得了@紅薯的熱門推薦,同期分別達到了OSCHINA的“熱門動彈”排行第一和git.oschina的開源軟件月熱度排行第一,在此特別感謝紅薯,感謝大家的關注和支持。
於2015-12月,我將XXL-JOB發表到我司內部知識庫,並且得到內部同事認可。
於2016-01月,我司展開XXL-JOB的內部接入和定制工作,在此感謝袁某和尹某兩位同事的貢獻,同時也感謝內部其他給與關注與支持的同事。
於2017-05-13,在上海舉辦的 "第62期開源中國源創會" 的 "放碼過來" 環節,我登台對XXL-JOB做了演講,台下五百位在場觀眾反響熱烈(圖文回顧 )。
於2017-10-22,又拍雲 Open Talk 聯合 Spring Cloud 中國社區舉辦的 "進擊的微服務實戰派上海站",我登台對XXL-JOB做了演講,現場觀眾反響熱烈並在會后與XXL-JOB用戶熱烈討論交流
於2017-12-11,XXL-JOB有幸參會《InfoQ ArchSummit全球架構師峰會》,並被拍拍貸架構總監"楊波老師"在專題 "微服務原理、基礎架構和開源實踐" 中現場介紹。
於2017-12-18,XXL-JOB參與"2017年度最受歡迎中國開源軟件"評比,在當時已錄入的約九千個國產開源項目中角逐,最終進入了前30強。
於2018-01-15,XXL-JOB參與"2017碼雲最火開源項目"評比,在當時已錄入的約六千五百個碼雲項目中角逐,最終進去了前20強。
我司大眾點評目前已接入XXL-JOB,內部別名《Ferrari》(Ferrari基於XXL-JOB的V1.1版本定制而成,新接入應用推薦升級最新版本)。 據最新統計, 自2016-01-21接入至2017-12-01期間,該系統已調度約100萬次,表現優異。新接入應用推薦使用最新版本,因為經過數個大版本的更新,系統的任務模型、UI交互模型以及底層調度通訊模型都有了較大的優化和提升,核心功能更加穩定高效。
至今,XXL-JOB已接入多家公司的線上產品線,接入場景如電商業務,O2O業務和大數據作業等,截止最新統計時間為止,XXL-JOB已接入的公司包括不限於:
- 1、大眾點評; - 2、山東學而網絡科技有限公司; - 3、安徽慧通互聯科技有限公司; - 4、人人聚財金服; - 5、上海棠棣信息科技股份有限公司 - 6、運滿滿 - 7、米其林 (中國區) - 8、媽媽聯盟 - 9、九櫻天下(北京)信息技術有限公司 - 10、萬普拉斯科技有限公司(一加手機) - 11、上海億保健康管理有限公司 - 12、海爾馨廚 (海爾) - 13、河南大紅包電子商務有限公司 - 14、成都順點科技有限公司 - 15、深圳市怡亞通 - 16、深圳麥亞信科技股份有限公司 - 17、上海博瑩科技信息技術有限公司 - 18、中國平安科技有限公司 - 19、杭州知時信息科技有限公司 - 20、博瑩科技(上海)有限公司 - 21、成都依能股份有限責任公司 - 22、湖南高陽通聯信息技術有限公司 - 23、深圳市邦德文化發展有限公司 - 24、福建阿思可網絡教育有限公司 - 25、優信二手車 - 26、上海悠游堂投資發展股份有限公司 - 27、北京粉筆藍天科技有限公司 - 28、中秀科技(無錫)有限公司 - 29、武漢空心科技有限公司 - 30、北京螞蟻風暴科技有限公司 - 31、四川互宜達科技有限公司 - 32、錢包行雲(北京)科技有限公司 - 33、重慶欣才集團 - 34、咪咕互動娛樂有限公司(中國移動) - 35、北京諾亦騰科技有限公司 - 36、增長引擎(北京)信息技術有限公司 - 37、北京英貝思科技有限公司 - 38、剛泰集團 - 39、深圳泰久信息系統股份有限公司 - 40、隨行付支付有限公司 - 41、廣州瀚農網絡科技有限公司 -