前言
大家好,牧码心今天给大家推荐一篇zookeeper系列(四)—客户端API使用的文章,在实际工作中有很多应用场景,希望对你有所帮助。内容如下:
- 概要
- 创建和关闭会话
- 创建和查看节点
- 修改和删除节点
- 设置权限
- curator框架
概要
zookeeper提供了zkCli.sh脚本,通过命令交互方式调试zk集群,但在项目开发中不推荐使用。zookeeper官方提供了java和C中语言的客户端,实际开发时我们一般会使用相应的zookeeper API,或者使用封装更高级的框架库 Curator。
本文java客户端为例来实现创建会话,创建节点,监听节点,删除节点,获取数据,设置权限,关闭会话等功能。
依赖
在使用zookeeper API之前,我们需要引入相关API的依赖,依赖方式如下,这里以maven为例:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.5</version>
</dependency>
这里选择的版本是3.5.5,更多版本选择,详见:https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper
创建和关闭会话
- 创建会话
启动zookeeper服务端后,客户端可通过构造函数 ZooKeeper()创建会话,实例化后将会自动与集群建立连接。函数定义如下:
ZooKeeper(String connectionString, int sessionTimeout, Watcher watcher)
函数参数说明如下:
参数名称 | 类型 | 说明 |
---|---|---|
connectString | String | 连接串,包括ip+端口 ,集群模式下用逗号隔开 hadoop01:2181,hadoop02:2181,hadoop03:2181 |
sessionTimeout | int | 会话超时时间,该值不能超过服务端所设置的 minSessionTimeout 和maxSessionTimeout |
watcher | Watcher | 会话监听器,服务端事件将会触该监听 |
示例代码:
private ZooKeeper zooKeeper;
final CountDownLatch connectedSignal = new CountDownLatch(1);
public ZooKeeper connect(String host) throws IOException,InterruptedException {
zooKeeper= new ZooKeeper(host,5000,new Watcher() {
// 定义监听事件
public void process(WatchedEvent we) {
if (we.getState() == KeeperState.SyncConnected) {
connectedSignal.countDown();
}
}
});
connectedSignal.await();
return zooKeeper;