XXL-JOB v2.0.2,分佈式任務調度平臺

v2.0.2 Release Notes

  • 一、底層通信方案優化:升級較新版本xxl-rpc,由"JETTY"方案調整爲"NETTY_HTTP"方案,執行器內嵌netty-http-server提供服務,調度中心複用容器端口提供服務;
  • 二、任務告警邏輯調整,改成經過掃描失敗日誌方式觸發。一方面精確掃描失敗任務,下降掃描範圍;另外一方面取消內存隊列,下降線程內存消耗;
  • 三、Quartz觸發線程池廢棄並替換爲 "XxlJobThreadPool",下降線程切換、內存佔用帶來的消耗,提升調度性能;
  • 四、調度線程池隔離,拆分爲"Fast"和"Slow"兩個線程池,1分鐘窗口期內任務耗時達500ms超過10次,該窗口期內斷定爲慢任務,慢任務自動降級進入"Slow"線程池,避免耗盡調度線程,提升系統穩定性;
  • 五、執行器熱部署時JobHandler從新初始化,修復由此致使的 "jobhandler naming conflicts." 問題;
  • 六、新增Class的加載緩存,解決頻繁加載Class會使jvm的方法區空間不足致使OOM的問題;
  • 七、任務支持更換綁定執行器,方便任務分組轉移和管理;
  • 八、調度中心告警郵件發送組件改成 「spring-boot-starter-mail」;
  • 九、記住密碼功能優化,選中時永久記住;非選中時關閉瀏覽器即登出;
  • 十、項目依賴升級至較新穩定版本,如quartz、spring、jackson、groovy、xxl-rpc等等;
  • 十一、精簡項目,取消第三方依賴,如 commons-collections四、commons-lang3 ;
  • 十二、執行器回調日誌落盤方案複用RPC序列化方案,並移除Jackson依賴;
  • 1三、底層Log調優,應用正常終止取消異常棧信息打印;
  • 1四、交互優化,儘可能避免新開頁面窗口;僅WebIDE支持新開頁,並提供窗口快速關閉按鈕;任務啓、停、刪除、觸發等輕操做提示改成toast方式,
  • 1五、任務暫停、刪除優化,避免quartz delete不完整致使任務髒數據;
  • 1六、任務回調、心跳註冊成功日誌優化,非核心常規日誌調整爲debug級別,下降冗餘日誌輸出;
  • 1七、調整首頁報表默認區間爲本週,避免日誌量太大查詢緩慢;
  • 1八、LRU路由更新不及時問題修復;
  • 1九、任務失敗告警郵件發送邏輯優化;
  • 20、調度日誌排序邏輯調整爲按照調度時間倒序,兼容TIDB等主鍵不連續日誌存儲組件;
  • 2一、執行器優雅停機優化;
  • 2二、鏈接池配置優化,加強鏈接有效性驗證;
  • 2三、JobHandler#msg長度限制,修復異常狀況下日誌超長致使內存溢出的問題;
  • 2四、升級xxl-rpc至較新版本,修復springboot 2.x版本兼容性問題;

簡介

XXL-JOB是一個輕量級分佈式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。html

輸入圖片說明

