MST

星途 面试题库

面试题:微服务架构下Spring Cloud如何实现基础的集群状态管理

在Spring Cloud微服务架构中,阐述一下Eureka在集群状态管理方面的基本原理和工作机制,包括服务注册、发现以及心跳检测等关键环节。
19.8万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

服务注册原理与机制

  1. 服务提供者注册
    • 服务启动时,会向Eureka Server发送一个HTTP POST请求,将自身的元数据(如服务名称、IP地址、端口号、健康检查URL等)封装在请求体中,发送到Eureka Server的/eureka/apps/ + <serviceName> 接口。
    • Eureka Server接收到注册请求后,会将该服务实例信息保存到一个名为registry的ConcurrentHashMap中,这个Map以服务名称为键,服务实例列表为值。
  2. 集群间数据同步
    • 在Eureka集群环境下,Eureka Server之间会相互注册。当一个Eureka Server接收到新的服务注册信息时,它会通过Replication机制将该信息同步到其他Eureka Server节点。
    • 同步过程基于HTTP协议,通过调用其他Eureka Server的/eureka/replicate接口,将新注册的服务实例信息发送过去,确保各个节点的数据一致性。

服务发现原理与机制

  1. 服务消费者获取服务列表
    • 服务消费者启动时,会向Eureka Server发送一个HTTP GET请求,请求地址为/eureka/apps/ + <serviceName> ,以获取特定服务的实例列表。
    • Eureka Server接收到请求后,从registry中取出对应服务的实例列表,并返回给服务消费者。
  2. 缓存机制
    • 为了减少对Eureka Server的请求压力,服务消费者会在本地缓存从Eureka Server获取的服务实例列表。
    • 缓存有一定的过期时间,默认30秒。过期后,服务消费者会再次向Eureka Server获取最新的服务实例列表。

心跳检测原理与机制

  1. 服务提供者发送心跳
    • 服务提供者在注册到Eureka Server后,会周期性地(默认30秒)向Eureka Server发送HTTP PUT请求,请求地址为/eureka/apps/ + <serviceName>+/ + <instanceId> ,告知Eureka Server自己仍然存活。
  2. Eureka Server处理心跳
    • Eureka Server接收到心跳请求后,会更新对应服务实例的最后心跳时间。
    • 如果Eureka Server在一定时间(默认90秒)内没有收到某个服务实例的心跳,会将该实例从registry中剔除,并通过Replication机制同步到其他Eureka Server节点,同时向服务消费者发送服务实例变更的通知,让服务消费者更新本地缓存的服务实例列表。