當當網分布式作業調度組件:Elastic-Job
Elastic-Job 是 ddframe 中 dd-job 的作業模塊中分離出來的分布式彈性作業框架。去掉了和 dd-job 中的監控和 ddframe 接入規范部分。
ddframe 其他模塊也有可獨立開源的部分,之前當當曾開源過 dd-soa 的基石模塊 DubboX。
Elastic-Job 主要功能
-
定時任務: 基于成熟的定時任務作業框架Quartz cron表達式執行定時任務。
-
作業注冊中心: 基于Zookeeper和其客戶端Curator實現的全局作業注冊控制中心。用于注冊,控制和協調分布式作業執行。
-
作業分片: 將一個任務分片成為多個小任務項在多服務器上同時執行。
-
彈性擴容縮容: 運行中的作業服務器崩潰,或新增加n臺作業服務器,作業框架將在下次作業執行前重新分片,不影響當前作業執行。
-
支持多種作業執行模式: 支持OneOff,Perpetual和SequencePerpetual三種作業模式。
-
失效轉移: 運行中的作業服務器崩潰不會導致重新分片,只會在下次作業啟動時分片。啟用失效轉移功能可以在本次作業執行過程中,監測其他作業服務器空閑,抓取未完成的孤兒分片項執行。
-
運行時狀態收集: 監控作業運行時狀態,統計最近一段時間處理的數據成功和失敗數量,記錄作業上次運行開始時間,結束時間和下次運行時間。
-
作業停止,恢復和禁用:用于操作作業啟停,并可以禁止某作業運行(上線時常用)。
-
被錯過執行的作業重觸發:自動記錄錯過執行的作業,并在上次作業完成后自動觸發。可參考Quartz的misfire。
-
多線程快速處理數據:使用多線程處理抓取到的數據,提升吞吐量。
-
冪等性:重復作業任務項判定,不重復執行已運行的作業任務項。由于開啟冪等性需要監聽作業運行狀態,對瞬時反復運行的作業對性能有較大影響。
-
容錯處理:作業服務器與Zookeeper服務器通信失敗則立即停止作業運行,防止作業注冊中心將失效的分片分項配給其他作業服務器,而當前作業服務器仍在執行任務,導致重復執行。
-
Spring支持:支持spring容器,自定義命名空間,支持占位符。
-
運維平臺:提供運維界面,可以管理作業和注冊中心。