elastic job review

 

功能列表

  • 分佈式調度協調
  • 彈性擴容縮容
  • 失效轉移
  • 錯過執行做業重觸發
  • 做業分片一致性,保證同一分片在分佈式環境中僅一個執行實例
  • 自診斷並修復分佈式不穩定形成的問題
  • 支持並行調度
  • 支持做業生命週期操做
  • 豐富的做業類型
  • Spring整合以及命名空間提供
  • 運維平臺

 

做業類型

SimpleJob類型的做業 。 Quartz原生接口類似,但提供了彈性擴縮容和分片等功能java

Dataflow類型做業,需實現DataflowJob接口。該接口提供2個方法可供覆蓋,分別用於抓取(fetchData)和處理(processData)數據。python

流式處理算法

可經過DataflowJobConfiguration配置是否流式處理。spring

流式處理數據只有fetchData方法的返回值爲null或集合長度爲空時,做業才中止抓取,不然做業將一直運行下去; 非流式處理數據則只會在每次做業執行過程當中執行一次fetchData方法和processData方法,隨即完成本次做業。shell

若是採用流式做業處理方式,建議processData處理數據後更新其狀態,避免fetchData再次抓取到,從而使得做業永不中止。 流式數據處理參照TbSchedule設計,適用於不間歇的數據處理。api

Script類型做業服務器

script類型做業意爲腳本類型做業,支持shell,python,perl等全部類型腳本。只需經過控制檯或代碼配置scriptCommandLine便可,無需編碼。執行腳本路徑可包含參數,參數傳遞完畢後,做業框架會自動追加最後一個參數爲做業運行時信息。框架

 

做業配置

Elastic-Job配置分爲3個層級,分別是Core, Type和Root。每一個層級使用類似於裝飾者模式的方式裝配。運維

Core對應JobCoreConfiguration,用於提供做業核心配置信息,如:做業名稱、分片總數、CRON表達式等。分佈式

Type對應JobTypeConfiguration,有3個子類分別對應SIMPLE, DATAFLOW和SCRIPT類型做業,提供3種做業須要的不一樣配置,如:DATAFLOW類型是否流式處理或SCRIPT類型的命令行等。

Root對應JobRootConfiguration,有2個子類分別對應Lite和Cloud部署類型,提供不一樣部署類型所需的配置,如:Lite類型的是否須要覆蓋本地配置或Cloud佔用CPU或Memory數量等。

一 java代碼配置

二spring 命名空間配置

 

做業分片的策略

job-sharding-strategy-class

AverageAllocationJobShardingStrategy

全路徑:

com.dangdang.ddframe.job.lite.api.strategy.impl.AverageAllocationJobShardingStrategy

策略說明:

基於平均分配算法的分片策略,也是默認的分片策略。

若是分片不能整除,則不能整除的多餘分片將依次追加到序號小的服務器。如:

若是有3臺服務器,分紅9片,則每臺服務器分到的分片是:1=[0,1,2], 2=[3,4,5], 3=[6,7,8]

若是有3臺服務器,分紅8片,則每臺服務器分到的分片是:1=[0,1,6], 2=[2,3,7], 3=[4,5]

若是有3臺服務器,分紅10片,則每臺服務器分到的分片是:1=[0,1,2,9], 2=[3,4,5], 3=[6,7,8]

OdevitySortByNameJobShardingStrategy

全路徑:

com.dangdang.ddframe.job.lite.api.strategy.impl.OdevitySortByNameJobShardingStrategy

策略說明:

根據做業名的哈希值奇偶數決定IP升降序算法的分片策略。

做業名的哈希值爲奇數則IP升序。

做業名的哈希值爲偶數則IP降序。

用於不一樣的做業平均分配負載至不一樣的服務器。

AverageAllocationJobShardingStrategy的缺點是,一旦分片數小於做業服務器數,做業將永遠分配至IP地址靠前的服務器,致使IP地址靠後的服務器空閒。而OdevitySortByNameJobShardingStrategy則能夠根據做業名稱從新分配服務器負載。如:

若是有3臺服務器,分紅2片,做業名稱的哈希值爲奇數,則每臺服務器分到的分片是:1=[0], 2=[1], 3=[]

若是有3臺服務器,分紅2片,做業名稱的哈希值爲偶數,則每臺服務器分到的分片是:3=[0], 2=[1], 1=[]

RotateServerByNameJobShardingStrategy

全路徑:

com.dangdang.ddframe.job.lite.api.strategy.impl.RotateServerByNameJobShardingStrategy

策略說明:

根據做業名的哈希值對服務器列表進行輪轉的分片策略。

自定義分片策略

實現JobShardingStrategy接口並實現sharding方法,接口方法參數爲做業服務器IP列表和分片策略選項,分片策略選項包括做業名稱,分片總數以及分片序列號和個性化參數對照表,能夠根據需求定製化本身的分片策略。

 

定製化處理

Elastic-Job在配置中提供了JobProperties,用於定製化處理,目前支持自定義異常處理及做業處理線程池。

異常處理

可擴展JobExceptionHandler接口,並設置job_exception_handler定製異常處理流程,默認實現是記錄日誌但不拋出異常。

做業處理線程池

可擴展ExecutorServiceHandler接口,並設置executor_service_handler定製線程池

相關文章
相關標籤/搜索