Skip to content

注册中心

一、核心概念:服务注册与发现

1. 什么是服务注册?

服务提供者启动时,将自身信息(服务名称、IP、端口、健康状态等)注册到注册中心,由注册中心保存这些信息。

2. 什么是服务发现?

服务消费者从注册中心拉取服务列表信息,根据负载均衡算法选择一个服务实例发起调用。

3. 注册中心的核心作用

  • 实现服务的自动注册与发现,解耦服务提供者与消费者;
  • 服务健康监控,通过心跳机制剔除故障实例;
  • 提供服务列表动态更新,支持服务扩缩容;
  • 部分注册中心(如Nacos)同时支持配置中心功能。

二、SpringCloud如何实现服务注册发现?(以Eureka为例)

  1. 服务注册:服务提供者启动后,向Eureka Server发送注册请求,注册自身信息;
  2. 心跳续约:服务提供者每隔30秒向Eureka发送心跳,报告健康状态;
  3. 服务拉取:服务消费者从Eureka Server拉取服务列表,缓存到本地;
  4. 健康剔除:Eureka Server若90秒未收到服务提供者的心跳,将该实例从注册列表中剔除;
  5. 远程调用:消费者通过负载均衡算法选择一个服务实例,发起远程调用。

三、常见注册中心对比:Eureka vs Nacos

1. 共同点

  • 都支持服务注册与服务拉取;
  • 都支持服务提供者通过心跳方式进行健康检测。

2. 核心区别

特性EurekaNacos
健康检测模式仅客户端心跳模式,服务端不主动检测临时实例采用心跳模式,非临时实例采用服务端主动检测模式
实例剔除策略心跳超时(90秒)剔除所有实例临时实例心跳异常会被剔除,非临时实例不会被剔除
服务列表更新客户端定时拉取,更新存在延迟支持消息推送模式,服务列表更新更及时
一致性模式仅支持AP模式(高可用优先)集群默认AP模式,存在非临时实例时切换为CP模式(一致性优先)
附加功能仅注册中心功能同时支持注册中心+配置中心,支持动态配置刷新

四、面试相关问题

  1. 问:服务注册和发现是什么意思?注册中心的作用是什么?答: 服务注册是指服务提供者将自身信息注册到注册中心;服务发现是指服务消费者从注册中心拉取服务列表。注册中心的核心作用是解耦服务提供者与消费者,实现服务的自动注册、动态发现、健康监控和负载均衡,支持服务扩缩容和故障剔除。

  2. 问:Eureka如何实现服务注册发现?答: Eureka通过以下流程实现:服务提供者注册信息并定时发送心跳,服务消费者拉取服务列表,Eureka Server超时未收到心跳则剔除故障实例,消费者通过负载均衡选择实例发起调用。

  3. 问:Nacos和Eureka的主要区别是什么?答: 主要区别在于:Nacos支持服务端主动检测健康状态,服务列表更新更及时;支持AP/CP模式切换;同时具备配置中心功能;而Eureka仅支持客户端心跳检测和AP模式,功能相对单一。

  4. 问:服务注册中心的心跳续约机制是什么?答: 服务提供者每隔固定时间(如Eureka的30秒)向注册中心发送心跳,报告自身健康状态。若注册中心在规定时间(如Eureka的90秒)内未收到心跳,则判定服务实例故障并将其从注册列表中剔除。

Powered by VitePress 1.6.4 | 持续更新中