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定製線程池