Zookeeper Watches文档指出:
“客户端将在看到与该 znode 对应的新数据之前看到它正在观察的 znode 的观察事件。” 此外,“因为 watch 是一次性触发器,并且在获取事件和发送新请求以获取 watch 之间存在延迟,因此您无法可靠地看到 ZooKeeper 中节点发生的每一个变化。”
关键是,不能保证您会收到观看通知。
这很重要,因为在像 Clojure 的Avout这样的系统中,您正在尝试使用Zookeeper在网络上模仿 Clojure 的软件事务内存。这依赖于每次更改都有一个监视通知。
现在我正在尝试确定这是一个编码缺陷,还是一个基本的计算机科学问题,(即CAP 定理)。
我的问题是:Zookeeper Watches 系统是否存在错误,或者这是 CAP 定理的限制?