江明涛的博客
Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?
Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?

Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?

ZooKeeper 的 watch 监听通知是一种一次性的触发机制,也就是说,一旦触发了一次通知,相应的 watch 监听器就会被移除,如果你需要继续监听节点的变化,需要重新注册 watch 监听器。

这是因为,ZooKeeper 的 watch 通知机制的实现原理是,当某个节点发生变化时,ZooKeeper 服务器会将通知发送给监听这个节点的客户端,并从服务器中删除这个 watch 监听器。这样可以避免不必要的资源浪费和通知传输的阻塞。

由于 ZooKeeper 集群中的节点数可能非常多,每个节点可能有许多 watch 监听器,如果这些 watch 监听器都是永久性的,会导致 ZooKeeper 服务器上维护大量的连接和监听器,导致系统资源的浪费和性能下降。

因此,一次性的 watch 通知机制不仅可以节约系统资源,同时也可以更好地控制系统的并发度和负载均衡。在使用 ZooKeeper 时,我们需要理解这种机制,并相应地设计和实现我们的应用程序。

上次更新时间 13 3 月, 2023 at 09:59 上午