有没有办法在zookeeper的两个进程中观看一个ZNode?
Is there way to watch one ZNode in two process in zookeeper?
我有 /math
是根节点(在两个进程中都设置了 Watcher)。我在进程A中创建子节点math/exam01
,在进程B中创建子节点math/exam02
(在创建子节点math/exam01
之后)。我希望事件线程将由进程 A 中的 Watcher 触发。但是没有任何反应,能解释一下这是怎么回事吗?
我会尽量回答你的问题:
在进程 A 中,您在现有的 znode /math
上设置了一个 watch。这个watch是用来观察/math
的子节点相关的事件,所以你应该用下面的命令来设置它们:
[PROCESS A]: ls -w /math
然后,您使用进程 A 的客户端为 /math/exam01
路径创建一个子节点,使用以下命令:
[PROCESS A]: create /math/exam01
您刚刚创建了 /math
的子节点,因此触发了事件 Watch。
然后您使用来自进程 B 的客户端在 /math/exam02
处创建 /math
的新子节点。该操作不会触发进程A中的任何Watch事件,因为触发器是One-time。如果您需要发送事件,在进程 A 中的第一个事件触发后,您应该 re-set 监视 /math
。
有关 ZooKeeper 手表的更多信息 here。
我有 /math
是根节点(在两个进程中都设置了 Watcher)。我在进程A中创建子节点math/exam01
,在进程B中创建子节点math/exam02
(在创建子节点math/exam01
之后)。我希望事件线程将由进程 A 中的 Watcher 触发。但是没有任何反应,能解释一下这是怎么回事吗?
我会尽量回答你的问题:
在进程 A 中,您在现有的 znode /math
上设置了一个 watch。这个watch是用来观察/math
的子节点相关的事件,所以你应该用下面的命令来设置它们:
[PROCESS A]: ls -w /math
然后,您使用进程 A 的客户端为 /math/exam01
路径创建一个子节点,使用以下命令:
[PROCESS A]: create /math/exam01
您刚刚创建了 /math
的子节点,因此触发了事件 Watch。
然后您使用来自进程 B 的客户端在 /math/exam02
处创建 /math
的新子节点。该操作不会触发进程A中的任何Watch事件,因为触发器是One-time。如果您需要发送事件,在进程 A 中的第一个事件触发后,您应该 re-set 监视 /math
。
有关 ZooKeeper 手表的更多信息 here。