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实现类。
收藏文章数量从多到少与“把书读薄”是一个道理