当前位置:   article > 正文

Zookeeper监听器原理_zk 节点监听机制

zk 节点监听机制

监听器原理


客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目录节点增加删除)时,Zookeeper会通知客户端。监听机制保证Zookeeper保存的任何的数据的任何改变都能快速的响应到监听了该节点的应用程序。

1、监听原理详解

1)首先要有一个main()线程。
2)在main线程中创建Zookeeper客户端,这时就会创建两个线程。一个负责网络连接通信(connect),一个负责监听(listener)。
3)通过connect线程将注册的监听事件发送给Zookeeper。
4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
5)Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。
6)listener线程内部调用了process()方法。
在这里插入图片描述

2、常见的监听

1)监听节点数据的变化
get path [watch]
2)监听子节点增减的变化
ls path [watch]

3、监听器操作

1)在zookeeper103注册一个监听器,监听 /sanguo节点:
可以看到现在 /sanguo节点里面的值是diaocan
在这里插入图片描述
现在注册监听器:
在这里插入图片描述
在zookeeper101改变 /sanguo节点里面的值:
在这里插入图片描述
这时zookeeper103监听到了节点的值的变化:
在这里插入图片描述
在zookeeper101再修改一次 /sanguo里面的值:
在这里插入图片描述
发现在zookeeper103并没有监听到变化:
在这里插入图片描述
注意:在zookeeper101上再多次修改 /sanguo的值,zookeeper103上不会再收到监听。因为注册一次,只能监听一次。想再次监听,需要再次注册。

2)节点的子节点变化监听(路径变化):
在zookeeper103主机上注册监听 /sanguo节点的子节点变化:
在这里插入图片描述

在zookeeper101的 /sanguo创建一个子节点:
在这里插入图片描述
此时zookeeper103已经监听到 /sanguo子节点发生了变化:
在这里插入图片描述
注意:节点的路径变化,也是注册一次,生效一次。想多次生效,就需要多次注册。

4、节点删除与查看

1)删除一个结点:
在这里插入图片描述
2)如果想删除 /sanguo节点和这个节点下的所有子节点,不能用delete,要用deleteall:
在这里插入图片描述
3)查看节点状态:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/974858
推荐阅读
相关标签
  

闽ICP备14008679号