[Dubbo3.0.8源码解析系列]-14-Dubbo配置加载全解析

智慧并不产生于学历,而是来自对于知识的终生不懈的追求。这篇文章主要讲述[Dubbo3.0.8源码解析系列]-14-Dubbo配置加载全解析相关的知识,希望能为你提供帮助。




目录

  • ??14-Dubbo配置加载全解析??
  • ??14.1 回到启动器的初始化过程??
  • ??14.2 初始化加载应用配置??
14-Dubbo配置加载全解析 14.1 回到启动器的初始化过程在应用程序启动的时候会调用发布器的启动方法 ,然后调用初始化方法,在发布器DefaultApplicationDeployer中的初始化方法initialize() 如下:
@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配置加载全解析】


    推荐阅读