Zookeeper使用详解(5种使用示例)

Zookeeper使用详解(5种使用示例)-mikechen

Zookeeper下载安装好后,就可以开始Zookeeper使用了,下面我以Java为例详解Zookeeper使用。

1.加入Maven ZooKeeper依赖

<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.6.2</version>
</dependency>

 

2.客户端连接服务端

要操 ZooKeeper首先得先创建一个客户端对象:

ZooKeeper client = new ZooKeeper("127.0.0.1:2181/mikechen", 3000, null);

 

3.创建路径

连接ZooKeeper服务端后,客户端就开始使用了,先创建路径:

client.create("/架构/视频", "视频具体内容".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

最后的 CreateMode.PERSISTENT 代表当前节点是一个持久类型的节点。

路径创建完就会是这样:

mikechen
 |--架构
   |--视频

ZooKeeper有7 种节点类型,如下所示:

PERSISTENT           // 持久节点,一旦创建成功不会被删除,除非客户端主动发起删除请求
PERSISTENT_SEQUENTIAL      // 持久顺序节点,会在用户路径后面拼接一个不会重复的字增数字后缀,其他同上
EPHEMERAL            // 临时节点,当创建该节点的客户端链接断开后自动被删除
EPHEMERAL_SEQUENTIAL      // 临时顺序节点,基本同上,也是增加一个数字后缀
CONTAINER            // 容器节点,一旦子节点被删除完就会被服务端删除
PERSISTENT_WITH_TTL       // 带过期时间的持久节点,带有超时时间的节点,如果超时时间内没有子节点被创建,就会被删除
PERSISTENT_SEQUENTIAL_WITH_TTL // 带过期时间的持久顺序节点,基本同上,多了一个数字后缀

 

4.设置数据

代码:

client.setData("/架构/视频", "并发编程视频".getBytes(), -1);

 

5.获取数据

代码:

byte[] data = client.getData("/架构/视频", false, null);
System.out.println(new String(data)); // 这是Data,可以写一些关于业务的参数

 

6.删除路径

代码示例:

client.delete("/架构/视频", -1);

-1 是一个 version 字段,相当于 ZK 提供的乐观锁机制。

 

7.获取订阅

代码示例:

ZooKeeper client = new ZooKeeper("127.0.0.1:2181/mikechen", 3000, new Watcher() {
  // 这个就是 defaultWatcher 参数,是当前客户端默认的回调实现
  @Override
  public void process(WatchedEvent event) {
    System.out.println("这是本客户端全局的默认回调对象");
 }
});
// exists
client.exists("/架构", true);

// getData
client.getData("/架构/视频", true, null);

// getChildren
client.getChildren("/架构", true);

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法