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

ara*_*ant 2 apache-zookeeper

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

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

小智 5

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

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

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

如果您想从导入 ZK 客户端库的 Java 代码中实现这一点,您可以使用这样的类FourLetterWordMain

String zkAnswer = FourLetterWordMain.send4LetterWord ("<zk-address>", <zk-port>, "srvr");
Run Code Online (Sandbox Code Playgroud)

答案字符串将如下所示:

Zookeeper 版本:3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f,建立于 03/23/2017 10:13 GMT
延迟 min/avg/max:0/0/6
接收
:188930x01d
连接
:Zented
Mode:Z0000000000
节点数:337

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