Master选举介绍##
分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务
代码###
LeaderSelector selector = new LeaderSelector(cc, "/tmp/leader/master", new LeaderSelectorListener() {
@Override
public void takeLeadership(CuratorFramework client) throws Exception {
//成为leader了
System.out.println("do leader work");
Thread.sleep(5000);
System.out.println("end work");
}
@Override
public void stateChanged(CuratorFramework client, ConnectionState newState) {
System.out.println("stateChanged:"+newState);
}
});
selector.autoRequeue();
selector.start();
Thread.sleep(Integer.MAX_VALUE);
选举是无限循环的,可以看到下面的值,会依次增加