【微服务~原始真解】Spring Cloud —— Eureka Client原码解析(一)

2年前 (2022) 程序员胖胖胖虎阿
285 0 0

【微服务~原始真解】Spring Cloud —— Eureka Client原码解析(一)

🔎这里是【秒懂·云原生】,关注我学习云原生不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️

👀专栏介绍

【秒懂·云原生】 目前主要更新微服务,一起学习一起进步。

👀本期介绍

主要介绍Spring Cloud —— Eureka Client原码解析(一)

文章目录

  • 👀专栏介绍
  • 👀本期介绍
  • Eureka Client原码解析
    • 读取应用自身配置信息

Eureka Client原码解析

Eureka Client为了简化开发人员的开发工作,将很多与Eureka Server交互的工作隐藏起来,自主完成。在应用的不同运行阶段在后台完成工作如图所示。
【微服务~原始真解】Spring Cloud —— Eureka Client原码解析(一)
为了跟踪Eureka的运行机制,读者可以通过打开Spring Boot的Debug模式来查看更多的输出日志,如下所示:

logging:
  level:
    org.springframework : DEBUG
 

Eukeka Client通过Starter的方式引入依赖,Spring Boot将会为项目使用以下的自动配置类:

  • ·EurekaClientAutoConfiguration: Eureke Client自动配置类,负责Eureka Client中关键Beans的配置和初始化,如ApplicationInfoManager和EurekaClientConfig等。
  • ·RibbonEurekaAutoConfiguration: Ribbon负载均衡相关配置。
  • .EurekaDiscoveryClientConfiguration:配置自动注册和应用的健康检查器。

读取应用自身配置信息

通过EurekaDiscoveryClientConfiguration配置类,Spring Boot帮助EurekaClient完成很多必要Bean的属性读取和配置,下表列出了
EurekaDiscoveryClientConfiguration中的属性读取和配置类。

EurekaDiscoveryClientConfiguration中属性读取和配置类
【微服务~原始真解】Spring Cloud —— Eureka Client原码解析(一)
下面我们对Spring Cloud中的服务发现客户端DiscoveryClient进行进一步的介绍,它是客户端进行服务发现的核心接口。

DiscoveryClient是Spring Cloud中用来进行服务发现的顶级接口,在NetflixEureka或者Consul中都有相应的具体实现类,在前面的文章基础应用中有所介绍,该接口提供的方法如下:

//DiscoveryClient.java
public interface DiscoveryClient {
//获取实现类的描述
String description() ;
//通过服务Id获取服务实例的信息
List<ServiceInstance> getInstances(String serviceld);//获取所有的服务实例Id
List<String> getServices();
}

其在Eureka方面的实现类结构如图所示。
【微服务~原始真解】Spring Cloud —— Eureka Client原码解析(一)
EurekaDiscoveryClient继承了DiscoveryClient接口,但是通过查看
EurekaDiscoveryClient中代码,会发现它是通过组合EurekaClien类实现接口的功能,如下为getInstance方法的实现:

//EurekaDiscoveryClient.java@Override
public List<ServiceInstance> getInstances (String serviceld){
List<InstanceInfo> infos = this.eurekaClient.getInstancesByVipAddress(serviceld,false) ;
List<ServiceInstance> instances = new ArrayList<> () ;
for (InstanceInfo info : infos) {
instances.add (new EurekaServiceInstance (info)) ;
}
return instances;
}

EurekaClient来自于com.netflix.discovery包中,其默认实现为
com.netflix.discovery.DiscoveryClient,属于eureka-client的源代码,它提供了Eureka Client注册到Server上、续租、下线以及获取Server中注册表信息等诸多关键功能。Spring Cloud通过组合方式调用了Eureka中的服务发现方法,关于EurekaClient的详细代码分析在下一章进行介绍。

相关文章

暂无评论

暂无评论...