专栏首页Golang开发zookeeper(3)——watcher

zookeeper(3)——watcher

针对每个节点的操作,都会有一个监督者 watcher。 当监控的某个对象znode发生了变化,就会触发watcher事件 zk中的watch是一次性的,触发后立即销毁。 父节点,子节点增删改都能触发其watcher 针对不同类型的操作,触发的watcher事件也不同 1 节点创建事件 2 节点删除事件 3 节点数据变化事件

作用场景

统一资源配置

创建父节点触发

[zk: localhost:2181(CONNECTED) 59] stat /test watch
Node does not exist: /test
[zk: localhost:2181(CONNECTED) 60] create /test testd-data

WATCHER::
Created /test
WatchedEvent state:SyncConnected type:NodeCreated path:/test

修改父节点

[zk: localhost:2181(CONNECTED) 64] get /test watch
testd-data
cZxid = 0x1d
ctime = Wed May 08 19:06:40 CST 2019
mZxid = 0x1d
mtime = Wed May 08 19:06:40 CST 2019
pZxid = 0x1d
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 10
numChildren = 0
[zk: localhost:2181(CONNECTED) 65] set /test newdata

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/testcZxid = 0x1d

ctime = Wed May 08 19:06:40 CST 2019
mZxid = 0x1e
mtime = Wed May 08 19:12:27 CST 2019
pZxid = 0x1d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0

删除父节点

[zk: localhost:2181(CONNECTED) 66] get /test watch
newdata
cZxid = 0x1d
ctime = Wed May 08 19:06:40 CST 2019
mZxid = 0x1e
mtime = Wed May 08 19:12:27 CST 2019
pZxid = 0x1d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
[zk: localhost:2181(CONNECTED) 67] delete /test

WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/test

子节点创建

[zk: localhost:2181(CONNECTED) 78] ls /test watch
[]
[zk: localhost:2181(CONNECTED) 79] create /test/sub test

WATCHER::Created /test/sub


WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/tes

修改子节点

依然触发的是NodeDataChanged事件

[zk: localhost:2181(CONNECTED) 83] get /test/sub watch
test
cZxid = 0x26
ctime = Wed May 08 19:30:32 CST 2019
mZxid = 0x26
mtime = Wed May 08 19:30:32 CST 2019
pZxid = 0x26
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 84] set /test/sub testdata

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/test/subcZxid = 0x26

ctime = Wed May 08 19:30:32 CST 2019
mZxid = 0x27
mtime = Wed May 08 19:30:54 CST 2019
pZxid = 0x26
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0

删除子节点

[zk: localhost:2181(CONNECTED) 80] ls /test watch
[sub]
[zk: localhost:2181(CONNECTED) 81] delete /test/sub
[zk: localhost:2181(CONNECTED) 82]
WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/test

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • zookeeper(2)——操作命令

    ls path 查看某个路径下目录列表,ls / 查看根目录下有一个zookeeper的目录。 目录就是一个节点。/ 根节点 zookeeper是子节点

    羊羽shine
  • Golang包——sync

    1.它允许任意读操作同时进行 2.同一时刻,只允许有一个写操作进行 3.并且一个写操作被进行过程中,读操作的进行也是不被允许的 4.读写锁控制下的多个写操...

    羊羽shine
  • zookeeper(4)——alc

    权限控制(access control lists) 针对节点可以设置相关读写等权限,目的是为了保证数据安全性。 权限permissions 可以指定不同的...

    羊羽shine
  • zookeeper权限acl与四字命令

    如果设置了权限后,再次进行设置,就可以不用加上用户名和密码了。而且就算是使用其他用户进行设置,也只会根据第一次设置的用户来进行配置:

    端碗吹水
  • zookeeper(2)——操作命令

    ls path 查看某个路径下目录列表,ls / 查看根目录下有一个zookeeper的目录。 目录就是一个节点。/ 根节点 zookeeper是子节点

    羊羽shine
  • 105道BAT最新Java面试题(MySQL+Redis+nginx+ookeeper+MongoDB)

    4.MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

    程序员追风
  • [mysql8]新坑哈 更改Mysql 表的大小转换设置lower_case_table_names=1

    在安装了8.0.14之后,初始化的时候在my.cnf里设置了lower_case_table_names=1,安装好了之后,启动报错:

    landv
  • Flask get_or_404 和 Django get_object_or_404使用和区别

    简单、
  • scikit-learn 估计器接口

    scikit-learn 中的所有算法——无论 是预处理、监督学习还是无监督学习算法——都被实现为类。 这些类在 scikit-learn 中叫作 估计器(e...

    iOSDevLog
  • C++核心准则:gsl::joining_thread好于std::thread

    A joining_thread is a thread that joins at the end of its scope. Detached thread...

    面向对象思考

扫码关注云+社区

领取腾讯云代金券