主题切换
注册中心
一、核心概念:服务注册与发现
1. 什么是服务注册?
服务提供者启动时,将自身信息(服务名称、IP、端口、健康状态等)注册到注册中心,由注册中心保存这些信息。
2. 什么是服务发现?
服务消费者从注册中心拉取服务列表信息,根据负载均衡算法选择一个服务实例发起调用。
3. 注册中心的核心作用
- 实现服务的自动注册与发现,解耦服务提供者与消费者;
- 服务健康监控,通过心跳机制剔除故障实例;
- 提供服务列表动态更新,支持服务扩缩容;
- 部分注册中心(如Nacos)同时支持配置中心功能。
二、SpringCloud如何实现服务注册发现?(以Eureka为例)
- 服务注册:服务提供者启动后,向Eureka Server发送注册请求,注册自身信息;
- 心跳续约:服务提供者每隔30秒向Eureka发送心跳,报告健康状态;
- 服务拉取:服务消费者从Eureka Server拉取服务列表,缓存到本地;
- 健康剔除:Eureka Server若90秒未收到服务提供者的心跳,将该实例从注册列表中剔除;
- 远程调用:消费者通过负载均衡算法选择一个服务实例,发起远程调用。
三、常见注册中心对比:Eureka vs Nacos
1. 共同点
- 都支持服务注册与服务拉取;
- 都支持服务提供者通过心跳方式进行健康检测。
2. 核心区别
| 特性 | Eureka | Nacos |
|---|---|---|
| 健康检测模式 | 仅客户端心跳模式,服务端不主动检测 | 临时实例采用心跳模式,非临时实例采用服务端主动检测模式 |
| 实例剔除策略 | 心跳超时(90秒)剔除所有实例 | 临时实例心跳异常会被剔除,非临时实例不会被剔除 |
| 服务列表更新 | 客户端定时拉取,更新存在延迟 | 支持消息推送模式,服务列表更新更及时 |
| 一致性模式 | 仅支持AP模式(高可用优先) | 集群默认AP模式,存在非临时实例时切换为CP模式(一致性优先) |
| 附加功能 | 仅注册中心功能 | 同时支持注册中心+配置中心,支持动态配置刷新 |
四、面试相关问题
问:服务注册和发现是什么意思?注册中心的作用是什么?答: 服务注册是指服务提供者将自身信息注册到注册中心;服务发现是指服务消费者从注册中心拉取服务列表。注册中心的核心作用是解耦服务提供者与消费者,实现服务的自动注册、动态发现、健康监控和负载均衡,支持服务扩缩容和故障剔除。
问:Eureka如何实现服务注册发现?答: Eureka通过以下流程实现:服务提供者注册信息并定时发送心跳,服务消费者拉取服务列表,Eureka Server超时未收到心跳则剔除故障实例,消费者通过负载均衡选择实例发起调用。
问:Nacos和Eureka的主要区别是什么?答: 主要区别在于:Nacos支持服务端主动检测健康状态,服务列表更新更及时;支持AP/CP模式切换;同时具备配置中心功能;而Eureka仅支持客户端心跳检测和AP模式,功能相对单一。
问:服务注册中心的心跳续约机制是什么?答: 服务提供者每隔固定时间(如Eureka的30秒)向注册中心发送心跳,报告自身健康状态。若注册中心在规定时间(如Eureka的90秒)内未收到心跳,则判定服务实例故障并将其从注册列表中剔除。