MST

星途 面试题库

面试题:微服务架构下Eureka服务发现的原理及应用

请阐述在微服务架构中Eureka实现服务发现的基本原理,并且说明Eureka Server和Eureka Client在这个过程中分别扮演什么角色,以及它们之间是如何进行交互的。
27.2万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

Eureka实现服务发现基本原理

  1. 服务注册:Eureka Client会向Eureka Server注册自己的服务实例信息,包括服务名称、IP地址、端口等。Eureka Server将这些信息存储在一个注册表中。
  2. 服务续约:Eureka Client会定期(默认30秒)向Eureka Server发送心跳,以表明自己仍然存活。如果Eureka Server在一定时间(默认90秒)内没有收到某个服务实例的心跳,则会将该实例从注册表中移除。
  3. 服务发现:其他Eureka Client在需要调用某个服务时,会从Eureka Server获取服务注册表,从而知道目标服务的实例信息,然后可以根据这些信息进行远程调用。
  4. 自我保护:当Eureka Server在短时间内丢失过多客户端心跳时(比如网络故障导致大量实例心跳无法送达),Eureka Server会进入自我保护模式,不再从注册表中移除心跳超时的实例,以避免误删服务实例。

Eureka Server角色

  1. 注册表维护者:负责接收、存储和管理Eureka Client注册的服务实例信息,形成服务注册表。
  2. 心跳监听者:监听Eureka Client发送的心跳,根据心跳情况判断服务实例的健康状态。
  3. 服务提供者:为Eureka Client提供服务实例信息查询接口,以便Eureka Client获取其他服务的实例列表。

Eureka Client角色

  1. 服务注册者:将自身的服务实例信息注册到Eureka Server。
  2. 心跳发送者:定期向Eureka Server发送心跳,维持服务实例的存活状态。
  3. 服务发现者:从Eureka Server获取服务注册表,发现其他服务的实例信息,用于服务调用。

二者交互过程

  1. 注册阶段:Eureka Client启动时,通过HTTP请求将自己的服务实例信息发送到Eureka Server的/register端点进行注册。
  2. 续约阶段:Eureka Client定时(默认30秒)向Eureka Server的/renew端点发送心跳请求,进行服务续约。
  3. 获取服务阶段:Eureka Client通过HTTP请求到Eureka Server的/fetchRegistry端点获取服务注册表信息。
  4. 下线阶段:当Eureka Client要关闭时,会向Eureka Server的/cancel端点发送请求,将自己从注册表中注销。