02_吃透eureka源码之探索server

本文介绍了Eureka Server的启动过程,包括初始化配置、上下文对象建立等步骤,并通过实战测试验证了注册流程的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的启动流程,好的设计模式,等等。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值