Java面试题更新 2026-08-05

请解释 Eureka 服务注册与发现的工作机制,包括核心组件、服务注册、心跳续约、服务剔除、服务下线以及缓存机制几个方面,并说明其在分布式系统中的角色。

后端开发技术原理Spring Cloud

考察说明

考查对 Eureka 作为服务注册中心的核心机制与工作原理的理解。

回答思路

  1. 【回答框架 1】Eureka 是 Netflix 提供的服务注册与发现组件,采用客户端-服务器架构,核心组件包括 Eureka Server 和 Eureka Client。Eureka Server 作为注册中心,提供服务注册、心跳、剔除、查询等功能;Eureka Client 负责向 Server 注册自身服务、发送心跳、获取服务列表并缓存。
  2. 【回答框架 2】服务注册:服务提供者在启动时向 Eureka Server 发送注册请求,Server 保存服务实例信息(如 IP、端口、元数据)。心跳续约:客户端默认每 30 秒发送一次心跳续约,Server 在 90 秒内未收到心跳,则将实例标记为过期并从注册表剔除。
  3. 【回答框架 3】服务下线:客户端在优雅关闭时主动发送下线请求,Server 删除实例信息。服务剔除:Server 启动后台任务定期扫描,剔除超过 90 秒未续约的实例,同时保护机制会在心跳比例低于 85% 时暂停剔除以防止网络分区导致误删。
  4. 【回答框架 4】缓存机制:Eureka Server 包含二级缓存,先读只读缓存(每 30 秒更新),未命中则读读写缓存(每 180 秒更新),Client 也缓存服务列表(默认 30 秒更新),用于减少 Server 压力。
  5. 【回答框架 5】Eureka 采用 AP 模型,优先保证可用性,牺牲一致性,通过客户端缓存和自我保护机制应对网络分区,适合对一致性要求不高的微服务场景。
  6. 【关键点 1】Eureka 核心组件:Server 与 Client,Server 负责注册表管理,Client 负责注册、心跳和获取服务列表。
  7. 【关键点 2】服务注册依赖 HTTP 请求,心跳默认 30 秒一次,90 秒未续约则剔除。
  8. 【关键点 3】自我保护机制:心跳比例低于 85% 时暂停剔除,避免网络分区误删实例。
  9. 【关键点 4】Server 二级缓存(只读和读写)与 Client 本地缓存共同降低 Server 压力。
  10. 【关键点 5】Eureka 遵循 AP 原则,通过客户端缓存和自我保护应对分区,不保证强一致。
  11. 【易错点 1】不能将分布式锁的互斥与幂等混淆,分布式锁只保证互斥,幂等需唯一标识和状态记录。
  12. 【易错点 2】线程数公式如 Ncpu * (1 + W/C) 仅为初始估算,实际需结合压测和资源约束。
  13. 【易错点 3】服务剔除不等于服务不可用,可能存在网络分区,自我保护机制可能导致短暂的不一致。