Zookeeper 简介

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命名需要注意,有相关规则的)

Java代码 
  1. ZooKeeper zk = new ZooKeeper("ip:port",3000,new MyWathcer());  

 Ipport替换为你Zookeeper serviceip及服务端口。注意一下第三个参数,它是一个watcher,实现了org.apache.zookeeper.Watcher接口(实现它的process方法即可),对于节点的更新删除等操作会通知客户端,这部分可以参考watches的说明。

接下来,我们新建一个节点:

 

Java代码 
  1. Id id = new Id("ip","你的zookeeper server的ip");//注意第一个参数代表通过ip验证  
  2. ACL acl1 = new ACL(ZooDefs.Perms.ALL,id);//这里表示具备all权限  
  3. List<ACL> list = new ArrayList<ACL>();  
  4. list.add(acl1);  
  5. System.out.println(zk.create("/zk_heih","yun".getBytes(),list, CreateMode.PERSISTENT));//这里表示创建持久的节点  
 

 

Id类实际上是指你要的访问控制列表ACL应用的目标,而ACL代表应用到该节点的操作权限,最后的CreateMode.PERSISTENT代表你的创建节点的类型,是持久的还是瞬时的。最后方法会返回该节点的path。(如果想建立节点为某节点的子节点,那么写完整path即可,如 /zk_test/zk_ heih

下面,我们修改节点数据(data

 

Java代码 
  1. int version = zk.exists("/zk_ heih "new MyWathcer()).getVersion();  
  2. System.out.println(zk.setData("/zk_ heih ""my".getBytes(), version));  
 

 

请注意versionznode在修改时会比较version和服务器上的是否一致,如果不一致的话会抛出异常,当然你也可以将version参数至为-1.那么会匹配所有version,也就是说强制的修改。

然后我们可以查看某节点的数据

 

Java代码 
  1. Stat stat = new Stat();  
  2. byte[] data = zk.getData("/zk_ heih "new MyWathcer(), stat);//stat会在方法内被修改  
  3. System.out.println(new String(data));  
  4. System.out.println(stat);  
 

方法会给出相关的statstat里面包含了如czid等等,具体参照api

最后我们删除刚才创建的节点:

 

Java代码 
  1. int version = zk.exists("/zk_ heih "new MyWathcer()).getVersion();  
  2. zk.delete("/zk_ heih ", version);  
 

最后,如果你英语够好,还是看官方的文档吧:

ZooKeeper Programmer's Guide

http://hadoop.apache.org/zookeeper/docs/r3.3.0/zookeeperProgrammers.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值