特性

  • 一、簡單:支持經過Web頁面對任務進行CRUD操做,操做簡單,一分鐘上手;
  • 二、動態:支持動態修改任務狀態、啓動/中止任務,以及終止運行中任務,即時生效;
  • 三、調度中心HA(中心式):調度採用中心式設計,「調度中心」基於集羣Quartz實現並支持集羣部署,可保證調度中心HA;
  • 四、執行器HA(分佈式):任務分佈式執行,任務"執行器"支持集羣部署,可保證任務執行HA;
  • 五、註冊中心: 執行器會週期性自動註冊任務, 調度中心將會自動發現註冊的任務並觸發執行。同時,也支持手動錄入執行器地址;
  • 六、彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會從新分配任務;
  • 七、路由策略:執行器集羣部署時提供豐富的路由策略,包括:第一個、最後一個、輪詢、隨機、一致性HASH、最不常用、最近最久未使用、故障轉移、忙碌轉移等;
  • 八、故障轉移:任務路由策略選擇"故障轉移"狀況下,若是執行器集羣中某一臺機器故障,將會自動Failover切換到一臺正常的執行器發送調度請求。
  • 九、阻塞處理策略:調度過於密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄後續調度、覆蓋以前調度;
  • 十、任務超時控制:支持自定義任務超時時間,任務運行超時將會主動中斷任務;
  • 十一、任務失敗重試:支持自定義任務失敗重試次數,當任務失敗時將會按照預設的失敗重試次數主動進行重試;其中分片任務支持分片粒度的失敗重試;
  • 十二、任務失敗告警;默認提供郵件方式失敗告警,同時預留擴展接口,可方面的擴展短信、釘釘等告警方式;
  • 1三、分片廣播任務:執行器集羣部署時,任務路由策略選擇"分片廣播"狀況下,一次任務調度將會廣播觸發集羣中全部執行器執行一次任務,可根據分片參數開發分片任務;
  • 1四、動態分片:分片廣播任務以執行器爲維度進行分片,支持動態擴容執行器集羣從而動態增長分片數量,協同進行業務處理;在進行大數據量業務操做時可顯著提高任務處理能力和速度。
  • 1五、事件觸發:除了"Cron方式"和"任務依賴方式"觸發任務執行以外,支持基於事件的觸發任務方式。調度中心提供觸發任務單次執行的API服務,可根據業務事件靈活觸發。
  • 1六、任務進度監控:支持實時監控任務進度;
  • 1七、Rolling實時日誌:支持在線查看調度結果,而且支持以Rolling方式實時查看執行器輸出的完整的執行日誌;
  • 1八、GLUE:提供Web IDE,支持在線開發任務邏輯代碼,動態發佈,實時編譯生效,省略部署上線的過程。支持30個版本的歷史版本回溯。
  • 1九、腳本任務:支持以GLUE模式開發和運行腳本任務,包括Shell、Python、NodeJS、PHP、PowerShell等類型腳本;
  • 20、命令行任務:原生提供通用命令行任務Handler(Bean任務,"CommandJobHandler");業務方只須要提供命令行便可;
  • 2一、任務依賴:支持配置子任務依賴,當父任務執行結束且執行成功後將會主動觸發一次子任務的執行, 多個子任務用逗號分隔;
  • 2二、一致性:「調度中心」經過DB鎖保證集羣分佈式調度的一致性, 一次任務調度只會觸發一次執行;
  • 2三、自定義任務參數:支持在線配置調度任務入參,即時生效;
  • 2四、調度線程池:調度系統多線程觸發調度運行,確保調度精確執行,不被堵塞;
  • 2五、數據加密:調度中心和執行器之間的通信進行數據加密,提高調度信息安全性;
  • 2六、郵件報警:任務失敗時支持郵件報警,支持配置多郵件地址羣發報警郵件;
  • 2七、推送maven中央倉庫: 將會把最新穩定版推送到maven中央倉庫, 方便用戶接入和使用;
  • 2八、運行報表:支持實時查看運行數據,如任務數量、調度次數、執行器數量等;以及調度報表,如調度日期分佈圖,調度成功分佈圖等;
  • 2九、全異步:任務調度流程全異步化設計實現,如異步調度、異步運行、異步回調等,有效對密集調度進行流量削峯,理論上支持任意時長任務的運行;
  • 30、跨平臺:原生提供通用HTTP任務Handler(Bean任務,"HttpJobHandler");業務方只須要提供HTTP連接便可,不限制語言、平臺;
  • 3一、國際化:調度中心支持國際化設置,提供中文、英文兩種可選語言,默認爲中文;
  • 3二、容器化:提供官方docker鏡像,並實時更新推送dockerhub,進一步實現產品開箱即用;
  • 3三、線程池隔離:調度線程池進行隔離拆分,慢任務自動降級進入"Slow"線程池,避免耗盡調度線程,提升系統穩定性;;

文檔地址

技術交流

相關文章
相關標籤/搜索