當當網分布式作業調度組件:Elastic-Job

jopen 9年前發布 | 50K 次閱讀 作業調度框架 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容器,自定義命名空間,支持占位符。

  • 運維平臺:提供運維界面,可以管理作業和注冊中心。

項目主頁:http://www.baiduhome.net/lib/view/home/1442043786555

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!