Zookeeper采用Java客户端API

2022年9月9日13:14:26

创建会话

Zookeeper(String connectString,int sessionTimeout,Watcher watcher);Zookeeper(String connectString,int sessionTimeout,Watcher watcher,boolean canBeReadOnly);Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPassword);Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPassword,boolean canBeReadOnly);
参数名称 说明
connectString Zookeeper服务器列表,由host:port字符串组成。如:192.168.1.2:2181,192.168.1.3:2181。也可以指定到具体目录,如:192.168.1.2 :2181/book
sessionTimeout 会话超时时间(毫秒)
watcher Watcher事件通知处理,可以设置为null,表示不设置watcher事件
canBeReadOnly 标识当前会话是否支持”read-only“(只读模式),为服务失去过半服务器链接还能够提供只读服务
sessionId 会话ID,通过 getSessionId()接口获取,实现会话复用和恢复
sessionPassword 会话秘钥,通过getSessionPasswd()接口获取,和sessionId配合使用。

创建节点

Stringcreate(finalString path,byte data[],List<ACL> acl,CreateMode createMode);Stringcreate(finalString path,byte data[],List<ACL> acl,CreateMode createMode,StringCallback cb,Object ctx);
参数名称 说明
path 创建数据节点的节点路径,如:/book/zookeeper
data[] 创建节点的内容
createMode 节点类型:持久(PERSISTENT),持久顺序(PERSISTENT_SEQUENTIAL),临时(EPHEMERAL),临时顺序(EPHEMERAL_SEQUENTIAL)
cb 注册异步回调函数,需要实现StringCallback接口
ctx 上下文信息

删除节点

删除时候,只能删除叶子节点。如果删除节点存在至少一个子节点,那么该节点无法被直接删除,必须先删除掉其所有的子节点。

publicvoiddelete(finalString path,int version);publicvoiddelete(finalString path,int version,VoidCallback cb,Object ctx);
参数名称 说明
path 需要删除的数据节点路径
version 指定节点的数据版本
cb 注册的异步回调函数
ctx 上下文信息

获取子节点列表

List<String>getChildren(finalString path,Watcher watcher);List<String>getChildren(finalString path,boolean watch);List<String>getChildren(finalString path,Watcher watcher,Stat stat);List<String>getChildren(finalString path,boolean watch,Stat stat);voidgetChildren(finalString path,Watcher watcher,ChildrenCallback cb,Object ctx);voidgetChildren(finalString path,boolean watch,ChildrenCallback cb,Object ctx);voidgetChildren(finalString path,Watcher watcher,Children2Callback cb,Object ctx);voidgetChildren(finalString path,boolean watch,Children2Callback cb,Object ctx);
参数名称 说明
path 指定数据节点的节点路径
watcher 注册Watcher,一旦本次子节点获取之后,子节点列表发生变更的话,那么就会向客户端发送通知,可以传入null
watch 是否注册默认的Watcher事件
cb 异步回调函数
ctx 上下文信息
stat 指定数据节点的节点状态信息,场景是传入旧的stat,服务器会返回最新的stat信息

获取数据

byte[]getData(finalString path,Watcher watcher,Stat stat);byte[]getData(String path,boolean watch,Stat stat);voidgetData(finalString path,Watcher watcher,DataCallback cb,Stat stat);voidgetData(String path,boolean watch,DataCallback cb,Stat stat);
参数名称 说明
path 指定数据节点的节点路径
watcher 注册Watcher,一旦之后节点内容变更,那么就会向客户端发送通知,可以传入null
watch 是否注册默认的Watcher事件
cb 异步回调函数
ctx 上下文信息
stat 指定数据节点的节点状态信息,场景是传入旧的stat,服务器会返回最新的stat信息

更新数据

StatsetData(finalString path,byte data[],int version);voidsetData(finalString path,byte data[],int version,StatCallback cb,Object ctx);
参数名称 说明
path 指定数据节点的节点路径
data[] 更新内容,字节数组
version 指定节点中数据版本
cb 异步回调函数
ctx 上下文信息

获取数据

Statexists(finalString path,Watcher watcher);Statexists(String path,boolean watch);voidgetData(finalString path,Watcher watcher,StatCallback cb,Object ctx);voidgetData(String path,boolean watch,StatCallback cb,Object ctx);
参数名称 说明
path 指定数据节点的节点路径
watcher 注册Watcher,监听:节点创建、删除、更新,可以传入null
watch 是否注册默认的Watcher事件
cb 异步回调函数
ctx 上下文信息

权限控制

通过接口 addAuthInfo(String scheme, byte[] auth),实现权限控制。

参数名称 说明
scheme 权限控制模式:world, auth, digest, ip, super
auth 具体的权限信息
zookeeper.addAuthInfo("digest","username:passowrd".getBytes());
zookeeper.crate("/book/zookeeper","学习".getBytes(),Ids.CREATOR_ALL_ACL,CreateMode.EPHEMERAL);

开源框架

  1. ZkClient
    框架依赖
<dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>${zookeeper.version}</version></dependency><dependency><groupId>com.github.sgroschupf</groupId><artifactId>zkclient</artifactId><version>${zkclient.version}</version></dependency></dependencies>
  • 作者:swg321321
  • 原文链接:https://blog.csdn.net/swg321321/article/details/126234361
    更新时间:2022年9月9日13:14:26 ,共 3569 字。