Spring-Cloud Eureka学习心得

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有哪些功能点,每个功能点大概是如何实现的!

发布了16 篇原创文章 · 获赞 10 · 访问量 7956

猜你喜欢

转载自blog.csdn.net/mnicsm/article/details/94723691