创建会话
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);
开源框架
- 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>