irpas技术客

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

网络投稿 1423

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

👀专栏介绍

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

👀本期介绍

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

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

Eureka Client原码解析

Eureka Client为了简化开发人员的开发工作,将很多与Eureka Server交互的工作隐藏起来,自主完成。在应用的不同运行阶段在后台完成工作如图所示。 为了跟踪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中的服务发现客户端DiscoveryClient进行进一步的介绍,它是客户端进行服务发现的核心接口。

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

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

其在Eureka方面的实现类结构如图所示。 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的详细代码分析在下一章进行介绍。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #微服务原始真解Spring #Cloud #Eureka #Client原码解析一 #Spring