zookeeper[3] zookeeper开发注意事项总结

如下是根据官方接口文档(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()方法。

时间: 2024-12-28 14:53:41

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

Dubbo+zookeeper使用方法以及注意事项

Dubbo+zookeeper使用方法以及注意事项 最近在一个项目中想做一个数据库查询的服务,目的是将数据库查询这块从程序中脱离出来,形成一个公共的服务平台,大家都可以调用,经过考虑决定选用Dubbo+zookeeper这个经典的组合来实现,以下记录我事件中遇上的问题,希望大家可以借鉴,同时对自己也是一种备忘吧! 1.对应的包下载: 基本就是Spring的包+zookeeper的包+dubbo的包 生产部分配置如下 <?xml version="1.0" encoding=&qu

Zookeeper - 什么是Zookeeper,以及zookeeper的安装(1)

Zookeeper 什么是Zookeeper? 官网传送门 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. 从设计模式来说基于观察者模式设计的分布式服务管理框架,存储大家都关心的数据,然后接受观察者的注册.一旦这些数据状态发生变化,zookeeper就将负责通知已经注册的观察者做出反应. Zoo

zookeeper 学习 zookeeper下载部署

下载 http://mirror.bit.edu.cn/apache/zookeeper/ 校验 解压后得到zookeeper-3.4.10.jar,使用md5sum zookeeper-3.4.10.jar 得到 450dbad05d829607bc45b9ccad789890  zookeeper-3.4.10.jar 与zookeeper-3.4.10.jar.md5中的内容比较 伪集群部署 以server0为例 [email protected]:~/server0/zookeeper/

[SOE] ArcGIS Server对象扩展(SOE)开发注意事项

ArcGIS  Server对象扩展(SOE)开发注意事项 1.SOE介绍 在ArcGIS 10.1中ArcGIS Server不在支持DCOM方式的连接,这也就意味着我们不能通过本地方式的连接使用ArcObjects提供的更多功能,所以我们推荐一种新的方式来实现这些功能,这种方式就是SOE服务器对象扩展.SOE存在于整个服务对象的生存期内,可以利用服务对象的资源并对其进行扩展.一个SOE通常在服务对象创建是初始化,并且在整个服务对象的生存期内只会被创建一次.SOE支持SOAP和REST两种访问

一个程序员的总结——开发注意事项

一年到头了,作为本命年的我,今年发生了太多的事情,但是不幸的是,都是好事儿,有点太过得意洋洋了,不过,不管一年顺抑或不顺,都是需要总结的,毕竟,总结,才能让人成长,首先,想注意的事情就是开发注意事项. 特别想说一件事情,公司每个功能上线之前都要测试,在测试环境测试,并且也会在正式环境测试(非公开版),把上线的问题降到最低,发生过这么几件事情,有好几次,我开发的时候没有看到问题,测试测试的时候也没有问题,但是在正式环境测试的时候,我们的头儿一眼就看到问题,很神奇的一件事情,感觉他好像就长了一双挑b

电视的应用开发注意事项[持续更新]

来乐视快3个月了,也做TV应用3个月了,老大上来就让我独立开发一个智能电视的应用,虽然现在已成功上线了,但感觉问题还是很多的..... 把一些经验总结一下,免得以后自己以后绕弯路. 电视控制大多数依赖遥控器,遥控器有个缺点,就是用户很有可能疯狂的快速的按按键,所以一定不要响应每次按键事件,可以把每个按键事件的处理流程放进Runnable里,然后用postDelay的方式来处理事件. 电视是多个厂商开发,所以遥控器的按键键值会有出入,所以要有个统一转换的功能类. 电视的焦点是个问题,所以当用户按方

WEBAPP开发技巧(手机网站开发注意事项)

1.要响应式开发web,也就是页面必须自适应屏幕大小,可以采用流体布局,如之前的文章(自适应宽度布局),其他具体的小问题可以采用media query解决(让IE支持CSS3 Media Query实现响应式Web设计和CSS3 Media Queries):2.因为手机大多是高级浏览器,可以使用html5+css3开发:3.合理灵活的使用meta标签,具体如下: <meta content=”width=device-width, initial-scale=1.0, maximum-scal

ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts

ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper create failed after 4 attempts ERROR [main] master.HMasterCommandLine: Master exiting java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster more…

移动端开发注意事项记录

移动端开发注意事项记录 1.移动端WEB开发常见问题 2.webapp开发技巧 3.移动端开发需要注意的20个要点 4.移动平台3G手机网站前端开发布局技巧汇总

PHP 接口开发注意事项

PHP 接口开发注意事项 预先定义接口流程和逻辑,确认需求 在开发前首先确定流程,复杂的接口可以绘制流程图,并确保流程与需求一致: 使用统一的变量定义 无论是SDK还是Server均因同一变量的定义以及全局变量的设置.目的是方便维护 完善的异常处理机制 接口是向外提供服务的,一旦出现异常影响较大,甚至影响系统的安全.因此需要一套完善的异常处理机制.如常见的网络连接超时等,对file_get_contents和fsocket之类的函数,需要使用@抑制错误输出 统一的提示信息输出格式 统一格式的输出