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

时间:2014-08-11 17:00:06

标签: 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();

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

你可以减少"滴答时间" zookeeper配置文件中的参数。并重新启动所有服务器。