Apache zookeeper zookeeper检查特定服务器是否处于领先地位

Apache zookeeper zookeeper检查特定服务器是否处于领先地位,apache-zookeeper,Apache Zookeeper,使用Zookeeper API,是否可以知道当前服务器是否是Zookeeper集群的领导者 文档中提到领导者在所有追随者中看到了最高的zxid。。有没有可能以某种方式检查这个问题?没有,这是显式隐藏的。您可以使用JMX或四个字母中的一个,但这超出了客户端API。您必须向每个实例发送一个stat/srvr四个字母的单词,然后解析结果。领导者将是一个“模式:领导者”。然而,这不是非常有用的信息。领导者可以随时改变。您为什么需要这些信息?您可以从不同的位置找到这些信息。 最简单的方法是从每台Zooke

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


文档中提到领导者在所有追随者中看到了最高的zxid。。有没有可能以某种方式检查这个问题?

没有,这是显式隐藏的。您可以使用JMX或四个字母中的一个,但这超出了客户端API。

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

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

ZooKeeper JMX默认启用
使用config:/path/to/conf/zoo.cfg
模式:跟随者

对于引线节点,最后一行将相应地显示

如果您想从导入了ZK客户端库的Java代码中实现这一点,可以使用类
FourletWordMain
,如下所示:

String zkAnswer = FourLetterWordMain.send4LetterWord ("<zk-address>", <zk-port>, "srvr");
String zkarse=FourLetterWordMain.send4LetterWord(“,“srvr”);
答案字符串如下所示:

Zookeeper版本:3.4.10-39D3A4F269333C922ED3DB283BE479F9DEACA0F,于2017年3月23日10:13 GMT建立
最小/平均/最大延迟:0/0/6
收到:18893
发送:18957
连接:2个
未付:0 Zxid:0x280000016d
模式:领导者
节点数:337


这段代码基本上也被
zkServer.sh
脚本使用。

为什么你想知道你是否连接到了领导者?没有特别的原因。我可以用一种不需要知道的方式来写我的逻辑。我只是想知道你能不能查一下四个字母中的一个?