ZooKeeper 类
ZooKeeper Java 代码主要使用 org.apache.zookeeper.ZooKeeper 这个类使用 ZooKeeper 服务。
ZooKeeper(connectString, sessionTimeout, watcher)
主要方法
方法说明:
所有同步执行的 API 方法都有可能抛出以下两个异常:
同步方法。如果 watch 为 true,该 znode 的状态变化会发送给构建 ZooKeeper 时(构造器)指定的 watcher。
异步方法,所以返回值为void。cb 是一个 callback,用来接收服务端的响应。ctx 是提供给 cb 的 context。watch 参数的含义同上
异步方法。指定传入一个 Watcher 用来接收该 znode 的状态变化。
同步版本。如果 version 是 -1,无条件更新。如果 version 是非负整数,条件更新。
异步版本。
watch 提供一个让客户端获取最新数据的机制。
如果没有 watch 机制,客户端需要不断的轮询 ZooKeeper 来查看是否有数据更新,非常影响性能。客户端可以在读取数据的时候设置一个 watcher,这样在数据更新时,客户端就会收到通知。
设想用 znode /c 实现一个 counter,使用 set 命令来实现自增 1 操作。条件更新场景:
使用条件更新可以避免对过期数据进行更新操作。乐观锁原理!!