您的位置:首页 > 编程语言 > Java开发

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

2017-09-03 00:00 661 查看
摘要: zookeeper

听说好兄弟 康要当爸爸了,哎哟,巧了,今天写点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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ZooKeeper