Zookeeper监听器原理

监听器原理


客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、节点删除、子目录节点增加删除)时,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)查看节点状态:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值