Java的API
8.1 实例
1) 导入对应的zookeeper包
2) 编写代码
8.2 构造方法
构造方法1
参数1 connectString:ip+端口号
参数2 sessionTimeout:会话的超时时间,只有在服务器的最小和最大session时间之间才有效
参数3 watcher:监听事件的watcher,此watcher在session生命周期都有效,属于defaultWatcher。
构造方法2
参数1 connectString:ip+端口号
参数2 sessionTimeout:会话的超时时间,只有在服务器的最小和最大session时间之间才有效
参数3 watcher:监听事件的watcher,此watcher在session生命周期都有效,属于defaultWatcher。
参数4 canBeReadOnly:如果为true,进入只读模式。
构造方法3
参数1 connectString:ip+端口号
参数2 sessionTimeout:会话的超时时间,只有在服务器的最小和最大session时间之间才有效
参数3 watcher:监听事件的watcher,此watcher在session生命周期都有效,属于defaultWatcher。
参数4 sessionId:会话id,如果传入可以连接到上一次的会话,一般用于客户端重新连接。
参数5 sessionPasswd:会话的密码
构造方法4
参数1 connectString:ip+端口号
参数2 sessionTimeout:会话的超时时间,只有在服务器的最小和最大session时间之间才有效
参数3 watcher:监听事件的watcher,此watcher在session生命周期都有效,属于defaultWatcher。
参数4 sessionId:会话id,如果传入可以连接到上一次的会话,一般用于客户端重新连接。
参数5 sessionPasswd:会话的密码
参数6 canBeReadOnly:如果为true,进入只读模式。
8.3 操作方法
创建节点create
1)方法1
参数1 path:节点的路径
参数2 data:数据
参数3 acl:权限,参照章节ACL
参数4 CreateMode:节点持久性,参照章节CreateMode
2)方法2
参数1 path:节点的路径
参数2 data:数据
参数3 acl:权限,参照章节ACL
参数4 CreateMode:节点持久性,参照章节CreateMode
参数5 cb:采用异步模式,回调函数,在执行请求完成后客户端得到通知。
参数6 ctx:用于传入回调函数的参数。
删除节点delete
参数1 path:节点的路径
参数2 version:对应版本,对应节点属性dataVersion。
更新节点setData
1) 方法1
参数1 path:节点路径
参数2 data:设置数据
参数3 version:对应版本,对应节点属性dataVersion。
2) 方法2
参数1 path:节点路径
参数2 data:设置数据
参数3 version:对应版本,对应节点属性dataVersion。
参数4 cb:采用异步模式,回调函数,在执行请求完成后客户端得到通知。
参数5 ctx:用于传入回调函数的参数。
获取节点getData
1) 方法1
参数1 path:节点路径
参数2 watcher:监听器
参数3 stat:返回节点的Stat数据
2) 方法2
参数1 path:节点路径
参数2 watcher:是否监听,true代表使用构造函数的watcher来监听。
参数3 stat:返回节点的Stat数据
3) 方法3
参数1 path:节点路径
参数2 watcher:监听器
参数3 cb:采用异步模式,回调函数,在执行请求完成后客户端得到通知。
参数4 ctx:用于传入回调函数的参数。
4) 方法4
参数1 path:节点路径
参数2 watcher:是否监听,true代表使用构造函数的watcher来监听。
参数3 cb:采用异步模式,回调函数,在执行请求完成后客户端得到通知。
参数4 ctx:用于传入回调函数的参数。
判断存在exists
1) 方法1
参数1 path:节点路径
参数2 watcher:监听器
2) 方法2
参数1 path:节点路径
参数2 watch:是否监听,true代表使用构造函数的watcher来监听。
3) 方法3
参数1 path:节点路径
参数2 watcher:监听器
参数3 cb:采用异步模式,回调函数,在执行请求完成后客户端得到通知。
参数4 ctx:用于传入回调函数的参数。
4) 方法4
参数1 path:节点路径
参数2 watch:是否监听,true代表使用构造函数的watcher来监听。
参数3 cb:采用异步模式,回调函数,在执行请求完成后客户端得到通知。
参数4 ctx:用于传入回调函数的参数。
获取子节点getChildren
1) 方法1类(使用监听器)
同步方法:
异步方法:
同步方法:使用监听同时返回节点数据
2) 方法2类(使用默认监听器)
同步方法:
异步方法:
同步方法:使用监听同时返回节点数据
3) 方法3类(使用Children2Callback)
异步方法:使用监听器,使用Children2Callback
异步方法:使用默认监听器,使用Children2Callback
获取状态getState
获取目前客户端的状态,枚举类型States。
8.4 CreateMode
控制会话的类型,如下表:
参数 | 说明 |
---|---|
PERSISTENT | 持久化节点 |
PERSISTENT_SEQUENTIAL | 持久化节点,如果当前已存在的节点,顺序自动编号加1创建节点 |
EPHEMERAL | 临时节点, 客户端session超时这类节点就会被自动删除 |
EPHEMERAL_SEQUENTIAL | 临时自动编号节点,如果当前已存在的节点,顺序自动编号加1创建节点 |
8.5 ACL
Java中的ACL构造函数有2个参数,分别是perms对应zookeeper中的权限位,di对应zookeeper中的scheme和id。
其中权限位:是一个int的十进制,二进制11111分别表示setacl、delete、create、write、read。比如10101表示有setacl、create、read权限,十六进制0x15
设置权限setACL
同步设置权限
异步设置权限
获取权限getACL
同步获取权限
异步获取权限
8.6 Stat
java | zookeeper | 说明 |
---|---|---|
czxid | cZixd | 数据节点创建时的事务ID |
ctime | ctime | 数据节点创建时的时间 |
mzxid | mZxid | 数据节点最后一次更新时的事务ID |
mtime | mtime | 数据节点最后一次更新时的时间 |
pzxid | pZxid | 数据节点的子节点列表最后一次被修改(是子节点列表变更,而不是子节点内容变更)时的事务ID |
cversion | cversion | 子节点的版本号 |
version | dataVersion | 数据节点的版本号 |
aversion | aclVersion | 数据节点的ACL版本号 |
ephemeralOwner | ephemeralOwner | 如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为0 |
dataLength | dataLength | 数据内容的长度 |
numChildren | numChildren | 数据节点当前的子节点个数 |
8.7 特殊说明
1) DefaultWatcher与普通Watcher
DefaultWatcher是用于创建客户端zk的时候传进去的,在会话期间都是有效的。普通Watcher是操作的时候传入,一次性监听。
2) Watcher和CallBack
都是作为异步线程的通知。但是Watcher只是操作数据时,作为监听。而CallBack是操作数据完成后获得通知。
3) 参数布尔类型的watch
布尔类型的watch,只是默认使用zk构造函数传进去的watch。