默认的 zookeeper watcher 是做什么的?
What does the default zookeeper watcher do?
这是获取znode数据的方法。
public byte[] getData(String path,
boolean watch,
Stat stat)
throws KeeperException,
InterruptedException;
- path - 给定的路径
- watch - 是否需要关注该节点
- stat - 节点的状态
我对第二个参数 boolean watch
很好奇,主要是我把 false
放在那里。但是如果我通过true
,Zookeeper会做什么呢?据我所知,将调用默认观察者。它有什么作用?
如果 znode 的数据发生变化,或者 znode 被删除,如果为 watch 传递 true,将向客户端发送一个事件。客户端将调用默认观察器(您传递给构造 Zookeeper 客户端对象)对象的 process 方法。 process 方法被传递给 WatchedEvent 对象。我们可以从事件对象中获取事件类型、znode 路径(如果事件特定于 znode)等。例如,如果事件类型类似于 "NodeDataChanged",则可能会调用 Zookeeper 以获取修改后的数据并重新建立监视。基本上,默认观察者实现了 "process" 方法,"process" 方法具有处理事件的逻辑。
您可以查看以下链接:
http://zookeeper.apache.org/doc/r3.4.1/api/org/apache/zookeeper/WatchedEvent.html
https://zookeeper.apache.org/doc/r3.3.3/api/org/apache/zookeeper/Watcher.html
顺便说一句,zkclient 是更简单的 zookeeper 客户端库。你也可以试试 http://mvnrepository.com/artifact/com.101tec/zkclient
这是获取znode数据的方法。
public byte[] getData(String path,
boolean watch,
Stat stat)
throws KeeperException,
InterruptedException;
- path - 给定的路径
- watch - 是否需要关注该节点
- stat - 节点的状态
我对第二个参数 boolean watch
很好奇,主要是我把 false
放在那里。但是如果我通过true
,Zookeeper会做什么呢?据我所知,将调用默认观察者。它有什么作用?
如果 znode 的数据发生变化,或者 znode 被删除,如果为 watch 传递 true,将向客户端发送一个事件。客户端将调用默认观察器(您传递给构造 Zookeeper 客户端对象)对象的 process 方法。 process 方法被传递给 WatchedEvent 对象。我们可以从事件对象中获取事件类型、znode 路径(如果事件特定于 znode)等。例如,如果事件类型类似于 "NodeDataChanged",则可能会调用 Zookeeper 以获取修改后的数据并重新建立监视。基本上,默认观察者实现了 "process" 方法,"process" 方法具有处理事件的逻辑。
您可以查看以下链接: http://zookeeper.apache.org/doc/r3.4.1/api/org/apache/zookeeper/WatchedEvent.html https://zookeeper.apache.org/doc/r3.3.3/api/org/apache/zookeeper/Watcher.html
顺便说一句,zkclient 是更简单的 zookeeper 客户端库。你也可以试试 http://mvnrepository.com/artifact/com.101tec/zkclient