SpringCloud Client源码解析

初始化CloudEurekaClient

类图关系
image.png

说明:黄色类为SpringCloud类,绿色为NetFlix Eureka相关类

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

    image.png

  2. SpringCloud eurekaClient自动注入

image.png
  1. EurekaDiscoveryClient自动注入也就是上面类图EurekaDiscoveryClientSpringCloud类),这里注入到Spring容器后,就可以在Spring中直接拿来使用了
    image.png
  1. CloudEurekaClient的初始化

    • CloudEurekaClient自动注入通过new CloudEurekaCLient 构造方法进入到下面的服务注册、定时续约等功能
    image.png
    • CloudEurekaClient通过super DiscoveryClient构造方法进入服务注册、定时续约等功能

      image.png

    • com.netflix.discovery.DiscoveryClient#DiscoveryClient()构造方法详细逻辑

      image.png

其它注意点

其它重点关注类

  1. InstanceInfo
就代表一个Eureka Client。里面包含了各个实例的详细属性信息
 lastDirtyTimestamp:记录当前intance在Client端的最后修改时间。
 lastUpdatedTimestamp:记录当前instance在Server端的最后修改时间。
 status:当前instance的存活状态(服务状态)
 overriddenStatus:可覆盖状态,是用户修改instance时使用的状态。
  1. 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
  1. Applications
其实就是从Eureka Server下载的注册表保存在Client端的形式。我们简称“客户端注册表”
appNameApplicationMap的key为微服务名称,value为对应上面的的Application。

Applications类结构


image.png
  1. Applications包含了Application(一个微服务)集合,Application包含了InstanceInfo(一个微服务下的服务实例)集合
  2. EurekaClientConfigBeanHecom
org.springframework.cloud.netflix.eureka.EurekaClientConfigBean和com.netflix.discovery.EurekaClientConfig 就是客户端相关的配置信息映射类
  1. 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注册中心的服务注册、服务续约、服务下架、拉取服务等接口来实现的

你可能感兴趣的:(SpringCloud Client源码解析)