Zookeeper之常用API详解
来源:互联网 发布:一淘是淘宝客吗 编辑:程序博客网 时间:2024/06/04 18:03
1、创建ZNode
①命令行方式
- 在根目录下创建“FZnode"节点并存储数据”First Znode":
create /FZnode "First Znode"
- 在根目录下创建短暂的Znode节点
create -e /SZnode "Secondary Znode"
- 创建短暂有序列的Znode节点
create -e -s /EZnode "Ephemeral_SEQUENTIAL"
- 创建持久有序列的Znode节点
create -s /PZnode "PERSISTENT_SEQUENTIAL"
②JAVA调用API
/** * 创建ZNode节点 * @throws Exception */ @Test public void create() throws Exception{ //用于停止(等待)主进程,直到客户端与Zookeeper集合连接。 final CountDownLatch cd = new CountDownLatch(1); ZooKeeper zk = new ZooKeeper("centos75:2181,centos76:2181,centos77:2181",5000,new Watcher(){ //watcher返回Zookeeper连接状态 public void process(WatchedEvent watchedEvent) { System.out.println(watchedEvent.getState()); //连接建立,回调process接口时,其watchedEvent.getState() 为 Event.KeeperState.SyncConnected if(watchedEvent.getState() == Event.KeeperState.SyncConnected){ //唤醒wait中的线程 cd.countDown(); } } }); cd.await(); /** * 1、Znode节点路径 * 2、Znode节点内容 * 3、Znode创建节点的访问控制列表 * 4、Znode状态,有四种状态 */ zk.create("/APIjava",new String("test API").getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT); }
2、获取ZNode数据
①、命令行方式
get /FZnode
/** * 获取Znode数据 */ @Test public void getData() throws Exception { final CountDownLatch countDownLatch = new CountDownLatch(1); ZooKeeper zk = new ZooKeeper("centos75:2181,centos76:2181,centos77:2181", 5000, new Watcher() { public void process(WatchedEvent watchedEvent) { if(watchedEvent.getState()==Event.KeeperState.SyncConnected){ countDownLatch.countDown(); } } }); countDownLatch.await(); byte[] data = zk.getData("/apijava", false, new Stat()); System.out.println(new String(data)); }
3、给ZNode设置内容
①、命令行方式
set /FZnode "Set Data"②、JAVA调用API
/** * 给Znode设置数据 * @throws Exception */ @Test public void setData() throws Exception{ final CountDownLatch countDownLatch = new CountDownLatch(1); ZooKeeper zk = new ZooKeeper("centos75:2181,centos76:2181,centos77:2181", 5000, new Watcher() { public void process(WatchedEvent watchedEvent) { if(watchedEvent.getState() == Event.KeeperState.SyncConnected){ countDownLatch.countDown(); } } }); countDownLatch.await(); /** * 1表示当前Znode版本,每当数据更改时,Zookeeper会更新Znode的版本号. */ zk.setData("/apijava",new String("API SET").getBytes(),1); }
4、列出ZNode下的的子节点
①、命令行方式
ls /FZnode②、JAVA调用API
/** * 获取Znode所有的子节点 */ @Test public void getChild()throws Exception{ final CountDownLatch countDownLatch = new CountDownLatch(1); ZooKeeper zk = new ZooKeeper("centos75:2181,centos76:2181,centos77:2181", 5000, new Watcher() { public void process(WatchedEvent watchedEvent) { if(watchedEvent.getState() == Event.KeeperState.SyncConnected){ countDownLatch.countDown(); } } }); countDownLatch.await(); List<String> children = zk.getChildren("/apijava", false); for (int i = 0; i < children.size(); i++) { System.out.println(children.get(i)); } }
5、删除ZNode节点
①、命令行方式
rmr /FZnode
②、JAVA调用API
/** * 删除指定Znode,并且该Znode没有子项 * @throws Exception */ @Test public void delete() throws Exception{ final CountDownLatch countDownLatch = new CountDownLatch(1); ZooKeeper zk = new ZooKeeper("centos75:2181,centos76:2181,centos77:2181", 5000, new Watcher() { public void process(WatchedEvent watchedEvent) { if(watchedEvent.getState() == Event.KeeperState.SyncConnected ){ countDownLatch.countDown(); } } }); countDownLatch.await(); zk.delete("/APIjava0000000012",0); }6、判断ZNode是否存在:
/** * 检查Znode是否存在 */ @Test public void exists() throws Exception { final CountDownLatch countDownLatch = new CountDownLatch(1); ZooKeeper zk = new ZooKeeper("centos75:2181,centos76:2181,centos77:2181", 5000, new Watcher() { public void process(WatchedEvent watchedEvent) { if(watchedEvent.getState() == Event.KeeperState.SyncConnected){ countDownLatch.countDown(); } } }); countDownLatch.await(); Stat stat = zk.exists("/apijava", false); if(stat == null){ System.out.println("Znode节点不存在"); }else { System.out.println("Znode节点存在,并且版本是:"+stat.getVersion()); } }7、总结:
- 梳理笔记,加强记忆及理解。
- 巩固基础,勇攀高峰!!!
- 加油(ง •_•)ง(ง •_•)ง(ง •_•)ง
阅读全文
1 1
- Zookeeper之常用API详解
- ZooKeeper 常用操作API详解
- ZooKeeper 常用操作API详解
- zookeeper: 入门 - 3 - API常用函数功能与参数详解
- zookeeper API常用函数功能与参数详解
- Zookeeper之JAVA API
- ZooKeeper之Java API
- Zookeeper实战之使用Zookeeper API
- zookeeper入门(3)API常用函数功能与参数详解
- Unity3d热门基础之常用API之Input使用详解
- hibernate常用API详解
- ES6 常用API详解
- angular 中一些常用的小方法之详解API
- OpenGL之画三角形以及常用API详解。
- ZooKeeper之FastLeaderElection算法详解
- ZooKeeper系列之九:ZooKeeper API简介及编程
- ZooKeeper系列之九:ZooKeeper API简介及编程
- ZooKeeper系列之九:ZooKeeper API简介及编程
- 笔试/面试:删除一个无头单链表的非尾节点 ,从尾到头打印单链表
- connectionStrings 与 appSettings 的区别
- Opencv安装(vs2010 和 Opencv2.4.9)
- 学习爬虫基础6-HTTP响应状态码参考:
- andorid整体概念浅析
- Zookeeper之常用API详解
- Django admin学习(一)
- Android应用图标上的小红点Badge实现
- 值得推荐的C/C++框架和库
- 安装android studio遇上的问题
- 剑指offer——从尾至头打印链表
- HDU
- 【原创】git的相关基础知识笔记(一)
- Lua 基础之迭代器