作者:微信小助手
发布时间:2021-10-09T18:59:35
最近在倒腾 Eureka 源码,大环境太卷了,必须得卷点源码才行,另外呢,能够读懂开源项目的源码、解决项目中遇到的问题是实力的象征,是吧?如果只是会用些中间件,那是不够的,和 CRUD 区别不大。 话不多说,源码走起。本篇是 Eureka 源码分析的开篇,后续会持续分享源码解析的文章。 首先呢,Eureka 服务的启动入口在这里:EurekaBootStrap.java 的 contextInitialized 方法。 启动的整个流程图在文末,不想看源码剖析的,可以直接看文末流程图。 关于源码的获取直接到官网下载就好了。https://github.com/Netflix/eureka 本文已收录到我的 github:https://github.com/Jackson0714/PassJava-Learning 打开源码,找到这个启动类,EurekaBootStrap.java,在这个路径下: 启动时序图给大家画好了: 启动代码: 分为两步,初始化环境和初始化上下文,先来看第一步。 初始化环境的方法是 initEurekaEnvironment(),点进去看下这个方法做了什么。 就是获取配置管理类的一个单例。单例的实现方法用的是
一、初始化环境
\eureka\eureka-core\src\main\java\com\netflix\eureka\EurekaBootStrap.java
@Override
public void contextInitialized(ServletContextEvent event) {
initEurekaEnvironment();
initEurekaServerContext();
// 省略非核心代码
}String dataCenter = ConfigurationManager.
getConfigInstance().getString(EUREKA_DATACENTER);
双重检测
+volatile
public static AbstractConfiguration getConfigInstance() {
if (instance == null) {
synchronized (ConfigurationManager.class) {
if (instance == null) {
instance = getConfigInstance(false));
&nbs