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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》