为什么Zookeeper会使Watches一次触发?

时间:2017-06-08 08:31:55

标签: java apache-zookeeper

动物园管理员的手表是一次触发;如果我收到一个观看活动并希望得到未来变化的通知,我必须另外设置一个手表。

有一些缺点:

1)这使我的代码变得复杂

2)在获取活动和发送新手表以获取手表之间存在延迟,可能会遗漏一些更改!

为什么Zookeeper会使Watches一次触发?

1 个答案:

答案 0 :(得分:1)

您可以看到[ZOOKEEPER-153] [1] https://issues.apache.org/jira/browse/ZOOKEEPER-153

实际上,这种永久性手表不会在一次性手表上提供任何额外的好处。具体来说,监视事件中不包含任何数据,因此客户端仍需要进行查询操作以获取与更改相对应的数据;即使这样,在收到事件之后和客户端发送查询操作之前,znode仍然可以再次更改。甚至可以使用一次监视并检查znode的stat结构中的mzxid来找到对znode的更改次数。客户端仍将错过客户端切换ZooKeeper服务器时发生的事件。