[Dubbo3.0.8源码解析系列]-14-Dubbo配置加载全解析
Posted 宋小生的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Dubbo3.0.8源码解析系列]-14-Dubbo配置加载全解析相关的知识,希望对你有一定的参考价值。
目录
- 14-Dubbo配置加载全解析
- 14.1 回到启动器的初始化过程
- 14.2 初始化加载应用配置
14-Dubbo配置加载全解析
14.1 回到启动器的初始化过程
在应用程序启动的时候会调用发布器的启动方法 ,然后调用初始化方法,在发布器DefaultApplicationDeployer中的初始化方法initialize() 如下:
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();
配置管理器加载配置:
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配置加载全解析的主要内容,如果未能解决你的问题,请参考以下文章
dubbo2.5.X 升级dubbo3.0.8—weblogic启动异常排查
dubbo2.5.X 升级dubbo3.0.8—weblogic启动一直报错
Java小白进阶系列——ConcurrentHashMap源码解析文章总目录