1,回忆上篇文章
上一篇文章我们首先把工程搭建完成了,而且要切换到1.9.3的版本,为什么要切换到这个版本,我已经在上面的文章说过了,我们在看看eureka的版本。
2,开启Server的源码之路
好的,继续跟踪我研究eureka的server源码
展开eureka-server的工程我们可以看到,这个里面就是一些配置文件和一个web.xml,看到这里大家应该知道eureka神秘的面纱了,它是一个web工程项目,可以跑在web容器中,我们学过web开发的人都知道,我们web工程肯定有一个监听启动之类的东西来初始化入口。别急,,,,我们打开web.xml看看
关键点:程序入口
<listener>
<listener-class>com.netflix.eureka.EurekaBootStrap</listener-class>
</listener>
还有一些其他的filter过滤器等等的东西,这个不是特别重要,我们先放弃。我们先看重要的流程。
先跟进EurekaBootStrap这个类去看看。如图可见
核心代码:
我给大家分析一下这个代码的主流程就4个大的流程
1,初始化eureka的环境配置
2,初始化eureka的Server上下文对象
3,获取容器的对象
4,把eureka的上下文对象放在容器中,并且设置key为EurekaServerContext
@Override
public void contextInitialized(ServletContextEvent event) {
try {
//1,初始化eureka的环境配置
initEurekaEnvironment();
//2,初始化eureka的Server上下文对象
initEurekaServerContext();
//3,获取容器的对象
ServletContext sc = event.getServletContext();
//4,把eureka的上下文对象放在容器中,并且设置key为EurekaServerContext
sc.setAttribute(EurekaServerContext.class.getName(), serverContext);
} catch (Throwable e) {
logger.error("Cannot bootstrap eureka server :", e);
throw new RuntimeException("Cannot bootstrap eureka server :", e);
}
}
好了,我们先把主要的流程大概知道,后面我们在通过细节的方式来慢慢梳理和了解,我个人推荐的是读源码还是不要死抓细节,容易带入坑出不来,很容易就会晕。
我们先把eureka-server构建一下:
构建之后会有一个war包。
小技巧,如何快速知道一个源码的方式和入口:测试用例!!!!!!
EurekaClientServerRestIntegrationTest这个类下面有很多的测试方法,我们先测试一下testRegistration这个方法
debug开始:
先配置eureka需要的配置
初始化server,先找到我们打好的war,然后进行初始化。
创建服务器配置和http请求组件的工厂和客户端组件
随机生成的客户端实例对象
测试用例跑完,说明这次的测试完成。我们大概了解了一个注册流程。后续我们将会更加深入的了解eureka的启动流程,好的设计模式,等等。