主题
面试速答(先看这里)
**一句话结论:**Eureka的主要功能是实现服务注册中心,所以其实他的替代产品还挺多的,比如nacos、zk、consul等 。
60秒标准回答:
Spring Boot 3.x 移除了对 Java EE(Jakarta EE)旧 API(如 javax 包)的支持,而 Eureka 仍然依赖 javax.xml.bind 等 API, 因此官方不再维护 Eureka,并推荐其他方案
Eureka的主要功能是实现服务注册中心,所以其实他的替代产品还挺多的,比如nacos、zk、consul等
Nacos 是阿里巴巴开源的服务注册中心和配置中心。与Zookeeper不同的是,Nacos自带了配置中心功能,并提供了更多的可视化配置管理工具。Nacos的目标是成为一个更全面的云原生服务发现、配置和管理平台
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**Spring Boot 3.x 移除了对 Java EE(Jakarta EE)旧 API(如 javax 包)的支持,而 Eureka 仍然依赖 javax.xml.bind 等 API, 因此官方不再维护 Eureka,并推荐其他方案。
- **要点2:**Nacos 是阿里巴巴开源的服务注册中心和配置中心。
- **要点3:**Consul 是HashiCorp开源的服务注册中心和配置中心,提供了服务发现、健康检查、KV存储和多数据中心功能。
- **要点4:**Zookeeper 是最早流行的开源分布式协调服务框架之一,同时也提供了分布式配置中心的功能。
- **要点5:**TCP/HTTP/MYSQL/Client Beat
**记忆锚点:**Zookeeper → Consul → Eureka → Nacos → HTTP → Spring
追问准备:
- 围绕「Zookeeper」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Consul」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Eureka」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
Spring Boot 3.x 移除了对 Java EE(Jakarta EE)旧 API(如 javax 包)的支持,而 Eureka 仍然依赖 javax.xml.bind 等 API,因此官方不再维护 Eureka,并推荐其他方案。
Eureka的主要功能是实现服务注册中心,所以其实他的替代产品还挺多的,比如nacos、zk、consul等 。
Nacos
Nacos是阿里巴巴开源的服务注册中心和配置中心。与Zookeeper不同的是,Nacos自带了配置中心功能,并提供了更多的可视化配置管理工具。Nacos的目标是成为一个更全面的云原生服务发现、配置和管理平台。
Consul
Consul是HashiCorp开源的服务注册中心和配置中心,提供了服务发现、健康检查、KV存储和多数据中心功能。Consul提供了更丰富的健康检查和路由功能,同时也提供了丰富的API和Web UI。
Zookeeper
Zookeeper是最早流行的开源分布式协调服务框架之一,同时也提供了分布式配置中心的功能。Zookeeper以高可用、一致性和可靠性著称,但是需要用户自己来开发实现分布式配置的功能。
对比如下:
| Nacos | Eureka | Consul | Zookeeper | |
|---|---|---|---|---|
| CAP | CP+AP | AP | CP | CP |
| 健康检查 | TCP/HTTP/MYSQL/Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | Keep Alive |
| 负载均衡 | 权重/ metadata/Selector | Ribbon | Fabio | — |
| 一致性算法 | Raft/Distro | Gossip | Raft | ZAB |
| 雪崩保护 | 有 | 有 | 无 | 无 |
| 访问协议 | HTTP/DNS | HTTP | HTTP/DNS | TCP |
| 跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 |
| Spring Cloud集成 | 支持 | 支持 | 支持 | 支持 |
| Dubbo集成 | 支持 | 不支持 | 支持 | 支持 |
| K8s集成 | 支持 | 不支持 | 支持 | 支持 |