初始化CloudEurekaClient
类图关系
说明:黄色类为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.pngSpring-cloud-starter-eureka
里依赖了spring-cloud-netflix-eureka-client
-
SpringCloud eurekaClient自动注入
-
EurekaDiscoveryClient
自动注入也就是上面类图EurekaDiscoveryClient
(SpringCloud类),这里注入到Spring容器后,就可以在Spring中直接拿来使用了
image.png
-
CloudEurekaClient
的初始化-
CloudEurekaClient
自动注入通过new CloudEurekaCLient
构造方法进入到下面的服务注册、定时续约等功能
-
image.pngCloudEurekaClient
通过superDiscoveryClient
构造方法进入服务注册、定时续约等功能
-
image.pngcom.netflix.discovery.DiscoveryClient#DiscoveryClient()
构造方法详细逻辑
-
其它注意点
其它重点关注类
- 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
Resource
Jeysey框架相当于简单版的SpringMVC,只是SpringMVC多了ModelAndView试图解析等功能,Jeysey只处理请求,通过请求方式(PUT、DELETE)和接口格式(JSON\XML)来处理客户端到服务端的请求,Eureka中客户端就是通过Jeysey来请求Eureka注册中心的服务注册、服务续约、服务下架、拉取服务等接口来实现的
网友评论