文章

注册中心

注册中心

在 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)的地址,从而能够调用。

当然,实际情况下,会分成两种注册中心的发现模式:

  1. 客户端发现模式
  2. 服务端发现模式

在 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 进行授权