AllocationModule分为两个模块:ShardAllocatorModule和AllocationDecidersModule。这里主要关注后一个模块。
AllocationDecidersModule有一系列AllocationDecider组成,每一个Decider就是一个分配策略。在AllocationDecidersModule中:
add(SameShardAllocationDecider.class).
add(FilterAllocationDecider.class).
add(ReplicaAfterPrimaryActiveAllocationDecider.class).
add(ThrottlingAllocationDecider.class).
add(RebalanceOnlyWhenActiveAllocationDecider.class).
add(ClusterRebalanceAllocationDecider.class).
add(ConcurrentRebalanceAllocationDecider.class).
add(EnableAllocationDecider.class). // new enable allocation logic should proceed old disable allocation logic
add(DisableAllocationDecider.class).
add(AwarenessAllocationDecider.class).
add(ShardsLimitAllocationDecider.class).
add(NodeVersionAllocationDecider.class).
a