zookeeper的API
ZooKeeper API 实战:从原生客户端到主流框架
ZooKeeper 提供了原生 Java API 用于分布式协调,但原生 API 存在会话重连、监听器一次性触发等痛点。实际开发中,更推荐使用封装完善的 ZkClient 或 Curator 框架。以下详细介绍三类客户端的核心用法与最佳实践。
原生 ZooKeeper API
原生 API 是 ZooKeeper 官方提供的基础接口,适合理解底层原理,但需手动处理诸多细节(如异常、会话维护)。
引入依赖
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.1</version>
</dependency>
核心操作示例
(1)创建连接
private ZooKeeper zkClient;
private final String connectString = "localhost:2181"; // 集群地址用逗号分隔
private final int sessionTimeout = 3000; // 会话超时时间(毫秒)
public void init() throws IOException {
// 回调监听器:处理连接状态变化(如连接建立、断开)
Watcher watcher = event -> {
if (event.getState() == Watcher.Event.KeeperState.SyncConnected) {
System.out.println("连接建立成功");
}
};
// 初始化连接(异步操作,需等待回调确认连接成功)
zkClient = new ZooKeeper(connectString, sessionTimeout, watcher);
}