Zookeeper采用Java客户端API


创建会话

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);

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

创建节点

String create(final String path, byte data[], List<ACL> acl, CreateMode createMode);

String create(final String 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上下文信息

删除节点

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

public void delete(final String path, int version);

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

获取子节点列表

List<String> getChildren(final String path, Watcher watcher);

List<String> getChildren(final String path, boolean watch);

List<String> getChildren(final String path, Watcher watcher, Stat stat);

List<String> getChildren(final String path, boolean watch, Stat stat);

void getChildren(final String path, Watcher watcher, ChildrenCallback cb, Object ctx);

void getChildren(final String path, boolean watch, ChildrenCallback cb, Object ctx);

void getChildren(final String path, Watcher watcher, Children2Callback cb, Object ctx);

void getChildren(final String path, boolean watch, Children2Callback cb, Object ctx);

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

获取数据

byte[] getData(final String path, Watcher watcher, Stat stat);

byte[] getData(String path, boolean watch, Stat stat);

void getData(final String path, Watcher watcher, DataCallback cb, Stat stat);

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

更新数据

Stat setData(final String path, byte data[], int version);

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

获取数据

Stat exists(final String path, Watcher watcher);

Stat exists(String path, boolean watch);

void getData(final String path, Watcher watcher, StatCallback cb, Object ctx);

void getData(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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值