注册中心
注册中心
在 Spring Cloud 中,能够使用的注册中心,还是比较多的,如下:
- spring-cloud-netflix-eureka-server 和 spring-cloud-netflix-eureka-client ,基于 Eureka 实现。
- spring-cloud-alibaba-nacos-discovery ,基于 Nacos 实现。
- spring-cloud-zookeeper-discovery ,基于 Zookeeper 实现。
- … 等等
以上的实现,都是基于 spring-cloud-commons 的 discovery 的 DiscoveryClient 接口,实现统一的客户端的注册发现。
为什么要使用服务发现?
简单来说,通过注册中心,调用方(Consumer)获得服务方(Provider)的地址,从而能够调用。
当然,实际情况下,会分成两种注册中心的发现模式:
- 客户端发现模式
- 服务端发现模式
在 Spring Cloud 中,我们使用前者,即客户端发现模式。
详细的内容,可以看看 《为什么要使用服务发现》 。
Eureka
- 作用:实现服务治理(服务注册与发现)
- 简介:Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。
- 由两个组件组成:Eureka 服务端和 Eureka 客户端。
- Eureka 服务端,用作服务注册中心,支持集群部署。
- Eureka 客户端,是一个 Java 客户端,用来处理服务注册与发现。
在应用启动时,Eureka 客户端向服务端注册自己的服务信息,同时将服务端的服务信息缓存到本地。客户端会和服务端周期性的进行心跳交互,以更新服务租约和服务信息。
Eureka 原理,整体如下图:
关于 Eureka 的源码解析,可以看看艿艿写的 《Eureka 源码解析系列》 。
Eureka 如何实现集群?
《配置 Eureka Server 集群》
此处,也很容易引申出一个问题,为什么 Eureka 被设计成 AP 的系统,答案可以看看 《为什么不应该使用 ZooKeeper 做服务发现》 。
聊聊 Eureka 缓存机制?艿艿画了下 Eureka 的缓存机制,如下图所示:
原图可见地址:https://www.processon.com/view/link/5f49e2055653bb0c71de11e4
建议胖友可以手绘下,便于面试和面试官你侬我侬~
推荐额外阅读下如下三篇文章:
- 《详解 Eureka 缓存机制》
- 《Eureka 的多级缓存机制》
- 《Eureka 缓存细节以及生产环境的最佳配置》
什么是 Eureka 自我保护机制?
《[Spring Cloud] Eureka 的自我保护模式及相关问题》
本文由作者按照 CC BY 4.0 进行授权


