初始化CloudEurekaClient
类图关系

image.png
说明:黄色类为SpringCloud类,绿色为NetFlix Eureka相关类
- 黄色类为SpringCLoud相关类,绿色类为NetFlix Eureka相关类
-
DiscoveryLient
(SrpingCLoud)封装了发现服务的常用抽象方法,通过类图关系可以看到它的子类EurekaDisvoveryCLient
(SpringCLoud类)通过组合EurekaCLient
(NetFlix)的方式,也就是通过(适配器模式)来整合服务发现的功能,DiscoveryLient
可以看到下面的初始化流程中已经注入到Spring容器中,供使用 -
CloudEurekaCclient
(SpringCloud类)在SpringBoot自动注入过程通过superDisCoverClient
的构造方法去实现EurekaClient的服务注册、定时从注册中心拉取服务、定时服务续约、定时更新客户端来达到客户端的服务治理的功能
SpringCLoud客户端相关Bean 自动注入
- SpringCLoud Eureka Client工程里 里面添加
Spring-cloud-starter-eureka
pom依赖

image.png
-
Spring-cloud-starter-eureka
里依赖了spring-cloud-netflix-eureka-client
image.png SpringCloud eurekaClient自动注入

image.png
-
EurekaDiscoveryClient
自动注入也就是上面类图EurekaDiscoveryClient
(SpringCloud类),这里注入到Spring容器后,就可以在Spring中直接拿来使用了
image.png
-
CloudEurekaClient
的初始化-
CloudEurekaClient
自动注入通过new CloudEurekaCLient
构造方法进入到下面的服务注册、定时续约等功能
image.png-
CloudEurekaClient
通过superDiscoveryClient
构造方法进入服务注册、定时续约等功能
image.png -
com.netflix.discovery.DiscoveryClient#DiscoveryClient()
构造方法详细逻辑
image.png
-
其它注意点
其它重点关注类
- InstanceInfo
就代表一个Eureka Client。里面包含了各个实例的详细属性信息
lastDirtyTimestamp:记录当前intance在Client端的最后修改时间。
lastUpdatedTimestamp:记录当前instance在Server端的最后修改时间。
status:当前instance的存活状态(服务状态)
overriddenStatus:可覆盖状态,是用户修改instance时使用的状态。
- Application
这里代表一个微服务(比如订单服务 Order-Service),里面包含了多个订单服务实例(192.168.0.1:8080,192.168.0.2:8080,192.168.0.3:8080等多个实例)instancesMap的key为intanceId,value为对应的intanceInfo
Application类结构

image.png
- Applications
其实就是从Eureka Server下载的注册表保存在Client端的形式。我们简称“客户端注册表”
appNameApplicationMap的key为微服务名称,value为对应上面的的Application。
Applications类结构

image.png
- Applications包含了Application(一个微服务)集合,Application包含了InstanceInfo(一个微服务下的服务实例)集合
- EurekaClientConfigBeanHecom
org.springframework.cloud.netflix.eureka.EurekaClientConfigBean和com.netflix.discovery.EurekaClientConfig 就是客户端相关的配置信息映射类
- EurekaClientAutoConfiguration SpringCloud Client客户端Bean自动注入的起始配置类
EurekaClientAutoConfiguration 也就是在org\springframework\cloud\spring-cloud-netflix-eureka-client的spring.factories下面
其它基础知识
Jersey框架
JAX-RS
ResourceJeysey框架相当于简单版的SpringMVC,只是SpringMVC多了ModelAndView试图解析等功能,Jeysey只处理请求,通过请求方式(PUT、DELETE)和接口格式(JSON\XML)来处理客户端到服务端的请求,Eureka中客户端就是通过Jeysey来请求Eureka注册中心的服务注册、服务续约、服务下架、拉取服务等接口来实现的
© 著作权归作者所有,转载或内容合作请联系作者

喜欢的朋友记得点赞、收藏、关注哦!!!