elastic-job作业分片策略
elastic-job有以下分片策略:
1. AverageAllocationJobShardingStrategy分片策略
2. OdevitySortByNameJobShardingStrategy分片策略
3. RotateServerByNameJobShardingStrategy分片策略
并且支持还支持自定义分片策略
(1)AverageAllocationJobShardingStrategy分片策略,即基于平均分配算法的分片策略,是默认的分片策略。
对应的class是com.dangdang.ddframe.job.lite.api.strategy.impl.AverageAllocationJobShardingStrategy
具体实现:
a. 当作业数能被服务器整除情况下,依次平均分配作业片:
如果有3台服务器, 分成9片, 则每台服务器分到的分片是: 1=[0,1,2], 2=[3,4,5], 3=[6,7,8].
b. 如果分片不能整除,则不能整除的多余分片将依次追加到序号小的服务器:
如果有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].
该策略缺点:平均分片策略,当分片数小于作业服务器数时,作业会被永远分配序号小的服务器,而导致IP地址靠后的服务器空闲。另外
当有多个作业任务的时候,序号小的服务器分配的任务会相对多一些。
基于平均分配算法的代码如下:
/**
*