使用Zookeeper API,是否可以知道当前服务器是否是Zookeeper集群的领导者?
文档提到领导者已经看到了所有粉丝中最高的zxid。。有可能以某种方式检查这个吗?
答案 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个字母的单词,然后解析结果。领导者将是“模式:领导者”。但是,这不是非常有用的信息。领导者可以随时改变。你为什么需要这个信息?