与apache zookeeper +策展人的领导选举缓慢

Dan*_*iil 6 apache-zookeeper apache-curator

我正在使用LeaderLatch参与领导者选举.在本地安装ZooKeeper的情况下,当领导者关闭时(当我终止进程时),只有一个实例和几乎相同的时间来选举新的领导者,我有〜30秒来选举领导者.这应该是这样的吗?我可以加快速度吗?

我使用以下代码:

    CuratorFramework curator = CuratorFrameworkFactory.newClient("127.0.0.1", new ExponentialBackoffRetry(100, 3));
    curator.start();
    LeaderLatch leaderLatch = new LeaderLatch(curator, "/test/t");
    leaderLatch.addListener(new LeaderLatchListener() {
        @Override
        public void isLeader() {
            System.out.println("Leader");
        }

        @Override
        public void notLeader() {
        }
    });
    leaderLatch.start();
Run Code Online (Sandbox Code Playgroud)

Dan*_*iil 7

我想出来了:ZooKeeper会话超时30秒,在此期间它不会删除短暂的节点.这就是新领导人没有当选的原因(因为领导者节点没有当选).此外,当所有节点都关闭并在最后一个领导者超时完成之前再次启动时,这可以防止选举领导者.

为了避免这种情况,您需要使用close方法手动关闭curator ,在这种情况下会话立即终止.