如何处理Zookeeper的通知?

agxfikkp  于 2022-12-16  发布在  Apache
关注(0)|答案(1)|浏览(118)

我有多个进程在内存队列上运行,该队列是在Zookeeper上创建/删除的连续znode的表现形式。
当添加一个znode时,等价项会被添加到所有相关进程的队列中;同样,当删除一个znode时,等价项也会从每个相关进程的队列中删除。
添加和删除信号预期是平衡的,因为每个添加的项目最终都应该被删除。
我遇到过这样一种情况:znode的添加和删除速度非常快,并且在添加通知之前的某个进程收到了删除通知。因此,尝试删除该项目,但失败了,因为它实际上并不存在,然后收到了添加该项目的添加信号,但它从未被删除。
一个简单的解决方案是在将项添加到队列之后Assert等价的znode的存在,这对我来说已经足够好了,但是它似乎没有达到它所能达到的效率。
我的问题是,是否有一种方法可以更有效地或“Zookeeper的方式”处理这种情况?

3pvhb19x

3pvhb19x1#

您正在尝试使用ZooKeeper作为消息队列,这不是专门为设计的。ZooKeeper中没有观察者通知的排序和传递保证。相反,您应该使用一些消息传递系统,如Kafka或RabbitMQ。

相关问题