首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Cloud Eureka源码分析

Eureka总体概览

我们先看一段官网的介绍:

服务发现是基于微服务架构的关键原则之一。试图手工配置每个客户端或某种约定俗成的形式,可能很难做到,而且会很脆。Eureka就是Netflix服务发现服务端和客户端。服务端可以被配置和部署成高可用,每个服务器都可以将注册服务的状态复制到其他服务器上。

Eureka的关键核心概念

Eureka服务治理有一些核心概念,今天将从源码中剖析Eureka Client的核心概念。

服务注册

服务续约

客户端从注册中心获取服务列表

自动装配的主入口

要使用eureka的客户端,需要引入依赖就可以了

我们找到spring-cloud-netflix-eureka-client包的spring.factories文件,然后查看该文件内容

我们主要看EurekaClientAutoConfiguration这个类,这个是eureka客户端自动装配的主要配置类,负责Eureka关键Beans的配置和初始化

这个类向Spring容器注册了两个重要的实例:

EurekaClientConfigBean :装配Bean

CloudEurekaClientEureka :与Server交互的工具类

@EnableEurekaClient注解

@EnableEurekaClient注解,在最新的版本上好像没有像以前的版本导入什么类或者实例了,很奇怪。

工具类DiscoveryClient介绍与作用

前面看到的实例化的CloudEurekaClient继承了DiscoveryClient,而DiscoveryClient是与Eureka Server交互的工具类。主要有四大作用:

1.用Eureka服务器注册实例

2 与Eureka服务器续租

3.关机期间取消Eureka服务器的租约

4.查询在Eureka服务器上注册的服务/实例列表。

这些功能的实现主要在DiscoveryClient的初始化的方法内,接下来就去初始化方法看看:

客户端从注册中心获取服务列表

当第一次或者增量不可用的时候,使用getAndStoreFullRegistry拉取全量 否则的话,使用getAndUpdateDelta拉取增量

服务注册

initScheduledTasks()进行续约

该方法用于初始化所有计划任务,包括cluster resolvers, heartbeat, instanceInfo replicator, fetch

下面是通过Heartbeat timer进行续约

总结

Eureka Client是自动进行装配的

EurekaClientAutoConfiguration负责装配

DiscoveryClient负责与Server进行交互,实现服务注册,拉取和续约

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200714A0EB5K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券