客户端API常规应用
zookeeper 提供了java与C两种语言的客户端。本文引用的是java客户端。引入最新的maven依赖:
 <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
 <dependency>
     <groupId>org.apache.zookeeper</groupId>
     <artifactId>zookeeper</artifactId>
     <version>3.6.2</version>
 </dependency>
初始化连接
常规的客户端类是 org.apache.zookeeper.ZooKeeper,实例化该类之后将会自动与集群建立连接。
- 构造方法

 - 参数说明
 
| 参数名称   | 类型   | 说明   |
|:—-|:—-|:—-|:—-:|
| connectString   | String  | 连接串,包括ip+端口 ,集群模式下用逗号隔开  192.168.0.149:2181,192.168.0.150:2181   |
| sessionTimeout   | int   | 会话超时时间,该值不能超过服务端所设置的  minSessionTimeout 和maxSessionTimeout   |
| watcher   | Watcher    | 会话监听器,服务端事件将会触该监听   |
| sessionId   |long   | 自定义会话ID   |
| sessionPasswd   | byte[]   | 会话密码   |
| canBeReadOnly   |boolean| 该连接是否为只读的   |
| hostProvider   | HostProvider    | 服务端地址提供者,指示客户端如何选择某个服务来调用,默认采用StaticHostProvider实现   | 
创建、查看节点
创建节点
通过org.apache.zookeeper.ZooKeeper#create()即可创建节点
方法列表

参数说明
| 参数名称 | 类型 | 说明 | 
|---|---|---|
| path | String | 节点路径 | 
| data | byte[] | 节点值 | 
| acl | List | 
节点权限列表(可设置多组权限) | 
| createMode | CreateMode | 节点类型 | 
| cb | StringCallback | 异步创建结果回调 | 
| ctx | Object | 异步回调上下文 | 
| #### 查看节点 | ||
| 通过org.apache.zookeeper.ZooKeeper#getData()即可查看节点 | ||
| 1. 方法 | ||
![]()  | 
- 参数说明:
 
| 参数名称 | 类型 | 说明 | 
|---|---|---|
| path | String | 节点路径 | 
| watch | boolean | 是否添加监听 | 
| watcher | Watcher | 监听处理器 | 
| cb | DataCallback | 异步调用结果回调 | 
| ctx | Object | 异步调用上下文参数 | 
查看子节点
通过org.apache.zookeeper.ZooKeeper#getChildren()即可获取子节点。
- 方法

 - 参数说明
 
| 参数名称 | 类型 | 说明 | 
|---|---|---|
| path | String | 节点路径 | 
| watch | boolean | 是否添加监听 | 
| watcher | Watcher | 监听处理器 | 
| cb | Children2Callback | 异步回调函数 | 
| ctx | Object | 回调上下文 | 
监听节点
在getData() 与getChildren()两个方法中可分别设置监听数据变化和子节点变化。通过设置watch为true,当前事件触发时会调用zookeeper()构建函数中Watcher.process()方法。也可以添加watcher参数来实现自定义监听。一般采用后者。
注:所有的监听都是一次性的,如果要持续监听需要触发后在添加一次监听。
设置节点ACL权限
ACL包括结构为scheme:id:permission(有关ACL的介绍参照上一篇 zookeeper介绍及基本使用)
客户端中由org.apache.zookeeper.data.ACL 类表示,类结构如下:

权限位的表示方式通过 数字位移 实现。每个权限位都是一个唯一数字,将其合时通过或运行生成一个全新的数字即可
.Public  | 
第三方客户端ZkClient
zkClient 是在zookeeper客户端基础之上封装的,使用上更加友好。主要变化如下:
- 可以设置持久监听,或删除某个监听
 - 可以插入JAVA对象,自动进行序列化和反序列化
 - 简化了基本的增删改查操作。
 
具体api 此处不一一介绍了,自行查看吧。maven 依赖:
<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->  | 
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章
