如下是根据官方接口文档(http://zookeeper.apache.org/doc/r3.4.1/api/org/apache/zookeeper/ZooKeeper.html#register(org.apache.zookeeper.Watcher)及源码注释进行提炼,以指导对zookeeper的开发。

1、创建zookeeper节点:create(String path, byte[] data, List<ACL> acl, CreateMode createMode)

1)若已创建的节点已经存在,则会抛出异常:KeeperException.NodeExists,创建操作之前需要判断节点是否已经存在;

2)若父节点不存在,则抛出异常:KeeperException.NoNode,因此,当节点路径是多层,需要逐层创建节点;

3)若创建路径的父节点为临时节点,则抛出异常:KeeperException.NoChildrenForEphemerals,记孩子节点不能有子节点;

4)若数据大小超出1M,则抛出异常:KeeperExecption。

2、关闭连接:public void close()

一旦客户端被关闭,对用的回话将会失效。同时,在zookeeper服务器上和该回话相关的临时节点都将被删除。

3、删除给定路径节点:delete(String path, int version)

    1)如果version为-1,则匹配节点的任何版本;

2)如果节点不存在,则抛出异常:KeeperException.NoNode,则删除操作前需要西安判断路径对应节点是否存在;

3)如果version的值和节点版本号不匹配,则抛出异常:KeeperException.BadVersion;

4)如果节点还有孩子节点,则抛出异常:KeeperException.NotEmpty。

4、设置给点节点的数据:setData(String path, byte[] data, int version)

    1)如果version为-1,则匹配节点的任何版本;

2)如果给定路径节点不存在,则抛出异常:KeeperException.NoNode,因此执行设置操作之前,需要先判断节点是否存在;

3)如果给定版本和节点版本不匹配,则抛出异常:KeeperException.BadVersion;

4)若数据大小超出1M,则抛出异常:KeeperExecption。

5、判断指定路径节点是否存在,exists(String path, Watcher watcher)

1)如果节点不存在,则返回null;

2)如果watcher非null,且操作执行成功时,将观察给定路径的节点;

3)对给定路径节点的增加/删除成功操作,以及对该节点数据的成功设置,都将触发该观察。

6、获取给定路径节点的数据:byte[] getData(String path, Watcher watcher, Stat stat)

1)如果watcher非null,且操作执行成功时,将观察给定路径的节点;

2)对给定路径节点的删除成功操作,以及对该节点数据的成功设置,都将触发该观察。

3)若给定路径节点不存在,则抛出异常:KeeperException.NoNode;

7、获取给定路径节点的孩子列表:List<String> getChildren(final String path, Watcher watcher)

    1)如果watcher非null,且操作执行成功时,将观察给定路径的节点;

2)对该路径节点的成功删除操作,以及成功创建或删除该节点的孩子节点,都会出发该观察;

3)返回的孩子节点将不被排序,既不保证是字典或自然序。

8、获取给定路径节点的孩子列表及状态结构:List<String> getChildren(String path, boolean watch, Stat stat)

9、注册默认观察:void register(Watcher watcher)

10、sync()方法的使用:

如果客户端A将一个节点/a的值从0修改为1,然后通知客户端B读取/a,客户端B读取到的值可能还是0,这取决于它连接到了哪个服务器。如果客户端A和B读取到相同的值很重要,那么客户端B应该在执行读取之前调用sync()方法。

11、构造函数,创建zookeeper客户端对象:ZooKeeper(String connectString, int sessionTimeout, Watcher watcher)

1)回话的创建是异步的,既回话可能在该函数返回之后才能创建完成;

2)状态的任何变化,都将被通知给watcher,但是,在构造器返回前后都有可能接到通知;

3)客户端在和server建立连接时,将从字符串connectString中随机选择一个IP进行连接。

