文档章节

zookeeper watcher机制

jeff_han
 jeff_han
发布于 2015/11/27 16:09
字数 291
阅读 755
收藏 3

    客户端ClientWatchManager,管理由ClientXncn产生的watchers和handle events。在zookeeper的exists、getChildren、getData等这些API中可以注册watcher对象到ClientWatchManager中,create、setData、delete等这些引起zookeeper节点变化的API会触发watcher process的执行。

    服务端WatchManager,服务端的watcher对象管理器;注册watcher时候,会在服务端调用FinalRequestProcessor.processRequest。注册client对应的服务端连接对象ServerCnxn(实现了watcher接口)到DataTree中。这样在触发server端的watcher时,其实就是触发ServerCnxn的process方法。在ServerCnxn的process这个实现里会向对应的注册watcher对象的client,发送notify消息。而客户端会调用对应path注册的watcher对象的process方法。

   zookeeper的watcher是一次性的,触发后失效。

   创建zookeeper链接时注册的watcher会被赋给watchermanager的defaultwatcher。源码如下:

public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher,
        boolean canBeReadOnly)
    throws IOException
{
    LOG.info("Initiating client connection, connectString=" + connectString
            + " sessionTimeout=" + sessionTimeout + " watcher=" + watcher);
    watchManager.defaultWatcher = watcher;
    ConnectStringParser connectStringParser = new ConnectStringParser(
            connectString);
    HostProvider hostProvider = new StaticHostProvider(
            connectStringParser.getServerAddresses());
    cnxn = new ClientCnxn(connectStringParser.getChrootPath(),
            hostProvider, sessionTimeout, this, watchManager,
            getClientCnxnSocket(), canBeReadOnly);
    cnxn.start();
}

对于exists可以自定义watcher,如果使用zk.exists("/root", true);默认会冲洗注册defaultwatcher实现监控。

© 著作权归作者所有

jeff_han
粉丝 12
博文 37
码字总数 19577
作品 0
海淀
部门经理
私信 提问
ZooKeeper的Watcher机制

ZooKeeper 提供了分布式数据的发布/订阅功能。 在 ZooKeeper 中,引入了 Watcher 机制来实现这种分布式的通知功能。 ZooKeeper 允许客户端向服务端注册一个 Watcher 监听, 当服务器的一些特...

Java搬砖工程师
2018/11/19
332
0
[ZooKeeper]基于Java API 实践

前提 建立maven项目中 要导入zookeeper的依赖 我们同时可以打开linux中的zookeeper客户端来验证对比。输入 zkCli.sh 便可以进入zookeeper客户端 。 一、建立连接 直接建立连接后,不进行等待...

瑾兰
2018/06/13
0
0
基于 ZooKeeper 实现爬虫集群的监控

ZooKeeper ZooKeeper 是一个开源的分布式协调服务,ZooKeeper框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper成为Hadoop,HBase和其他分...

fengzhizi715
05/26
0
0
Zookeeper 的功能,安装使用方法,可视化工具ZooInspector

http://zookeeper.apache.org/ Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination. 一、zookeeper提供......

逝水丶
2017/11/05
1K
0
中小研发团队架构实践之分布式协调器.Net版ZooKeeper

一、ZooKeeper是什么 Apache ZooKeeper是由Apache Hadoop的子项目发展而来,于2010年11月正式成为了Apache的顶级项目。 ZooKeeper是一个开放源代码的分布式协调服务。它具有高性能、高可用的...

Java干货分享
01/11
13
0

没有更多内容

加载失败,请刷新页面

加载更多

规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
24分钟前
4
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
215
9
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
10
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部