job配置的分片总节点数发生变化监听器(ElasticJob允许通过Web界面修改每个任务配置的分片总数量)。
job的配置信息存储在${namespace}/jobname/config节点上,存储内容为json格式的配置信息。
如果 n a m e s p a c e / j o b n a m e / c o n f i g 节点的内容发生变化, z k 会触发该节点的节点数据变化事件,如果 z k 中存储的分片节点数量与内存中的分片数量不相同的话,调用 S h a r d i n g S e r v i c e 设置需要重新分片标记(创建 {namespace}/jobname/config节点的内容发生变化,zk会触发该节点的节点数据变化事件,如果zk中存储的分片节点数量与内存中的分片数量不相同的话,调用ShardingService设置需要重新分片标记(创建 namespace/jobname/config节点的内容发生变化,zk会触发该节点的节点数据变化事件,如果zk中存储的分片节点数量与内存中的分片数量不相同的话,调用ShardingService设置需要重新分片标记(创建{namespace}/jobname/leader/sharding/necessary持久节点)并更新内存中的分片节点总数。
1.2 源码分析ListenServersChangedJobListener 监听器
class ListenServersChangedJobListener extends AbstractJobListener {
@Override
protected void dataChanged(final String path, final Type eventType, final String data) {
if (!JobRegistry.getInstance().isShutdown(jobName) && (isInstanceChange(eventType, path) || isServerChange(path))) {
shardingService.setReshardingFlag();
}
}
private boolean isInstanceChange(final Type eventType, final String path) {
return instanceNode.isInstancePath(path) && Type.NODE_UPDATED != eventType;
}
private boolean isServerChange(final S