- 工厂类创建客户端:CuratorFrameworkFactory
- connectionString:服务器地址列表;逗号分隔
- retryPolicy:重试策略
- 可以通过判断服务器返回的 keeperException 的状态代码来判断是否进行重试处理
- OK 表示一切操作都没有问题
- SYSTEMERROR 表示系统或服务端错误
- ExponentialBackoffRetry 重试一组次数,重试之间的睡眠时间增加
- RetryNTimes 重试最大次数
- RetryOneTime 只重试一次
- RetryUntilElapsed 在给定的时间结束之前重试
- 可以通过判断服务器返回的 keeperException 的状态代码来判断是否进行重试处理
- sessionTimeoutMs 会话超时时间;作用在服务端
- 用来设置该条会话在 ZooKeeper 服务端的失效时间
- connectionTimeoutMs 客户端创建会话的超时时间; 作用在客户端
- 用来限制客户端发起一个会话连接到接收 ZooKeeper 服务端应答的时间
- 创建节点
curatorFramework.create().withMode(CreateMode.PERSISTENT).forPath
- 一次性创建带层级结构的节点
curatorFramework.create().creatingParentsIfNeeded().forPath
- 获取数据
curatorFramework.getData().forPath
- 更新节点
curatorFramework.setData().forPath
- 删除节点
curatorFramework.delete().guaranteed().deletingChildrenIfNeeded().forPath
- guaranteed:起到一个保障删除成功的作用
- 只要该客户端的会话有效,就会在后台持续发起删除请求,直到该数据节点在 ZooKeeper 服务端被删除
- deletingChildrenIfNeeded:系统在删除该数据节点的时候会以递归的方式直接删除其子节点,以及子节点的子节点
- 异步接口 BackgroundCallback,用来处理服务器端返回来的信息,默认在 EventThread 中调用,也可以自定义线程池
curatorFramework.getData().inBackground(BackgroundCallback).forpath
- 指定线程池
curatorFramework.getData().inBackground(BackgroundCallback,ExecutorService).forpath
- Curator 监听器 CuratorListener
- 针对 background 通知和错误通知。使用此监听器之后,调用 inBackground 方法会异步获得监听
- Curator Caches
- Curator 引入了 Cache 来实现对 Zookeeper 服务端事件监听
- Cache 事件监听可以理解为一个本地缓存视图与远程 Zookeeper 视图的对比过程
- Cache 提供了反复注册的功能
- Cache 分为两类注册类型:节点监听和子节点监听
- NodeCache 对某一个节点进行监听,可以通过注册监听器来实现,对当前节点数据变化的处理
NodeCache nodeCache = new NodeCache(curatorFramework, "/node")
nodeCache.getListenable().addListener()
nodeCache.start();
- PathChildrenCache 会对子节点进行监听,但是不会对二级子节点进行监听,可以通过注册监听器来实现,对当前节点的子节点数据变化的处理
var pathChildrenCache = new PathChildrenCache(curatorFramework, PATH, true);
pathChildrenCache.getListenable().addListener
pathChildrenCache.start(true);
如果设置为true则在首次启动时就会缓存节点内容到Cache中
- TreeCache 使用一个内部类TreeNode来维护这个一个树结构。并将这个树结构与ZK节点进行了映射。所以TreeCache 可以监听当前节点下所有节点的事件;可以通过注册监听器来实现,对当前节点的子节点,及递归子节点数据变化的处理
TreeCache treeCache = new TreeCache(curatorFramework, TREE_CACHE);
treeCache.getListenable().addListener
treeCache.start();
上一篇
Zookeeper-Leader选举
2024-09-10
下一篇
Zookeeper-分布式锁&注册中心
2024-09-10