zookeeper学习之java api查找并删除节点<五>

原创
2017/09/03 15:03
阅读数 1.9K

  听说好兄弟 康要当爸爸了,哎哟,巧了,今天写点zk的读取数据,getchildren,zk的api套路相信你也熟悉了吧,总是有区分同步和异步的接口,获取节点数据也是一样的,我的套路也是一样的,柿子先拿软的捏。

来看看 最简单的get孩子,这边两个参数写的很明白,路径,和是否注册watch,watcher会被触发当删除节点或者删除,创建了子节点,返回结果不保证是排序的,其中不存在就抛出KeeperException。

临摹《从Paxos到Zookeeper》的代码,我的脑袋要生锈啦。

这边在/zk-souche 下面创建了一个子节点,然后又创建了一个子节点/che2

但是你发现创建另一个子节点/che2的时候,我们还是打出了日志。

你忘了我们在创建的时候是注册了一个watcher,这边传的是true和false 用的是默认的watcher,这边的wather一旦触发以后,就失效了,需要反复注册的。

在真的工作的方法中用WatchRegistration注册一个默认watcher,这边还可看到h.setType(ZooDefs.OpCode.getChildren),就是上篇说到的RequestHeader,难道服务器用header里面的code作区分吗?然后可以看到response用了GetChildrenRequest,

这边看到ZooDefs.OpCode定义 ,看到很多定义,只是截图了一部分

异步方法的套路也是一样,注册一个异步回调函数。

ctx:说是用来传递上下文信息,目前没看到怎么用

stat:用来存放节点信息,传入原来的stat,方法执行后悔返回新的

还有一个是获取节点的内容 getData,同步与异步,使用系统默认的watcher或者传入一个

使用起来就是这样的,其中数据监听器,看的不仅仅是value的变化 ,而是数据版本的变化。

这些文档写的也是类似的,难道是自动生成的吗 哈哈哈

设置RequestHeader type为getdata,用了GetDataResponse

其中删除也是类似的,同步方法 和异步方法

这个方法参数比较简单,version是版本号,-1是匹配所有的版本号,这边的删除这是不能递归删除。

有点懂它的套路啦,这边RequestHeader 设置type 为detele,只是都不用response

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部