Zookeeper API中包如下:
org.apache.zookeeper
org.apache.zookeeper.data
org.apache.zookeeper.server
org.apache.zookeeper.server.quorum
org.apache.zookeeper.server.upgrade
其中开发者比较常用的包都集中在前两个包中
关于ZooKeeper的安装省略,请参加之前的文章。
下面我们开始用api操作ZooKeeper tree
首先,我们应该新建一个Zookeeper实例:(注意节点创建的时候path命名需要注意,有相关规则的)
ZooKeeper zk = new ZooKeeper("ip:port",3000,new MyWathcer());
Ip和port替换为你Zookeeper
service的ip及服务端口。注意一下第三个参数,它是一个watcher,实现了org.apache.zookeeper.Watcher接口(实现它的process方法即可),对于节点的更新删除等操作会通知客户端,这部分可以参考watches的说明。
接下来,我们新建一个节点:
Id id = new Id("ip","你的zookeeper server的ip");//注意第一个参数代表通过ip验证
ACL acl1 = new ACL(ZooDefs.Perms.ALL,id);//这里表示具备all权限
List<ACL> list = new ArrayList<ACL>();
list.add(acl1);
System.out.println(zk.create("/zk_heih","yun".getBytes(),list, CreateMode.PERSISTENT));//这里表示创建持久的节点
Id类实际上是指你要的访问控制列表ACL应用的目标,而ACL代表应用到该节点的操作权限,最后的CreateMode.PERSISTENT代表你的创建节点的类型,是持久的还是瞬时的。最后方法会返回该节点的path。(如果想建立节点为某节点的子节点,那么写完整path即可,如
/zk_test/zk_ heih)
下面,我们修改节点数据(data)
int version = zk.exists("/zk_ heih ", new MyWathcer()).getVersion();
System.out.println(zk.setData("/zk_ heih ", "my".getBytes(), version));
请注意version,znode在修改时会比较version和服务器上的是否一致,如果不一致的话会抛出异常,当然你也可以将version参数至为-1.那么会匹配所有version,也就是说强制的修改。
然后我们可以查看某节点的数据
Stat stat = new Stat();
byte[] data = zk.getData("/zk_ heih ", new MyWathcer(), stat);//stat会在方法内被修改
System.out.println(new String(data));
System.out.println(stat);
方法会给出相关的stat,stat里面包含了如czid等等,具体参照api
最后我们删除刚才创建的节点:
int version = zk.exists("/zk_ heih ", new MyWathcer()).getVersion();
zk.delete("/zk_ heih ", version);
最后,如果你英语够好,还是看官方的文档吧:
《ZooKeeper Programmer's Guide》
http://hadoop.apache.org/zookeeper/docs/r3.3.0/zookeeperProgrammers.html
分享到:
相关推荐
java客户端使用api访问zookeeper,增删改查Znode,多有的操作都有同步和异步的方式,代码简单,易懂
ZooKeeper在实现这些服务时,首先它设计一种新的**数据结构——Znode**,然后在该数据结构的基础上定义了一些**原语**,也就是一些关于该数据结构的一些操作。有了这些数据结构和原语还不够,因为我们的ZooKeeper是...
由于项目需要,编写基于zookeeper集群监测服务器宕机...原理:服务器端向zookeeper注册,在znode节点创建文件,zookeeper心跳检测,一旦服务器宕机,znode节点的文件会删除,客户端会响应做出相应的操作,如发邮件通知。
※ zk基础知识介绍 ※ zk数据模型介绍 ※ zk数据模型中znode的介绍 ※ zk数据监听 ※ zk的acl ※ zk单节点基本操作 ※ zk集群操作 ※ zk的java客户端操作
该基准测试在处理 znode 读取、对单个 znode 的重复写入、znode 创建、对多个 znode 的重复写入和 znode 删除方面练习集成的性能。 这些测试可以通过同步或异步操作来执行。 基准测试使用每个服务器一个线程连接到 ...
2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识 3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点) 节点类型 a、Znode有两种类型: 短暂(ephemeral)(create -...
zkclient 项目项目介绍:zkclient 是对zookeeper java客户端进行的封装,主要实现了连接、断线重连,watch事件改为listen监听事件,分布式锁等注意: 使用时需要自行编译安装到maven或打成jar使用使用方式:...
尝试更改测试中使用的znode的数量和大小,并比较异步延迟和同步延迟(这将使您深入了解网络延迟)。 注意:python的“时间”库用于对操作进行计时,在某些系统上,计时器的分辨率可能低至1秒,具体取决于该平台的...
1、启动客户端 2、显示所有操作命令 3、查看当前znode中所包含的内容 4、查看当前节点详细数据 5、分别创建2个普通节点 6、获得节点的值 7、创建临时节
* HBASE_CONFIG.set("zookeeper.znode.parent", "/hbase-unsecure"); conf = HBaseConfiguration.create(HBASE_CONFIG); */ conf = HBaseConfiguration.create(); if("kerberos".equals(conf.get("hbase....
zookeeper的创建Znode,设置数据,取数据,以及删除数据的操作
第一,我们唯一需要存储的配置数据是字符串,关键字是znode的路径,因此我们在每个znode上存储了一个键/值对。第二,在任何时候只有一个客户端会执行更新操作。除此之外,这个模型看起来就像是有
一、基于nginx+lua完成商品详情页访问流量实时上报kafka的开发 =======================...6、执行预热操作,遍历productid列表,查询数据,然后写ehcache和redis 7、预热完成后,设置taskid对应的预热状态 代码地址: