我用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();发布于 2014-08-12 13:35:06
我理解了这一点: ZooKeeper在不删除临时节点的会话中有30秒的超时时间。这就是为什么没有选出新的领导人(因为领导人节点没有当选)。此外,当所有节点都被关闭并在上一次领袖超时结束之前重新启动时,这将防止选择领导人。
为了避免这种情况,您需要使用close方法手动关闭馆长,在这种情况下,会话会立即终止。
发布于 2014-08-14 06:53:33
您可以在动物园管理员配置文件.and中减少"ticktime“参数,重新启动所有服务器。
https://stackoverflow.com/questions/25248547
复制相似问题