zookeeper Java客户端使用

客户端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,实例化该类之后将会自动与集群建立连接。

  1. 构造方法
    在这里插入图片描述
  2. 参数说明
参数名称类型说明
connectStringString连接串,包括ip+端口 ,集群模式下用逗号隔开 192.168.0.149:2181,192.168.0.150:2181
sessionTimeoutint会话超时时间,该值不能超过服务端所设置的 minSessionTimeout 和maxSessionTimeout
watcherWatcher会话监听器,服务端事件将会触该监听
sessionIdlong自定义会话ID
sessionPasswdbyte[]会话密码
canBeReadOnlyboolean该连接是否为只读的
hostProviderHostProvider服务端地址提供者,指示客户端如何选择某个服务来调用,默认采用StaticHostProvider实现

创建、查看节点

创建节点

通过org.apache.zookeeper.ZooKeeper#create()即可创建节点

  1. 方法列表在这里插入图片描述

  2. 参数说明

参数名称类型说明
pathString节点路径
databyte[]节点值
aclList节点权限列表(可设置多组权限)
createModeCreateMode节点类型
cbStringCallback异步创建结果回调
ctxObject异步回调上下文
查看节点

通过org.apache.zookeeper.ZooKeeper#getData()即可查看节点

  1. 方法

  2. 参数说明:

参数名称类型说明
pathString节点路径
watchboolean是否添加监听
watcherWatcher监听处理器
cbDataCallback异步调用结果回调
ctxObject异步调用上下文参数
查看子节点

通过org.apache.zookeeper.ZooKeeper#getChildren()即可获取子节点。

  1. 方法
    在这里插入图片描述
  2. 参数说明
参数名称类型说明
pathString节点路径
watchboolean是否添加监听
watcherWatcher监听处理器
cbChildren2Callback异步回调函数
ctxObject回调上下文

监听节点

在getData() 与getChildren()两个方法中可分别设置监听数据变化和子节点变化。通过设置watch为true,当前事件触发时会调用zookeeper()构建函数中Watcher.process()方法。也可以添加watcher参数来实现自定义监听。一般采用后者。

注:所有的监听都是一次性的,如果要持续监听需要触发后在添加一次监听。

设置节点ACL权限

ACL包括结构为scheme🆔permission(有关ACL的介绍参照上一篇 zookeeper介绍及基本使用
客户端中由org.apache.zookeeper.data.ACL 类表示,类结构如下:
在这里插入图片描述
在这里插入图片描述
权限位的表示方式通过 数字位移 实现。每个权限位都是一个唯一数字,将其合时通过或运行生成一个全新的数字即可

@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

zkClient 是在zookeeper客户端基础之上封装的,使用上更加友好。主要变化如下:

  • 可以设置持久监听,或删除某个监听
  • 可以插入JAVA对象,自动进行序列化和反序列化
  • 简化了基本的增删改查操作。

具体api 此处不一一介绍了,自行查看吧。maven 依赖:

<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
	  <dependency>
	      <groupId>com.101tec</groupId>
	      <artifactId>zkclient</artifactId>
	      <version>0.11</version>
	  </dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值