【问题标题】:Reliably watching a node in Zookeeper在 Zookeeper 中可靠地监视一个节点
【发布时间】:2014-07-24 05:57:18
【问题描述】:

考虑到当我启动时节点可能不存在或可能被删除并重新创建?我试图这样做,但结果证明这样做已经足够复杂了(就设置所需的多个手表而言,并避免在错误时间创建或删除节点时可能导致数据丢失的竞争条件)我放弃了,转而投票。 (落后几秒钟对我的应用程序来说没有问题,但错过更改是不好的,错过所有未来的更改是非常糟糕的。)

我在 Java 中使用 Curator,它有一些食谱可以让一些事情变得更容易,但这似乎不是其中之一。

【问题讨论】:

    标签: apache-zookeeper apache-curator


    【解决方案1】:

    如果您使用 Curator,则将 NodeCache 用于单个节点,或将 PathChildrenCache 用于节点的所有子节点。

    注意:我是策展人的主要作者

    【讨论】:

    • 谢谢!不知怎的,我没有注意到这一点。 NodeCache Javadoc 说“这个类的用户必须为误报和漏报做好准备。” “假阴性”是什么意思?这些类是否保证任何更改都会通知听众?
    • 好的,groups.google.com/d/msg/curator-users/mGkG8w6PG9w/zv8jkiEEE78J 说“这只是总结 ZooKeeper 是一个最终一致的系统。PathChildrenCache 在任何给定的时间点都不会完全准确。但是,最终它会看到所有的变化。 ",github.com/Netflix/curator/issues/25#issuecomment-3876293 说了类似的话。对我来说已经足够了。
    • “假阴性”是什么意思?这些类是否保证任何更改都会通知听众?这是什么意思?
    • ZK 是一种最终一致的机制。您可能会收到一个节点已被删除的通知,但是当您收到消息时,另一个客户端可能已经重新创建了该节点,等等。
    猜你喜欢
    • 2012-10-12
    • 2021-03-09
    • 2012-08-19
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多