1.概述
在 dubbo-remoting-zookeeper 模块,实现了 Dubbo 对 Zookeeper 客户端的封装。在该模块中,抽象了通用的 Zookeeper Client API 接口,实现了两种 Zookeeper Client 库的接入:
基于 Apache Curator 实现:
<dubbo:registry address=“zookeeper://127.0.0.1:2181” client=“curator” />
基于 ZkClient 实现:
<dubbo:registry address=“zookeeper://127.0.0.1:2181” client=“zkclient” />
默认不配置 client 的情况下,使用 Curator 。
dubbo-remoting-zookeeper 的整体类图如下:
2.接口描述
2.1 StateListener
StateListener ,状态监听器接口,代码如下:
/**
* 状态监听器接口
*/
public interface StateListener {
/**
* 状态 - 已断开
*/
int DISCONNECTED = 0;
/**
* 状态 - 已连接
*/
int CONNECTED = 1;
/**
* 状态 - 已重连
*/
int RECONNECTED = 2;
/**
* 状态变更回调
*
* @param connected 状态
*/
void stateChanged(int connected);
}
2.2 ChildListener
节点监听器接口,代码如下:
/**
* 节点监听器接口
*/
public interface ChildListener {
/**
* 子节点发生变化的回调
*
* @param path 节点
* @param children 最新的子节点列表
*/
void childChanged(String path, List<String> children);
}
2.3 ZookeeperClient
ZookeeperClient ,Zookeeper 客户端接口,代码如下:
/**
* Zookeeper 客户端接口
*/
public interface ZookeeperClient {
/**
* 创建节点
*
* @param path 节点路径
* @param ephemeral 是否临时节点
*/
void create(String path, boolean ephemeral);
/**
* 删除节点
*
* @