zookeeper 提供了java与C两种语言的客户端。我们要学习的就是java客户端。引入最新的maven依赖:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.5</version> </dependency>常规的客户端类是 org.apache.zookeeper.ZooKeeper,实例化该类之后将会自动与集群建立连接。构造参数说明如下:
通过org.apache.zookeeper.ZooKeeper#getChildren()即可获取子节点,其参数说明如下:
在getData() 与getChildren()两个方法中可分别设置监听数据变化和子节点变化。通过设置watch为true,当前事件触发时会调用zookeeper()构建函数中Watcher.process()方法。也可以添加watcher参数来实现自定义监听。一般采用后者。
注:所有的监听都是一次性的,如果要持续监听需要触发后在添加一次监听。
ACL结构为scheme🆔permission 客户端中由org.apache.zookeeper.data.ACL 类表示,类结构如下: ACL a.ID i. scheme scheme ii. id id b.perms 权限位permission
关于权限位的表示方式: 每个权限位都是一个唯一数字,将其合时通过或运行生成一个全新的数字即可
@InterfaceAudience.Public public interface Perms { int READ = 1 << 0; int WRITE = 1 << 1; int CREATE = 1 << 2; int DELETE = 1 << 3; int ADMIN = 1 << 4; int ALL = READ | WRITE | CREATE | DELETE | ADMIN; }zkClient 是在zookeeper客户端基础之上封装的,使用上更加友好。主要变化如下:
可以设置持久监听,或删除某个监听可以插入JAVA对象,自动进行序列化和反序列化简化了基本的增删改查操作。代码示例:https://gitee.com/ex-huh001/zookeeper-api-demo/