1,上一个章节回顾
上篇文章我们介绍了第一步eureka环境初始化的源码分析,我们知道了通过dubbo check + volatile的单列模式来进行了配置管理和初始化的设计,然后就结束了源码分析,我们也学到了可以把eureka中比较好的单列模式尽量运用到自己的实际项目中。好了接下来我继续学习第二步,初始化eureka serverContext的方法initEurekaServerContext()
2,initEurekaServerContext()方法的分析
protected void initEurekaServerContext() throws Exception {
//通过接口的方式对外暴露配置,通过方法名称就可以很清楚的知道什么配置
EurekaServerConfig eurekaServerConfig = new DefaultEurekaServerConfig();
EurekaServerConfig 是一个接口对象:里面定义了73个接口,相当于对外提供了73个配置数据。我大概抽了几个方法出来
getRenewalPercentThreshold
getRenewalThresholdUpdateIntervalMs
getPeerEurekaNodesUpdateIntervalMs
shouldEnableReplicatedRequestCompression
getNumberOfReplicationRetries
getPeerEurekaStatusRefreshTimeIntervalMs
通过这个方法名称申明配置数据,学习运用的点:
这个可以在基本上不改变配置的情况下使用这种方式,简单明了,而且意思比较清晰。如果大量的配置变量经常要改动就不要用这种方式来设计了,还是那个常量或者properties的key-value更好。
继续跟进DefaultEurekaServerConfig里面
调用init初始化方法

画了红线的重点方法
ConfigurationManager.loadCascadedPropertiesFromResources(eurekaPropsFile);
通过方法名称就知道从外部的配置文件中加载一个properties的数据到AbstractConfiguration配置中去。

我们打断点看看从哪里加载的配置数据到配置管理系统中的。

从断点可以看到是从eureka-server工程中的eureka-server.properties加载的

继续跟踪看每个方法的配置数据从哪里来的如图:

我们看到所有的都是从configInstance中获取的,继续跟踪源码下去



又是dubbo check + volatile的方式创建了 config的初始化的装配,并且返回了DynamicPropertyFactory 对象,给每个方法进行调用。
总结:
1,通过接口的方式提供给Server配置参数
2,加载eureka-server.properties到配置管理系统中。
3,通过dubbo check volatile的方式创建了DynamicPropertyFactory属性工厂类
4,所有的方式配置数据都是通过DynamicPropertyFactory来获取的。
本文详细分析了Eureka Server的初始化过程,包括配置管理、单例模式应用及配置加载等核心内容。通过接口方式提供了73个配置参数,并介绍了如何加载eureka-server.properties配置文件。

被折叠的 条评论
为什么被折叠?



