一、 zookeeper是一个分布式的协调程序(所有程序都是通过订阅它来相互感知)
1. tcp(长链接) + watcher
server -》client
client -》server
2. Driver 中的方法 exists() 监控一个znode的 CURD 的操作。
client1 client2 同时订阅 baidu节点
通过对baidu节点的CURD操作,exists就会监控到,从而通知客户端

接下来是C#代码的实现
1. 实现接口 IWatcher
    public class ExistsWatcher : IWatcher{private ZooKeeper _zookeeper = null; public ExistsWatcher(ZooKeeper zookeeper){_zookeeper = zookeeper;}public void Process(WatchedEvent @event){Console.WriteLine("path={0},state={1},type={2}", @event.Path, @event.State, @event.Type);//重新注册 exists_zookeeper.Exists(@event.Path, this);}}

2. 注册zookeeper  ZookeeperWatcher的实现看 上一节课代码

       ZooKeeper zookeeper = new ZooKeeper("192.168.84.136:2181", TimeSpan.FromSeconds(5),new ZookeeperWatcher());//通过wait函数,等待ZookeeperWatcher 回调函数执行成功
            ZookeeperWatcher.countdownEvent.Wait();var list = zookeeper.GetChildren("/", false);#region 第8节try{Stat stat = new Stat();stat = zookeeper.Exists("/google", new ExistsWatcher(zookeeper));}catch (KeeperException ex){throw new Exception(ex.Message);}#endregion

注意:
client -》server watcher 监控是一次性的,
client 需要在wathcer接收到通知后,从新注册exists

执行了一次创建,一次删除,客户端都收到了通知
3. exists可以监控那些事件
NodeDeleted,NodeCreated,NodeDataChanged
4. exists 应用场景
master -》 backup 双机热备
【临时节点】
zookeeper本质就是一个协调程序。

转载于:https://www.cnblogs.com/dragon-L/p/8574856.html

8.使用Exists监控ZNode的三大Change事件相关推荐

  1. Input type=“file“上传文件change事件只触发一次解决方案

    Input type="file"上传文件change事件只触发一次解决方案 参考文章: (1)Input type="file"上传文件change事件只触发 ...

  2. 解决上传文件或图片时选择相同文件无法触发change事件的问题

    昨天在做一个上传文件的模块时遇到了这样的问题:打开文件一上传,上传成功后再次点击文件一,change事件无反应 <input type="file" name="f ...

  3. change事件判断ajax,jquery中change事件里面if语句失效

    彩色 黑白 两个下拉框 给第一个下拉框change事件 请求不同的ajax地址 改变第二个下拉框的数据 $("#img-type").change(function(){ cons ...

  4. 关于input的change事件触发多次发解决

    $("122").off('change','#logo_name').on('change','#logo_name',function(){ alert("ok&qu ...

  5. 【JQuery】 触发元素的change事件

    select元素的change事件 通过修改select元素的值($("#select_id").val("new value"))并不会触发change事件. ...

  6. Elementui select 设置点击事件,在Change事件前触发

    想要在changge事件触发前,来触发一个事件,可以直接在 Select 选择器上面添加点击事件,但是这样点击事件是不会生效的,需要在点击事件后面加上native <el-selectv-mod ...

  7. jquery 赋值时不触发change事件解决

    $("#optionsId").change(function(){$("#selectOptionsText").val('测试'); }); $(" ...

  8. INPUT[type=file]的change事件不触发问题

    在网页上要操作文件通常会使用INPUT[type=file]控件,但这个控件的设计很蛋疼.它不像其它编程语言中文件选择后会触发一个事件,只是让上面的文字改变,而这个改变可能会触发change事件而已. ...

  9. JavaScript --- 表单focus,blur,change事件的实现

    假设有一个文本框,我们只允许用户输入数值.为此,我们希望: 1.利用focus事件修改文本框内容, 2.利用blur事件回复文本框的内容, 3.利用change事件在用户输入了非数值字符时再次修改背景 ...

最新文章

  1. 用.NET调用oracle的存储过程返回记录集
  2. ipp 实现图像空间的转换
  3. CTFshow 信息收集 web1
  4. VC++ 解析JSON 学习总结
  5. EF 关系规则(一对一、一对多、多对多...)
  6. CodeForces - 1339C Powered Addition(思维+贪心)
  7. UOJ310 黎明前的巧克力 FWT
  8. HTML5简易在线画图工具
  9. LeetCode 1222. 可以攻击国王的皇后(set)
  10. 海康9800平台linux的sdk,流媒体项目外包海康9800平台sdk适配
  11. 第四章节 窗体应用(windows应用程序)
  12. cad对计算机专业的用处,CAD软件的特点和用途
  13. 黑盒测试与白盒测试的区别
  14. 如何正确看谷歌文档android,在Android webview中查看google文档中的pdf时“无法预览”...
  15. 大数据矩阵计算基础(二):R、Excel、Matlab中矩阵操作
  16. 错误处理 宏 c语言,C语言零基础教程之预处理和宏定义篇
  17. 伺服电机步进电机区别
  18. BUCK电源芯片中自举电容的说明
  19. 格林威治时间(时间戳)转换成标准时间
  20. HTML基础知识点整理(三)

热门文章

  1. 32利用文件系统保存数据_网易技术实践|Docker文件系统实战
  2. 2020idea插件怎么同步_没有用过这些插件,别说你在用vscode
  3. 电脑怎么打出冒号符号_Mac小技巧:教你如何在Mac电脑打出command?、option?等特殊符号...
  4. 登录服务器用户账户限制,当用户有登录到的限制时,远程桌面登录报错的解决...
  5. 华为手机怎么强制关机_华为手机电源键这么神?你只拿来锁屏关机,白浪费这么强的黑科技...
  6. 不愿意和别人打交道_始终和人保持距离,最不合群的3星座,孤僻却有真本事,能成大事...
  7. mysql max case连用_mysql 嵌套 case when 的问题
  8. python捕获异常装饰器_python异常装饰器--比较全的版本了
  9. mysql获取最好成绩对应数据的其他项_开源数据同步神器——canal
  10. mtk android 5.1 logo,Android ROM DIY之MTK平台手机通用移植