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定制线程池