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进行交互,实现服务注册,拉取和续约