MST

星途 面试题库

面试题:微服务架构下Spring Cloud服务发现机制中Eureka的工作原理

在微服务架构中,Spring Cloud常用Eureka作为服务发现组件。请详细阐述Eureka Server和Eureka Client之间是如何进行交互来实现服务发现的,包括注册、续约、下线等操作的具体流程。
21.7万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

1. 服务注册流程

  1. Eureka Client 初始化:微服务应用在启动时,配置了 Eureka Client 的相关参数,如 Eureka Server 的地址等。
  2. 发送注册请求:Eureka Client 向 Eureka Server 发送一个 HTTP POST 请求,请求体包含了该微服务的元数据信息,例如服务名称、IP 地址、端口号、健康检查路径等。
  3. Eureka Server 处理注册:Eureka Server 接收到注册请求后,会将该微服务的信息存储在自己的注册表中。同时,Eureka Server 会向其他 Eureka Server 节点进行数据同步(如果是集群环境),以保证各节点注册表的一致性。

2. 续约流程

  1. 定时续约:Eureka Client 会在启动后,按照一定的时间间隔(默认 30 秒)向 Eureka Server 发送 HTTP PUT 请求进行续约,表明自己仍然存活。
  2. Eureka Server 处理续约:Eureka Server 接收到续约请求后,会更新该微服务在注册表中的最后续约时间。只要该微服务的续约时间间隔在一定范围内(默认 90 秒内没有收到续约请求,会将服务标记为过期),Eureka Server 就会认为该服务处于正常运行状态。

3. 下线流程

  1. 主动下线:当微服务应用需要停止运行时,Eureka Client 会向 Eureka Server 发送一个 HTTP DELETE 请求,告知 Eureka Server 自己要下线。
  2. Eureka Server 处理下线:Eureka Server 接收到下线请求后,会从注册表中移除该微服务的信息,并向其他 Eureka Server 节点同步此变更(集群环境)。同时,Eureka Server 会将该服务下线的信息推送给其他 Eureka Client,以便它们更新本地的服务注册表,不再将请求发送到已下线的服务实例。
  3. 过期下线:如果 Eureka Server 在一定时间(默认 90 秒)内没有收到某个微服务的续约请求,Eureka Server 会将该服务标记为过期,并在之后的某个时间(默认 60 秒后)将其从注册表中移除。移除后同样会向其他 Eureka Server 节点同步以及通知 Eureka Client。