dubbo-registry-api服务注册

底层接口

  • Registry 接口:继承RegistryService与Node两个接口
  • RegistryService 接口:定义了Registry的注册、注销、订阅、取消订阅事件、lookup接口
  • Node 接口:定义getUrl、isAvailable、destroy接口

中间层接口

RegistryFactory 接口:定义了根据URL创建Registry的方法

RegistryServiceListener 接口:构造器需要URL与Registry,定义了Registry的注册、注销、订阅、取消订阅事件接口

上层实现类

RegistryFactoryWrapper类:实现RegistryFactory接口(接口定义了根据URL创建Registry方法),构造器需要RegistryFactory入参,调用RegistryFactory创建Registry对象,根据Registry对象与入参URL创建ListenerRegistryWrapper(实现Registry接口)对象

ListenerRegistryWrapper 类:实现了Registry的注册、注销、订阅、取消订阅事件接口,构造器需要Registry与List<RegistryServiceListener>两个入参

RegistryFactory 接口

定义了根据URL创建Registry的方法

如何根据URL创建Registry

  • 根据URL中的接口、方法、version等信息拼接唯一key
  • 根据key从registryManager获取Registry对象,如果不存在,需要创建
  • 创建Registry对象:通过spi/ioc创建Registry对象,具体的创建方式包括nacos、zookeeper、k8s等RegistryFactory创建,以nacos为例,就是在nacos中注册一个服务name
  • 将新创建的Registry对象存储到registryManager中

RegistryFactory实现类如下:

AbstractRegistryFactory抽象类

内部需要RegistryManager与ApplicationModel两个入参

RegistryManager

应用程序级别,用于收集Registry,内部维护Map<String, Registry>,key为RegistryAddress地址

ApplicationModel

包含了应用级别的各种全局变量

  • List<ModuleModel> moduleModels:
  • List<ModuleModel> pubModuleModels:
  • Environment:环境变量,PropertiesConfiguration、SystemConfiguration、SystemConfiguration等
  • ConfigManager:配置管理,ApplicationConfig、MonitorConfig、MetricsConfig、SslConfig、ProtocolConfig、RegistryConfig、ConfigCenterConfig、MetadataReportConfig、TracingConfig.class
  • ServiceRepository:(生产者、消费者)服务存储,可以通过此类获取所有生产者(ProviderModel)、消费者(ConsumerModel)模型(都集成了ServiceModel类)
  • ApplicationDeployer:应用发布接口,通过该对象可以进行应用参数初始化、启动、停止、销毁等操作
  • FrameworkModel:dubbo框架模型,可与多个应用程序共享数据模型

Registry实现类

根据使用不同的注册中心会封装不同的Registry实现类。

 

posted @ 2024-05-07 14:41  使用D  阅读(18)  评论(0编辑  收藏  举报