zookeeper检查特定服务器是否是领导者

时间:2012-11-24 18:44:02

标签: apache-zookeeper

使用Zookeeper API,是否可以知道当前服务器是否是Zookeeper集群的领导者?

文档提到领导者已经看到了所有粉丝中最高的zxid。。有可能以某种方式检查这个吗?

3 个答案:

答案 0 :(得分:2)

您可以从不同位置找到此信息。 最简单的方法是在每台Zookeeper机器上运行脚本./bin/zkServer.sh status。您将获得以下形式的答案:

  

默认启用ZooKeeper JMX
  使用配置:/path/to/conf/zoo.cfg
  模式:关注者

对于领导节点,最后一行将相应显示。

如果要从已导入ZK客户端库的Java代码中实现此目的,则可以使用类FourLetterWordMain,如下所示:

String zkAnswer = FourLetterWordMain.send4LetterWord ("<zk-address>", <zk-port>, "srvr");

答案字符串将如下所示:

  

Zookeeper版本:3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f,建于2017年3月23日格林尼治标准时间10:13
  延迟最小值/平均值/最大值:0/0/6
  收到:18893
  已发送:18957
  连接数:2
  优秀:0   Zxid:0x280000016d
  模式:领队
  节点数:337

zkServer.sh脚本基本上也使用此代码。

答案 1 :(得分:1)

不,这是明确隐藏的。您可以使用JMX或四个字母单词之一,但这不在客户端API中。

答案 2 :(得分:1)

您必须向每个实例发送一个stat / srvr 4个字母的单词,然后解析结果。领导者将是“模式:领导者”。但是,这不是非常有用的信息。领导者可以随时改变。你为什么需要这个信息?