Zookeeper中对节点的监听(Watch)
概念
Zookeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端上去,该机制是Zookeeper实现分布式协调服务重要特性
Zookeeper中引入Watcher机制来实现了发布/订阅功能,能够让多个订阅者同时鉴定某一对象,当一个对象自身状态变化时,会通知所有订阅者
Zookeeper原生支持通过注册Watcher来进行事件监听,但是其使用并不是特别方便,需要开发人员反复注册Watcher,比较繁琐
Curator引入了Cache来实现对Zookeeper服务端事件的监听。
三种监听模式
- NodeCache:监听某一个特定的节点
- PathChildrenCache:监听一个节点的子节点
- TreeCache:可以监听整个树上的节点,类似于NodeCache和PathChildrenCache的结合
NodeCache
/**
* 演示 NodeCache:给指定一个节点注册监听器
*/
@Test
public void testNodeCache() throws Exception {
//1. 创建NodeCache对象
final NodeCache nodeCache = new NodeCache(client,"/app1");
//2. 注册监听
nodeCache.getListenable().addListener(new NodeCacheListener() {
@Override
public void nodeChanged() throws Exception {
System.out.println