Zookeeper原生API 操作
目录
1、操作前的准备工作
在idea下创建一个maven项目,然后引入以下依赖,并使用centos启动zookeeper服务。
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.8</version>
</dependency>
2、Zookeeper API详解
2.1构造器摘要
|
|
2.2 创建节点
String |
path:创建结点的路径 data:结点的值 ; acl:结点的权限列表;createMode:结点的类型
|
void |
作用:创建的异步版本。 |
注意:
createMode:节点类型, 是一个枚举
* PERSISTENT:持久节点
* PERSISTENT_SEQUENTIAL:持久顺序节点
* EPHEMERAL:临时节点
* EPHEMERAL_SEQUENTIAL:临时顺序节点
控制权限策略
* Ids.OPEN_ACL_UNSAFE --> world:anyone:cdrwa
* CREATOR_ALL_ACL --> auth:user:password:cdrwa
2.3 删除结点
void |
|
void |
|
2.4 修改结点的值
|
path:修改结点路径; data:修改后的新值;version:版本号 |
void |
cb:回调函数,实现了StatCallback接口; ctx:传入的参数 |
2.5 获取结点的值,和设置watch事件
void | getData(String path, boolean watch, AsyncCallback.DataCallback cb, Object ctx) getData的异步版本。 |
byte[] | getData(String path, boolean watch, Stat stat) 返回给定路径的节点的数据和状态。 |
void | getData(String path, Watcher watcher, AsyncCallback.DataCallback cb, Object ctx) getData的异步版本。 |
byte[] | getData(String path, Watcher watcher, Stat stat) 返回给定路径的节点的数据和状态。 |
2.6 获取子节点信息,和设置watch事件
List<String> | getChildren(String path, boolean watch) 返回给定路径的节点的子级列表。 |
void | getChildren(String path, boolean watch, AsyncCallback.ChildrenCallback cb, Object ctx) getChildren的异步版本。 |
List<String> | getChildren(String path, Watcher watcher) 返回给定路径的节点的子级列表。 |
void | getChildren(String path, Watcher watcher, AsyncCallback.ChildrenCallback cb, Object ctx) getChildren的异步版本。 |
2.7 是否存在结点,和设置watch事件
Stat | exists(String path, boolean watch) 返回给定路径的节点的统计信息。 |
void | exists(String path, boolean watch, AsyncCallback.StatCallback cb, Object ctx) 存在异步版本。 |
Stat | exists(String path, Watcher watcher) 返回给定路径的节点的统计信息。 |
void | exists(String path, Watcher watcher, AsyncCallback.StatCallback cb, Object ctx) 存在异步版本。 |
2.8 获取节点权限和设置节点权限
List<ACL> | getACL(String path, Stat stat) 返回给定路径的节点的ACL和状态。 |
void | getACL(String path, Stat stat, AsyncCallback.ACLCallback cb, Object ctx) getACL的异步版本。 |
Stat | setACL(String path, List<ACL> acl, int version) 如果存在这样的节点并且给定版本与该节点的版本匹配,请为该路径的节点设置ACL。 |
void | setACL(String path, List<ACL> acl, int version, AsyncCallback.StatCallback cb, Object ctx) setACL的异步版本。 |
2.9 其他方法
void | addAuthInfo(String scheme, byte[] auth) |
void |
|
long | getSessionId() 该ZooKeeper客户端实例的会话ID。 |
byte[] | getSessionPasswd() 该ZooKeeper客户端实例的会话密码。 |
ZooKeeper.States | getState() |
void | register(Watcher watcher) |
void | sync(String path, AsyncCallback.VoidCallback cb, Object ctx) 异步同步。 |
static void | validatePath(String path) 验证提供的znode路径字符串 |
最后,具体代码示例可以参考:
https://blog.51cto.com/zero01/2108333
https://blog.51cto.com/zero01/2108483