首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
zookeeper监控znode
时间:
2015-05-23 11:32:43
阅读:
425
评论:
0
收藏:
0
[点我收藏+]
标签:
zookeeper
分布式
结构
package zookeeper;
import java.util.List;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.ZooKeeper;
/**
* 众所周知,ZooKeeper中的ZNode是树形结构, 现在我需要给/app1结点设置watcher,监听/app1下增减、删除和修改的结点,
* 并将相应的事件使用log4j记录到日志文件中。ZNode的变化可以直接通过event.getType来获取 使用zk.exists(PATH,
* wc);来为PATH结点设置watcher,所有结点都可以使用wc做watcher。
*
* @author 小明 2015.5.23
*/
public class WatchClient implements Runnable {
//
private List<String> nodeList;
private static final String path = "/app";
private static ZooKeeper zk;
public static void main(String[] args) throws Exception {
WatchClient client = new WatchClient();
Thread thread = new Thread(client);
thread.start();
}
public WatchClient() throws Exception {
zk = new ZooKeeper("192.168.1.97:2181", 99999, new Watcher() {
public void process(WatchedEvent event) {
System.out.println(event.getPath() + event.getType());
}
});
}
/**
* 设置watch线程
*/
public void run() {
Watcher watcher = new Watcher() {
public void process(WatchedEvent event) {
//System.out.println("__________");
// 结点数据改变前的节点列表
List<String> nodeListBefore = nodeList;
// 主结点的数据发生改变时
if (event.getType() == EventType.NodeDataChanged) {
System.out.println("Node data changed:" + event.getPath());
}
if (event.getType() == EventType.NodeDeleted) {
System.out.println("Node data deleted:" + event.getPath());
}
if (event.getType() == EventType.NodeCreated) {
System.out.println("Node data created:" + event.getPath());
}
// 获取跟新后的nodeList
try {
nodeList=zk.getChildren(event.getPath(), false);
} catch (KeeperException e) {
System.out.println(event.getPath()+" has no child, deleted.");
} catch (InterruptedException e) {
e.printStackTrace();
}
// 增加结点
List<String> nodeListNow = nodeList;
if (nodeListBefore.size() < nodeListNow.size()) {
for (String str : nodeListNow) {
if (!nodeListBefore.contains(str)) {
System.out.println("Node created:" + event.getPath() + "/" + str);
}
}
}
// 删除结点
if (nodeListBefore.size() > nodeListNow.size()) {
for (String str : nodeListNow) {
if (!nodeListBefore.contains(str)) {
System.out.println("Node deleted:" + event.getPath() + "/" + str);
}
}
}
}
};
/**
* 监控Path下的节点
*/
while (true) {
try {
zk.exists(path, watcher);// 所要监控的主结点
} catch (Exception e) {
}
try {
nodeList = zk.getChildren(path, watcher);
} catch (Exception e) {
e.printStackTrace();
}
// 对path下每一个结点都设置一个watcher
for (String nodeName : nodeList) {
try {
zk.exists(path + "/" + nodeName, watcher);
} catch (Exception e) {
e.printStackTrace();
}
}
try {
//System.out.println("hhhh");
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
zookeeper监控znode
标签:
zookeeper
分布式
结构
原文地址:http://blog.csdn.net/u010220089/article/details/45932603
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!