智慧并不产生于学历,而是来自对于知识的终生不懈的追求。这篇文章主要讲述[Dubbo3.0.8源码解析系列]-14-Dubbo配置加载全解析相关的知识,希望能为你提供帮助。
目录
- ??14-Dubbo配置加载全解析??
- ??14.1 回到启动器的初始化过程??
- ??14.2 初始化加载应用配置??
@Override
public void initialize()
if (initialized)
return;
// Ensure that the initialization is completed when concurrent calls
synchronized (startLock)
if (initialized)
return;
// register shutdown hook
registerShutdownHook();
startConfigCenter();
loadApplicationConfigs();
initModuleDeployers();
// @since 2.7.8
startMetadataCenter();
initialized = true;
if (logger.isInfoEnabled())
logger.info(getIdentifier() + " has been initialized!");
初始化过程中会先启动配置中心配置信息处理,然后 调用加载初始化应用程序配置方法loadApplicationConfigs(); 进行配置加载
关于配置的官方文档链接为 ??配置概述??
Dubbo框架的配置项比较繁多,为了更好地管理各种配置,将其按照用途划分为不同的组件,最终所有配置项都会汇聚到URL中,传递给后续处理模块。
常用配置组件如下:
- application: Dubbo应用配置
- registry: 注册中心
- protocol: 服务提供者RPC协议
- config-center: 配置中心
- metadata-report: 元数据中心
- service: 服务提供者配置
- reference: 远程服务引用配置
- provider: service的默认配置或分组配置
- consumer: reference的默认配置或分组配置
- module: 模块配置
- monitor: 监控配置
- metrics: 指标配置
- ssl: SSL/TLS配置
配置来源
从Dubbo支持的配置来源说起,默认有6种配置来源:
- JVM System Properties,JVM -D 参数
- System environment,JVM进程的环境变量
- Externalized Configuration,外部化配置,从配置中心读取
- Application Configuration,应用的属性配置,从Spring应用的Environment中提取"dubbo"打头的属性集
- API / XML /注解等编程接口采集的配置可以被理解成配置来源的一种,是直接面向用户编程的配置采集方式
- 从classpath读取配置文件 dubbo.properties
下图展示了配置覆盖关系的优先级,从上到下优先级依次降低:
配置方式
- java API配置
- XML配置
- Annotation配置
- 属性配置
14.2 初始化加载应用配置加载配置涉及到了配置优先级的处理,
下面来看加载配置代码 loadApplicationConfigs()方法
private void loadApplicationConfigs()
//发布器还是不处理配置加载的逻辑还是交给配置管理器
configManager.loadConfigs();
配置管理器加载配置:
@Override
public void loadConfigs()
// application config has load before starting config center
// load dubbo.applications.xxx
//加载应用配置
loadConfigsOfTypeFromProps(ApplicationConfig.class);
// load dubbo.monitors.xxx
//加载监控配置
loadConfigsOfTypeFromProps(MonitorConfig.class);
// load dubbo.metrics.xxx
//加载指标监控配置
loadConfigsOfTypeFromProps(MetricsConfig.class);
// load multiple config types:
// load dubbo.protocols.xxx
//加载协议配置
loadConfigsOfTypeFromProps(ProtocolConfig.class);
// load dubbo.registries.xxx
loadConfigsOfTypeFromProps(RegistryConfig.class);
// load dubbo.metadata-report.xxx
//加载元数据配置
loadConfigsOfTypeFromProps(MetadataReportConfig.class);
// config centers has bean loaded before starting config center
//loadConfigsOfTypeFromProps(ConfigCenterConfig.class);
//刷新配置
refreshAll();
//检查配置
checkConfigs();
// set model name
if (StringUtils.isBlank(applicationModel.getModelName()))
applicationModel.setModelName(applicationModel.getApplicationName());
【[Dubbo3.0.8源码解析系列]-14-Dubbo配置加载全解析】
推荐阅读
- 云原生安全关键要素
- DIY-快速更新Google的Chromium
- 高可用架构设计(Keepalived实现高可用集群)
- Debian如何定位到命令所在的包
- apk反编译
- linux安装XtraBackup8
- iNeuOS工业互联网操作系统,数据点设备和业务的计算与预警
- win7 64位未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。
- 面试题一