Zookeeper 客户端API调用示例(基本使用,增删改查znode数据,监听znode,其它案例,其它网络参考资料)
9.1 基本使用
org.apache.zookeeper.Zookeeper是客户端入口主类,负责建立与server的会话
它提供以下几类主要方法 :
功能 |
描述 |
create |
在本地目录树中创建一个节点 |
delete |
删除一个节点 |
exists |
测试本地是否存在目标节点 |
get/set data |
从目标节点上读取 / 写数据 |
get/set ACL |
获取 / 设置目标节点访问控制列表信息 |
get children |
检索一个子节点上的列表 |
sync |
等待要被传送的数据 |
表 1 : ZooKeeper API 描述
9.2 增删改查znode数据
; ); 11. protected ZooKeeper zk; 12. 13. /** 14. * 连接zookeeper server 15. */ 16. public void connect() throws Exception { 17. zk = new ZooKeeper(hosts, SESSION_TIMEOUT, new ConnWatcher()); 18. // 等待连接完成 19. connectedSignal.await(); 20. } 21. 22. public class ConnWatcher implements Watcher { 23. public void process(WatchedEvent event) { 24. // 连接建立, 回调process接口时, 其event.getState()为KeeperState.SyncConnected 25. if (event.getState() == KeeperState.SyncConnected) { 26. // 放开闸门, wait在connect方法上的线程将被唤醒 27. connectedSignal.countDown(); 28. } 29. } 30. } 31. } 创建znodeZooKeeper对象的create方法用于创建znode. 1. String create(String path, byte[] data, List acl, CreateMode createMode); 以下为各个参数的详细说明: · path. znode的路径. · data. 与znode关联的数据. · acl. 指定权限信息, 如果不想指定权限, 可以传入Ids.OPEN_ACL_UNSAFE. · 指定znode类型. CreateMode是一个枚举类, 从中选择一个成员传入即可. 关于znode类型的详细说明, 可参考本人的上一篇博文. 1. /** 2. * 创建临时节点 3. */ 4. public void create(String nodePath, byte[] data) throws Exception { 5. zk.create(nodePath, data, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); 6. } 获取子node列表ZooKeeper对象的getChildren方法用于获取子node列表. 1. List getChildren(String path, boolean watch); watch参数用于指定是否监听path node的子node的增加和删除事件, 以及path node本身的删除事件. 判断znode是否存在ZooKeeper对象的exists方法用于判断指定znode是否存在. 1. Stat exists(String path, boolean watch); watch参数用于指定是否监听path node的创建, 删除事件, 以及数据更新事件. 如果该node存在, 则返回该node的状态信息, 否则返回null. 获取node中关联的数据ZooKeeper对象的getData方法用于获取node关联的数据. 1. byte[] getData(String path, boolean watch, Stat stat); watch参数用于指定是否监听path node的删除事件, 以及数据更新事件, 注意, 不监听path node的创建事件, 因为如果path node不存在, 该方法将抛出KeeperException.NoNodeException异常. 更新node中关联的数据ZooKeeper对象的setData方法用于更新node关联的数据. 1. Stat setData(final String path, byte data[], int version); data为待更新的数据. 删除znodeZooKeeper对象的delete方法用于删除znode. 1. void delete(final String path, int version); version参数的作用同setData方法. 其余接口请查看ZooKeeper对象的API文档. 需要注意的几个地方· znode中关联的数据不能超过1M. zookeeper的使命是分布式协作, 而不是数据存储. · getChildren, getData, exists方法可指定是否监听相应的事件. 而create, delete, setData方法则会触发相应的事件的发生. · 以上介绍的几个方法大多存在其异步的重载方法, 具体请查看API说明. |
Zookeeper 客户端API调用示例(基本使用,增删改查znode数据,监听znode,其它案例,其它网络参考资料)的更多相关文章
- python 调用zabbix api接口实现主机的增删改查
python程序调用zabbix系统的api接口实现对zabbix_server端主机的增删改查,使用相关功能时候,需要打开脚本中的相关函数. 函数说明: zabbixtools() 调用zabbi ...
- AJAX 调用WebService 、WebApi 增删改查(笔记)
经过大半天努力,终于完成增删改查了!心情有点小激动!!对于初学者的我来说,一路上都是迷茫,坑!!虽说网上有资料,可动手起来却不易(初学者的我).(苦逼啊!) WebService 页面: /// &l ...
- 利用API方式进行数据库的增删改查
/* 将数据库的增删改查单独放进一个包 */ package com.itheima28.sqlitedemo.dao; import java.util.ArrayList; import java ...
- SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显
在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...
- Mysql数据库和表的增删改查以及数据备份&恢复
数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 ...
- ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程
目录 1 增删改document的流程 1.1 协调节点 - Coordinating Node 1.2 增删改document的流程 2 查询document的流程 1 增删改document的流程 ...
- mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数
import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...
- AJAX 调用WebService 、WebApi 增删改查
WebService 页面: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3 ...
- 【ArcGIS for SivlerLight api(3)】基础图层增删改查
1.基础底图通常使用TiledLayer或者ArcGISDynamicLayer. 本质上都是在本地加载栅格图片.后台生成策略不同而已.从Vs2010的控件栏上拖过来的Map控件默认添加的底图是Esr ...
随机推荐
- Junit简单配置
Junit简单配置的步骤如下: 1.在WEB-INF目录下的lib里面放一个junit包,我用的是junit-4.9.jar: 2.选定要测试的类,右键单击该类,新建一个Junit Test Case ...
- [SCOI 2010]传送带
Description 题库链接 在一个 \(2\) 维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段 \(AB\) 和线段 \(CD\) .在 \(AB\) 上的移动速度为 ...
- [测试题]wows
Description 山山最近在玩一款游戏叫战舰世界(steam 游戏太少了),他被大舰巨炮的魅力折服,于是山山开了一局游戏,这次发现目标是一艘战列舰新墨西哥级,舰桥很高,原本应该打在目标身后的圆形 ...
- [Sdoi2016]征途
Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜 ...
- 【LSGDOJ1383】修改回文 dp
题目描述 为了跟踪所有的牛,农夫JOHN在农场上装了一套自动系统. 他给了每一个头牛一个电子牌号 当牛走过这个系统时,牛的名字将被自动读入. 每一头牛的电子名字是一个长度为M (1 <= M & ...
- 2015 多校联赛 ——HDU5316(线段树)
Fantasy magicians usually gain their ability through one of three usual methods: possessing it as an ...
- [BZOJ]1019 汉诺塔(SHOI2008)
找规律成功次数++. Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. ...
- hihocoder1258(水)(2015ACM/ICPC北京站)
题意: 给你B,C,S三种模式,当出现S时直接得分最多300(即perfect) 当是B,C时后面会跟一个数字,当后面的数字是从1开始的连续时,直接得分最多300(即perfect) 问给你一系列,最 ...
- [BZOJ]1005 明明的烦恼(HNOI2008)
BZOJ的第一页果然还是很多裸题啊,小C陆续划水屯些板子. Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间 ...
- java的数据结构
常见的数据结构 线性表(list) 1.有序列表,就像小朋友排队(一队)放学出校门,插入的顺序作为遍历的顺序,位置不变(长度固定) 2.顺序存储:从起始位置开始依次向后存储,查询方便,但是插入(排队 ...