xxl-job是什麼
XXL-JOB是一個分布式任務排程平台,其核心設計目标是開發迅速、學習簡單、輕量級、易擴充。現已開放源代碼并接入多家公司線上産品線,開箱即用。
官網:https://www.xuxueli.com/xxl-job/
特性:
簡單:支援通過Web頁面對任務進行CRUD操作,操作簡單,一分鐘上手;
動态:支援動态修改任務狀态、啟動/停止任務,以及終止運作中任務,即時生效;
排程中心HA(中心式):排程采用中心式設計,“排程中心”自研排程元件并支援叢集部署,可保證排程中心HA;
執行器HA(分布式):任務分布式執行,任務”執行器”支援叢集部署,可保證任務執行HA;
注冊中心: 執行器會周期性自動注冊任務, 排程中心将會自動發現注冊的任務并觸發執行。同時,也支援手動錄入執行器位址;
彈性擴容縮容:一旦有新執行器機器上線或者下線,下次排程時将會重新配置設定任務;
觸發政策:提供豐富的任務觸發政策,包括:Cron觸發、固定間隔觸發、固定延時觸發、API(事件)觸發、人工觸發、父子任務觸發;
排程過期政策:排程中心錯過排程時間的補償處理政策,包括:忽略、立即補償觸發一次等;
阻塞處理政策:排程過于密集執行器來不及處理時的處理政策,政策包括:單機串行(預設)、丢棄後續排程、覆寫之前排程;
任務逾時控制:支援自定義任務逾時時間,任務運作逾時将會主動中斷任務;
任務失敗重試:支援自定義任務失敗重試次數,當任務失敗時将會按照預設的失敗重試次數主動進行重試;其中分片任務支援分片粒度的失敗重試;
任務失敗告警;預設提供郵件方式失敗告警,同時預留擴充接口,可友善的擴充短信、釘釘等告警方式;
路由政策:執行器叢集部署時提供豐富的路由政策,包括:第一個、最後一個、輪詢、随機、一緻性HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;
分片廣播任務:執行器叢集部署時,任務路由政策選擇”分片廣播”情況下,一次任務排程将會廣播觸發叢集中所有執行器執行一次任務,可根據分片參數開發分片任務;
動态分片:分片廣播任務以執行器為次元進行分片,支援動态擴容執行器叢集進而動态增加分片數量,協同進行業務處理;在進行大資料量業務操作時可顯著提升任務處理能力和速度。
故障轉移:任務路由政策選擇”故障轉移”情況下,如果執行器叢集中某一台機器故障,将會自動Failover切換到一台正常的執行器發送排程請求。
任務進度監控:支援實時監控任務進度;
Rolling實時日志:支援線上檢視排程結果,并且支援以Rolling方式實時檢視執行器輸出的完整的執行日志;
GLUE:提供Web IDE,支援線上開發任務邏輯代碼,動态釋出,實時編譯生效,省略部署上線的過程。支援30個版本的曆史版本回溯。
腳本任務:支援以GLUE模式開發和運作腳本任務,包括Shell、Python、NodeJS、PHP、PowerShell等類型腳本;
指令行任務:原生提供通用指令行任務Handler(Bean任務,”CommandJobHandler”);業務方隻需要提供指令行即可;
任務依賴:支援配置子任務依賴,當父任務執行結束且執行成功後将會主動觸發一次子任務的執行, 多個子任務用逗号分隔;
一緻性:“排程中心”通過DB鎖保證叢集分布式排程的一緻性, 一次任務排程隻會觸發一次執行;
自定義任務參數:支援線上配置排程任務入參,即時生效;
排程線程池:排程系統多線程觸發排程運作,確定排程精确執行,不被堵塞;
資料加密:排程中心和執行器之間的通訊進行資料加密,提升排程資訊安全性;
郵件報警:任務失敗時支援郵件報警,支援配置多郵件位址群發報警郵件;
推送maven中央倉庫: 将會把最新穩定版推送到maven中央倉庫, 友善使用者接入和使用;
運作報表:支援實時檢視運作資料,如任務數量、排程次數、執行器數量等;以及排程報表,如排程日期分布圖,排程成功分布圖等;
全異步:任務排程流程全異步化設計實作,如異步排程、異步運作、異步回調等,有效對密集排程進行流量削峰,理論上支援任意時長任務的運作;
跨語言:排程中心與執行器提供語言無關的 RESTful API 服務,第三方任意語言可據此對接排程中心或者實作執行器。除此之外,還提供了 “多任務模式”和“httpJobHandler”等其他跨語言方案;
國際化:排程中心支援國際化設定,提供中文、英文兩種可選語言,預設為中文;
容器化:提供官方docker鏡像,并實時更新推送dockerhub,進一步實作産品開箱即用;
線程池隔離:排程線程池進行隔離拆分,慢任務自動降級進入”Slow”線程池,避免耗盡排程線程,提高系統穩定性;
使用者管理:支援線上管理系統使用者,存在管理者、普通使用者兩種角色;
權限控制:執行器次元進行權限控制,管理者擁有全量權限,普通使用者需要配置設定執行器權限後才允許相關操作;
源碼倉庫位址:
中央倉庫位址:
環境:
Maven3+
Jdk1.8+
Mysql5.7+
xxl-job 快速入門