Curator使用:(四)Master选举

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);

选举是无限循环的,可以看到下面的值,会依次增加

原文地址:https://www.cnblogs.com/june777/p/11867368.html