首页 > 解决方案 > 使用 zookeeper 广播事件

问题描述

我想通过 zookeeper 3.4+ 广播事件。

假设我有一些生产者同时增加一个计数器和监听这个增量的听众。

我发现我可以从生产者和侦听器更新 znode 值,这些 znode 更改将被通知。

我可以使用 apache curator shared count。我可以在此共享计数众所周知的路径上分配侦听器,如果我将更新(增加)共享计数值,则会通知侦听器。

我也可以使用分布式原子长节点缓存侦听器。情况相同,我将在众所周知的路径上创建这个原子长。侦听器将侦听此路径上的 znode 更改。当我将更新 atomic long 值时,将通知这些节点值的侦听器。

1)例如上面的例子,我应该使用哪种动物园管理员结构?

2) 我能否确定每次更新共享计数或分布式原子长时都会被广播并保证通知听众?

3) 任何听众都可能错过计数更新事件吗?

标签: apache-zookeeperapache-curator

解决方案


路径子缓存应该是选择。它比其他的更通用,并且比节点缓存更好,因为它提供了事件的类型 ( PathChildrenCacheEvent.Type) - 它是 CONNECTION_RECONNECTED,还是不是。

有关更多信息,请参阅 Curator 的源代码。


推荐阅读