1、RegistryService类图
RegistryService是对注册功能映射成服务方法的抽象,如果想要实现自定义注册功能,可以通过实现该接口,并暴露成方法来实现(dubbo协议的注册中心就是如此)。
Registry则是将RegistryService服务映射成可用的注册功能。
例如,如果想用SimpleRegistryService 做注册中心,那么可以暴露一个SimpleRegistryService的服务,然后再Consumer端用Dubbo协议注册中心,url设置为该服务的直连url。如此便做到了dubbo协议注册中心。
2、RegistryFactory
那么如何通过不同的协议,获取到不同的注册协议的注册功能对象呢。
Dubbo给我们提供了RegistryFactory接口,该接口采用工厂模式实现,通过URL参数中的Protocol属性,可以获取到不同的Registry实现。
我们常用的ZookeeperRegistry就是通过ZookeeperRegistryFactory获取到的。
而DubboRegistryFactory则是通过引用Dubbo RegistryService 类型的服务并封装成Registry返回来达到构建注册中心访问对象的目的。
3、ZookeeperTransporter
ZookeeperRegistry采用哪种zk客户端则是通过ZookeeperTransporter接口实现
ZookeeperTransporter接口是SPI接口,默认为zkclient实现,并且通过client和transporter属性设置具体使用哪种zk链接