dubbo与zookeeper的交互-1

dubbo-admin学习总结:

dubbo能从zookeeper注册中心获得服务信息,是通过registryService,并且可以通过registryService对dubbo进行操作

详解:

与服务注册相关的类:

RegistryService:顶层接口 

Registry:接口,继承顶层接口 与Node接口(暂不知何用)

AbstractRegistry:抽象类,实现registry接口,在构造函数中加载dubbo本地配置文件的内容./dubbo/dubbo-reditry-xxxx.cache

FailbackRegistry:抽象类,继承AbstractRegistry,有很多实现类

ZookeeperTransporter:接口,定义了连接注册中心的方法

ZkclientZookeeperTransporter:实现接口ZookeeperTransporter

ZookeeperRegistryFailbackRegistry的实现类,对url进行操作的实现类,初始化时有两个参数,url和ZookeeperTransporter,在创建时完成对注册中心的连接返回ZookeeperClient,最终完成最注册中心操作的实现类

URL:各种路径的实体类,封装了protocol(协议类型),path(service路径),port(ip和端口)parameter(参数如组名、类型等)等参数。

RegistryServerSync:缓存,注册中心内的服务的缓存,实现了接口NotifyListener,实现的的notify(List<url>)方法,能够接受zookeeper的方向推送内容

dubbo-admin服务在启动的时候,会读取配置文件中dubbo标签的配置,生成url对象底层调用ZookeeperRegistry去连接注册中心,同时调用RegistryServerSync的subscribe(url,lictener)监听所有的服务,同时该类实现的notify方法,能够在zookeeper注册中心信息变化是接受注册中心额信息的推送,将zookeeper中心的注册信息保存在自定义的map集合中,当对服务进行查询时,都从缓存中查询。

缓存Map的实例:ConcurrentMap<String, ConcurrentMap<String, Map<Long, URL>>>:服务类别(providers或者consumers),Map

   ConcurrentMap<String, Map<Long, URL>>:  serviceKey(每一个服务的service都有按照规则合成的key),Map

      Map<Long, URL>     :service对应的id及url

dubbo-admin在注册服务时,用来监听所有服务的监听器即:RegistryServerSync,就会获得由注册中心获得的所有服务信息的推送


猜你喜欢

转载自blog.csdn.net/dc_123456/article/details/71529945