ZooKeeper的API简介

简介

ZooKeeper是 ZooKeeper 客户端库的主要类文件。如果要使用 ZooKeeper 服务,应用程序首先必须创建一个 Zookeeper 实例,这时就需要使用此类。一旦客户端和 ZooKeeper 服务建立起连接, ZooKeeper 系统将会分配给此连接回话一个 ID 值,并且客户端将会周期地向服务器发送心跳来维持会话的连接。只要连接有效,客户端就可以调用 ZooKeeper API 来做相应的处理。

ZooKeeper API 共包含 5 个包,分别为:
org.apache.zookeeper,
org.apache.zookeeper.data,
org.apache.zookeeper.server,
org.apache.zookeeper.server.quorum,
org.apache.zookeeper.server.upgrade
其中 org.apache.zookeeper 包含 ZooKeeper 类,它我们编程时最常用的类文件。

官网的API DOC地址:https://zookeeper.apache.org/doc/r3.4.8/api/index.html

实例

具体的客户端使用案例参看以下代码

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class ZooKeeperDemo {
Logger logger = LoggerFactory.getLogger(ZooKeeperDemo.class);

private static final int SESSION_TIMEOUT = 30000;

ZooKeeper zk;

Watcher watch = new Watcher() {
public void process(WatchedEvent event) {
System.out.println(event.toString());
}
};

/**
* 初始化zookeeper
* @throws IOException
*/
private void createZkInstance() throws IOException {
zk = new ZooKeeper("127.0.0.1:2181", SESSION_TIMEOUT, this.watch);
}

/**
* zookeeper的一些操作
* @throws KeeperException
* @throws InterruptedException
*/
private void zkOperations() throws KeeperException, InterruptedException {
logger.debug("创建节点:{},数据:{},权限:{},节点类型:{}", "test", "test1", Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
zk.create("/test", "test1".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

//获取节点信息
System.out.println(new String(zk.getData("/test", false, null)));

//修改节点
zk.setData("/test", "test2".getBytes(), -1);
System.out.println(new String(zk.getData("/test", false, null)));

System.out.println("删除节点 ");
zk.delete("/test", -1);

//判断节点是否存在
System.out.println(" 节点状态: [" + zk.exists("/test", false) + "]");

}

/**
* zookeeper关闭
* @throws InterruptedException
*/
private void zkClose() throws InterruptedException {
zk.close();
}


public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
ZooKeeperDemo demo = new ZooKeeperDemo();
demo.createZkInstance();
demo.zkOperations();
demo.zkClose();
}

}
作者

Jonathan

发布于

2016-06-21

更新于

2019-06-10

许可协议