ZooKeeper 通过client 对指定节点设置watcher的注意事项

ZooKeeper client 可以对某个znode设置watcher,以便当节点发生变化时,client能够获得相应的Event通知。若不设置watcher,则不能收到通知。


以ZooKeeper的C Client为例,可以在调用以下3个函数,get某个节点的数据或状态时,同时设置watcher标志。

zoo_exists   // 节点是否存在。若设置watcher,节点被删除时,收到ZOO_DELETED_EVENT; 节点被创建时,收到ZOO_CREATED_EVENT。

zoo_get  // 获取节点数据。若设置watcher,节点数据改变时,收到ZOO_CHANGED_EVENT。

zoo_get_children  //获取孩子节点列表。若设置watcher,孩子节点数改变时,收到ZOO_CHILD_EVENT。

注意:

1. 设置一次Watcher(不能重复设置,只相当于设置一次)只能收到一次Event通知,之后若节点再发生变化,不会再次收到通知,因此每次收到Event后,需要对节点重新设置Watcher。

2. zoo_exists可以对尚未创建的节点设置watcher,节点创建时发送CREATED_EVENT;反之,节点删除时发送DELETED_EVENT。

3. zoo_getzoo_get_children不能对尚未创建的节点设置watcher创建之前设置的watcher在节点创建后是无效的。

(但节点创建后,若通过zoo_esixts设置watcher,之前zoo_get设置的watcher似乎变得有效)

4. zoo_get, zoo_get_children对存在的节点设置watcher后,若节点被删除,watcher将失效,也就是说节点被重新创建后,之前设置的watcher将变得无效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值