【问题标题】:Zookeeper watches :: No notification in case of child node modificationZookeeper watch :: 子节点修改不通知
【发布时间】:2016-03-11 01:40:35
【问题描述】:

我们发现 zookeeper 手表存在问题。我们创建一个节点“/newtest”,目的是在其中添加/修改节点。我们正在监视“/newtest”。我们的观察是,如果添加或删除子项,我们会收到通知但如果修改了子项,我们不会收到通知

下面是 zkCli.sh 命令的输出

========

[zk: localhost:2181(CONNECTED) 21] ls /newtest watch

[1, 5, 4]

[zk: localhost:2181(CONNECTED) 24] set /newtest/5 hello6

cZxid = 0xc16

ctime = 2016 年 3 月 11 日星期五 01:03:29 UTC

mZxid = 0xc78

mtime = 2016 年 3 月 11 日星期五 01:19:48 UTC

pZxid = 0xc16

cversion = 0

dataVersion = 2

aclVersion = 0

ephemeralOwner = 0x0

数据长度 = 6

numChildren = 0

[zk: localhost:2181(CONNECTED) 25] create /newtest/6 hello6

守望者::

创建 /newtest/6

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/newtest

[zk: localhost:2181(CONNECTED) 26] ls /newtest watch

[1, 6, 5, 4]

[zk: localhost:2181(CONNECTED) 27] set /newtest/6 hello6

cZxid = 0xc79

ctime = 2016 年 3 月 11 日星期五 01:19:59 UTC

mZxid = 0xc86

mtime = 2016 年 3 月 11 日星期五 01:23:18 UTC

pZxid = 0xc79

cversion = 0

数据版本 = 1

aclVersion = 0

ephemeralOwner = 0x0

数据长度 = 6

numChildren = 0

========

请提出解决方案。 Zookeeper 版本为 zookeeper.version=3.4.6--1

【问题讨论】:

    标签: apache-zookeeper


    【解决方案1】:

    我建议不要将 zkCli.sh 用于除测试和小型/快速操作之外的任何事情。如果您想在修改子节点时收到通知,我建议您使用 Apache Curator 在 Java 中编写您自己的观察程序,更具体地说,使用 Tree Cache

    【讨论】:

    • 感谢您的回复。 Cli 是一个分类,我们使用 Golang 进行开发,也面临同样的问题。
    • 我们正在使用 github.com/samuel/gozookeeper 库和 ChildrenW() 来监视子操作通知。我们还观察到子修改没有得到通知。
    • 我没有尝试过 Golang 的 zookeeper,但仍然建议使用 Curator,这比尝试自己处理所有极端情况要容易得多。看看godoc.org/github.com/flier/curator.go,不幸的是我没有使用 Golang 的 Curator。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 2015-06-29
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多