既然你还没看完,咱们就不走大而全的路线,直接抓最核心、面试出勤率最高的“四大金刚”:注册中心、配置中心、网关、熔断降级。
面试官通常喜欢问“为什么需要它”和“底层怎么实现的”。
1. 注册中心:Nacos / Eureka
面试官: “微服务为什么要用注册中心?Nacos 和 Eureka 有什么区别?”
-
核心作用: 解耦。服务 A 想调服务 B,不需要写死 IP 地址,而是去注册中心查“B 在哪”。
-
Nacos 的优势:
-
CP 和 AP 切换: Nacos 支持 CP(强一致性)和 AP(高可用性)模式切换,而 Eureka 仅支持 AP。
-
配置中心集成: Nacos 一个顶两个(注册中心+配置中心)。
-
临时/持久节点: Nacos 能区分非动态缩容的实例(持久化存储)。
-
2. 配置中心:Nacos Config / Spring Cloud Config
面试官: “配置中心是怎么实现‘热更新’(不重启就生效)的?”
-
原理: 客户端(你的微服务)会跟 Nacos 建立一个 长轮询(Long Polling) 机制。
-
过程:
-
客户端发起请求询问:“配置变了吗?”
-
Nacos 发现没变,就把请求 hold 住 29.5 秒。
-
期间配置一旦变了,立刻返回响应;如果到时间还没变,才返回空响应。
-
客户端收到变化通知,重新拉取配置,并触发
@RefreshScope刷新内存中的 Bean。
-
3. 负载均衡与远程调用:OpenFeign
面试官: “OpenFeign 的底层原理是什么?”
-
回答核心:动态代理 + Ribbon。
-
当你调用一个接口方法时,Feign 会生成一个 JDK 动态代理。
-
它会解析你接口上的
@FeignClient和@GetMapping注解,拼接成请求路径。 -
核心: 它集成并调用了负载均衡器(旧版 Ribbon,新版 LoadBalancer),从注册中心拿到的 IP 列表中选一个。
-
最后用 HTTP 客户端(如 OkHttp 或 HttpURLConnection)把请求发出去。
-
4. 网关:Spring Cloud Gateway
面试官: “网关除了转发请求,还能干什么?”
-
回答重点: 鉴权、限流、日志监控、路径重写。
-
底层架构: Gateway 是基于 Spring 5 + Project Reactor + Netty 构建的。它是非阻塞响应式编程,性能比老掉牙的 Zuul 1.0 强得多。
5. 熔断与限流:Sentinel / Resilience4j
面试官: “什么是服务雪崩?怎么解决?”
-
雪崩: 一个下游服务挂了,导致上游服务所有线程都在等,最后把整个系统拖垮。
-
三板斧:
-
熔断(Circuit Breaker): 发现下游不行了,直接断开,不再调用,快速返回错误。
-
降级(Fallback): 熔断后,走备用方案(比如返回“系统繁忙”或缓存数据)。
-
限流(Rate Limiting): 限制 QPS,保护自己不被瞬间流量冲垮。
-
给你的“突击”建议:
-
CAP 定理: 必须背熟。Eureka 选 AP(可用),Nacos 默认 AP(可切 CP)。
-
版本对应: Spring Cloud 版本跟 Spring Boot 版本如果对不上,项目直接跑不起来。面试时提到“我会注意版本兼容性”显得很稳重。
-
自荐: 你之前做过 PancakeBot 的 Nginx 维护,面试时可以顺一嘴:“我对 Nginx 这种外部网关和 Spring Cloud Gateway 这种内部网关的配合有实战经验。”
这几个点你现在感觉哪个最模糊?我再针对性给你拆解。