文章目录
- 创建会话
- 创建节点
- 删除节点
- 获取子节点列表
- 获取数据
- 更新数据
- 获取数据
- 权限控制
- 开源框架
创建会话
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配合使用。 |
创建节点
String create(final String path, byte data[], List acl, CreateMode createMode);
String create(final String path, byte data[], List 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 getChildren(final String path, Watcher watcher);
List getChildren(final String path, boolean watch);
List getChildren(final String path, Watcher watcher, Stat stat);
List 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);
开源框架
- ZkClient
框架依赖
org.apache.zookeeper
zookeeper
${zookeeper.version}
com.github.sgroschupf
zkclient
${zkclient.version}