private static ZooKeeper zk = null;
//对zk进行初始化,要判断连接成功后才能调用,不判断的话,把zk的超时时间设置长点,不然会包超时错误
public static void initZook() throws Exception {
PropertiesHelper atsrootConfig = ATSROOTConfig.getATSROOTConfig();
String path = (String) atsrootConfig.get("REGISTER.Svr1.Host");
zk = new ZooKeeper(path, 10000, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
logger.info("ZK mongitor {}", watchedEvent.getState());
}
});
while (true) {
if (zk.getState() == ZooKeeper.States.CONNECTING) {
break;
} else {
logger.info("ZK mongitor reload connection");
Thread.sleep(1000);
}
}
}
public void getZookeeper() throws Exception {
ls("/MDTService", zk, "1");
}
//循环获取zk的节点,ip和端口
public static void ls(String path, ZooKeeper zk, String type)
throws Exception {
byte[] bts = zk.getData(path, false, null);
String str = new String(bts);
if (str.contains("Stat")){
logger.info(path + ":" + str);
String[] serverName = path.split("/");
MonitorMsg monitor = getMonitor(serverName[serverName.length - 1], str);
MonitorRockDB.saveMonitor(monitor);
}
List<String> list = zk.getChildren(path, null);
if ((list.isEmpty()) || (list == null)) {
return;
}
for (String s : list) {
if (path.equals("/"))
ls(path + s, zk, type);
else
ls(path + "/" + s, zk, type);
}
}
private static MonitorMsg getMonitor(String... strings) {
MonitorMsg msg = new MonitorMsg();
msg.serverName = strings[0];
msg.key = "zookeeper";
msg.desc = strings[1];
msg.value = 1;
return msg;
}
获取zookeeper的节点,ip,端口
于 2022-09-13 08:55:44 首次发布