zookeeper[3] zookeeper API开发注意事项总结的更多相关文章

  1. java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明

    文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...

  2. java EE技术体系——CLF平台API开发注意事项(2)——后端测试

    前言:上篇博客说到了关于开发中的一些情况,这篇博客主要说明一些关于测试的内容. 一.宏观说明 要求:每一个API都必须经过测试.   备注:如果涉及到服务间调用(如权限和基础数据),而对方服务不可用时 ...

  3. java EE技术体系——CLF平台API开发注意事项(1)——后端开发

    前言:这是一篇帮助小伙伴在本次项目中快速进入到java EE开发的一些说明,为了让同组小伙伴们开发的时候,有个清晰点的思路.昨天给大家演示分享了基本概况,但没有留下文字总结说明,预防后期有人再次问我, ...

  4. java EE技术体系——CLF平台API开发注意事项(3)——API安全访问控制

    前言:提离职了,嗯,这么多年了,真到了提离职的时候,心情真的很复杂.好吧,离职阶段需要把一些项目中的情况说明白讲清楚,这篇博客就简单说一下在平台中对API所做的安全处理(后面讲网关还要说,这里主要讲代 ...

  5. 【分布式】Zookeeper使用--Java API

    一.前言 上一篇博客我们通过命令行来操作Zookeper的客户端和服务端并进行相应的操作,这篇主要介绍如何通过API(JAVA)来操作Zookeeper. 二.开发环境配置 首先打开Zookeeper ...

  6. Zookeeper详解-API(六)

    ZooKeeper有一个绑定Java和C的官方API.Zookeeper社区为大多数语言(.NET,python等)提供非官方API.使用ZooKeeper API,应用程序可以连接,交互,操作数据, ...

  7. Linux -- 基于zookeeper的java api(二)

    Linux -- 基于zookeeper的java api(二) 写一个关于基于集群的zookeeper的自定义实现HA 基于客户端和监控器:使用监控的方法查看每个注册过的节点的状态来做出操作. Wa ...

  8. Linux -- 基于zookeeper的java api(一)

    Linux -- 基于zookeeper的java api 首先启动你所有的 zkService.sh 查看状态:检查是否启动正确 [root@hu-hadoop2 ~]# zkServer.sh s ...

  9. ZooKeeper客户端原生API的使用以及ZkClient第三方API的使用

    这两部分内容的介绍主要讲的是节点及节点内容和子节点的操作,并且讲解的节点的事件监听以及ACL授权 ZooKeeper客户端原生API的使用 百度网盘地址: http://pan.baidu.com/s ...

随机推荐

  1. 简单dp --- HDU1248寒冰王座

    题目链接 这道题也是简单dp里面的一种经典类型,递推式就是dp[i] = min(dp[i-150], dp[i-200], dp[i-350]) 代码如下: #include<iostream ...

  2. zendstudio正则匹配查询

    Ctrl+H之后,显示的File Search标签页为Containing text. Alt+/ 帮助提示正则匹配的语法. 例子如下: select type from table where id ...

  3. ADSL拨号连接

    dotras是一个提供远程访问服务的组件,使用它可以方便的 进行宽带拨号连接 由于不同的系统中dotras调用的底层api可能不同,所以使用时要根据不同的系统使用不同的dotras. dotras目前 ...

  4. Debugging Failed Because Integrated Windows Authentication Is Not Enabled

    To enable integrated Windows authentication Log onto the Web server using an administrator account. ...

  5. 让sublime支持gbk常用编码

    Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦.不过Sublime Package Control所以供的插件可以让Subli ...

  6. PHP Sessions

    PHP Sessions PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置.Session 变量存储单一用户的信息,并且对于应用程序中 ...

  7. Php 常用类

    图表库下面的类库可以让你很简单就能创建复杂的图表和图片.当然,它们需要GD库的支持.pChart - 一个可以创建统计图的库.Libchart - 这也是一个简单的统计图库.JpGraph - 一个面 ...

  8. VS2013打包与部署

    近期做一个配置工具,完事了想打包一下:由于用的是VS2013:与之前的略有不同,简单的做了一下,在这里分享一下,直接看吧: 首先  是自己新建一个项目 ,我的WPF应用程序 第二步:右键解决方案添加新 ...

  9. JNDI--Java命名和目录接口

    JNDI主要用于在容器中配置某些资源,让所有项目可以使用.JNDI可以提供: 1:数据库连接池.            自定义连接池             第三方连接池 Dbcp           ...

  10. C++拾遗(七)函数相关(2)

    内联函数 内联函数与常规函数的区别在于: 1.常规函数:在执行调用指令时,先存储该指令的内存地址,将函数参数复制到堆栈,然后跳转到被调用函数起点的内存单元,执行函数,将返回值放 入寄存器,最后跳回到一 ...