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

相关文章
相关标签/搜索