初探-Spring Cloud Eureka

剖析Eureka注册中心

前言:这篇文章是针对已经对Eureka有一定了解的同学看的,下面要对Eureka进行简单剖析,以下方的问题带入源码剖析
1)启动时服务如何注册到Eureka中
2)服务端如何保存这些信息
3)消费者如何根据服务名称发现服务实例
4)如何构建高可用的Eureka集群
5)心跳和服务剔除机制、Eureka自我保护机制

注意:下方高能,源码聚集

服务注册流程

服务注册流程
启动时,通过后台任务,注册到EurekaServer,注册信息包括:服务名、IP、Port

从上图中可以看出,首先客户端启动的时候,需要往注册中心将客户端自己的相关信息注册上去,猜测Eureka Server肯定有相关的数据结构来存储这些信息,而存放信息的数据结构,Java中有List、Map、Set等等,客户端通过serviceID来获取服务提供者的IP等信息,所以应该是通过Map来进行存储的,而Map中的Key是ServiceID。而Value肯定不是简单的IP、Port拼接起来的字符串,因为Eureka Client端还有很多其它配置,例如eureka.client.fetch-registry等其它配置,所以猜测Value应该是用对象来存放instance的信息的。并且客户端配置中还有eureka.instance.*这样的配置,可能还有有存放instance的对象。

启动时服务如何注册到Eureka中

从SpringBoot的潜规则来看,一般是通过spring.factories的文件来指定需要注入到容器中的自动配置类。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里能看到通过config来创建InstanceInfo对象,然后将它们放入ApplicationInfoManager中管理。查看EurekaInstanceConfig发现它是一个接口,实现类在上图中。从这里可以看出如果没有配置Instance会使用默认的Instance配置。

EurekaClientAutoConfiguration类,能看到注入了EurekaClient,创建过程中传入了ApplicationInfoManager。

在这里插入图片描述
在这里插入图片描述
进入到父类的构造函数中
在这里插入图片描述
往下看能找到@Inject注解,加了此注解说明构造方法中的参数均由Spring容器提供。
回到原点,我们是要找的是EurekaClient如何将自己注册到服务端,接着往下看,
在这里插入图片描述
发现有定时任务的线程池,并且能看到心跳,缓存刷新的定时任务,再往下看,发现最后会去初始化定时任务。点击进入
在这里插入图片描述
在这里插入图片描述
发现这里是定义心跳、缓存更新的间隔的,发现并没有找到我们想要的东西,那么想想心跳是客户端刚启动的时候就会发过去的,能不能在心跳的时候将自己的相关信息发给Eureka Server呢?
在这里插入图片描述
在这里插入图片描述
发现心跳的时候会将Instance的相关内容发给Eureka Server。并且这个逻辑是先请求Eureka Server然后如果是返回NOT FOUND,就会将Instance的信息注册到Eureka Server中。
总结一下,在客户端启动的时候会启动一些定时任务,其中包括心跳任务,心跳的定时任务会向注册中心发送客户端自身的信息给Eureka Server,若Eureka上已经有该客户端的信息了,则返回状态OK。

同理,EurekaServer也是类似的,也会加载很多默认的配置。
在这里插入图片描述

服务端如何保存客户端信息

在这里插入图片描述
官网API地址:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations
客户端启动后会去调用http,将服务实例放在Server内部一个Map对象中存储,获取时直接去拿。
在这里插入图片描述
继续回到刚才的源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值