Spring-Cloud Eureka学习心得

作者因市场上Spring Cloud技术火热,开始学习相关技术点,并分享学习Spring Cloud Eureka的心得。介绍了Eureka - Client加载配置信息、服务信息拉取、服务注册、定时任务,以及Eureka - Server接受服务注册、心跳服务、服务剔除、下线和集群同步等功能及实现思路。

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

Eureka

在技术交流群、论坛、博客经常看到一群大?发表spring-cloud的相关文章,这些东西到底是啥玩意,这个市场上这么火热、??,自己没用过心里面很慌,所以抓紧时间赶快学习一下spring-cloud相关技术点,下面分享一下学习spring-cloud eureka的心得。
虽然网上很多大?写了很多关于spring-cloud eureka很优秀的论坛,写的没有那些大?好。萤火之光也不敢与日月争辉,自己按照自己思路写一遍加深印象,哈哈!

1.Eureka-Client

1.1加载配置信息

加载配置信息就是将application.yml文件中的eureka-client配置相关节点信息转换成bean,然后托管到spring容器中。

  1. 我们先找到spring-cloud-netflix-eureka-client.jar 这个包,然后找到META-INF/spring.factories这个文件,找到spring-cloud-netflix-eureka-client 启动加载类
    在这里插入图片描述
  2. 打开spring.factories找到启动类[EurekaClientAutoConfiguration],这个就是加载配置文件的的启动类
    在这里插入图片描述
    在这里插入图片描述
  3. 以上代码就是读取配置文件的代码片段

1.2服务信息拉取

在【EurekaClientAutoConfiguration.java]文件中找到这段代码,我们从这里开始阅读
在这里插入图片描述 ​​在这里插入图片描述

  1. 进去可以看private final EurekaClient eurekaClient ,我们在看看EurekaClient定义。
    在这里插入图片描述
  2. 我们发现Eureka-Client还是一个接口,DisconveryClient实现了它,主意一下这个DisconveryClient跟刚才说到 DisconveryClient不是一个东西,刚才一个是一个接口,这个DisconveryClient是一个类,别混淆了
    在这里插入图片描述
  3. 所以接下来我们重点看看DisconveryClient这个类里面的东西,我们想看DiscoveryClient的构造方法
    在这里插入图片描述
  4. 构造方法里面的前面一些代码,我们就不看了,直接看关键代码
    在这里插入图片描述
  5. fetchRegistry()这个就是拉去Server注册列表的方法,跟进去看看在这里插入图片描述
  6. 这个拉取分全量拉取和增量拉取,里面的代码就不截图了,可以自己跟进去看看,这个里面用了jersey这个东东。

1.3服务注册

在这里插入图片描述
7. 条件判断是否需要将当前这个服务实例注册到Eureka-Server
在这里插入图片描述
8. 如果register-with-eureka配置为true,执行register()注册方法
在这里插入图片描述

1.4定时任务

在这里插入图片描述
9. 定时任务包括心跳任务、刷新缓存任务,这里面还用到了【ScheduledExecutorService】线程池
在这里插入图片描述
在这里插入图片描述

2.Eureka-Server

  1. 找到spring-cloud-netflix-eureka-server.jar META-INF/spring.factories文件,找到Eureka-Server启动类EurekaServerAutoConfiguration,我们从这里开始看
    在这里插入图片描述
  2. 我们转到 InstanceRegistry->PeerAwareInstanceRegistryImpl->AbstractInstanceRegistry->InstanceRegistry
    ->LeaseManager,我们看看LeaseManager这个接口定义
    在这里插入图片描述
  3. 是不是一下子跟上面的功能点对上了,我把这些类的集成关系图贴一张出来,所有的功能点的核心代码写在【AbstractInstanceRegistry】类,接下来我们直接去AbstractInstanceRegistry找我们想要知道的东西

    在这里插入图片描述

2.1接受服务注册

在这里插入图片描述
在这里插入图片描述

2.2接受心跳服务

在这里插入图片描述

2.3服务剔除

有一些网络波动,服务端长时间没有收到服务的心跳信息,服务就会把这个服务实例剔除掉,这个是服务端主动操作
在这里插入图片描述
在这里插入图片描述

2.4服务下线

客户端服务实例主动发送消息给服务端,要求停止服务实例,这个操作是被动操作
在这里插入图片描述
在这里插入图片描述

2.5集群同步

服务集群同步方法写在[PeerAwareInstanceRegistryImpl]类里面,方法名称[syncUp]
在这里插入图片描述
13. 通过上面这段代码EurekaServer启动时候能保证数据一致性,这里有一个问题Eureka-Server运行后,Eureka-Server之间注册表信息是如何同步复制的???
在这里插入图片描述

本人是一个小白,看了老师们讲的这方面的课程,自己想整理一下思路加深印象,大概知道Eureka-Client、Eureka-Server有哪些功能点,每个功能点大概是如何实现的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值