zookeeper注册中心 中比较重要的内容 父子类继承, 失败重试机制, 注册和订阅实现。下面逐个分析。
父子类分析
RegistryService:定义了注册,取消注册,订阅,取消订阅方法
Registry:未定义方法
AbstractRegistry:配置持久化功能。调用listenner。
FailbackRegistry: subscribe,notify模板类, 提供 容错,独立线程失败重试,校验。
ZookeeperRegistry:具体的注册订阅实现,依赖 ZookeeperClient
consumer和server的注册,订阅 功能都依赖ZookeeperRegistry。
下面分析一下 其构造方法
public ZookeeperRegistry(URL url, ZookeeperTransporter zookeeperTransporter) {
super(url);
if (url.isAnyHost()) {
throw new IllegalStateException("registry address == null");
}
String group = url.getParameter(Constants.GROUP_KEY, DEFAULT_ROOT);
if (!group.startsWith(Constants.PATH_SEPARATOR)) {
group = Constants.PATH_SEPARATOR + group;
}
this.root = group;
//url==zookeeper://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=young-app&dubbo=2.6.2&interface=com.alibaba.dubbo.registry.RegistryService&pid=31192&qos.enable=false×tamp=1597146845151
zkClient = zookeeperTransporter.connect(url);
zkClient.addStateListene