微服务面试题
本文整理 Java 后端开发高频面试题的微服务部分。每道题统一格式:题目 → 答案 → 对比表 / 代码示例 / 一句话记忆。
1. 服务网关作用
服务网关是微服务架构的统一入口,所有外部请求先经过网关,再路由到具体服务。核心作用包括 6 项:
- 服务路由:根据请求路径将请求转发到对应的后端服务实例,支持负载均衡。
- 负载均衡:在多个服务实例间分发请求(集成 Ribbon / LoadBalancer)。
- 流量控制:限流、熔断、降级,保护后端服务不被流量打垮。
- 熔断保护:后端服务异常时快速失败,防止级联故障(集成 Sentinel / Hystrix)。
- 日志监控:统一记录请求日志、调用链追踪、指标上报。
- 安全认证:统一鉴权(JWT、OAuth2)、黑白名单、跨域处理、防爬虫。
客户端请求 → [网关: 路由/鉴权/限流/熔断/日志] → 微服务A / 微服务B / 微服务C主流网关对比:
| 对比项 | Spring Cloud Gateway | Zuul | Nginx |
|---|---|---|---|
| 出品方 | Spring(Pivotal) | Netflix | 开源 |
| 版本 | Spring Cloud Gateway 3.x | Zuul 1.x(已停更)/ Zuul 2.x | - |
| 编程模型 | Reactor + Netty(异步非阻塞) | Servlet(同步阻塞)/ Zuul 2 异步 | C(事件驱动) |
| 性能 | 高(基于 WebFlux) | Zuul 1 中等 | 极高 |
| 功能 | 路由、过滤、限流、熔断 | 路由、过滤 | 反向代理、负载均衡、静态资源 |
| 可编程性 | 强(Filter / Predicate 可自定义) | 中(Filter) | 弱(配置为主,需 Lua 扩展) |
| 生态 | Spring Cloud 原生集成 | Netflix OSS(已停止维护) | 通用 |
| 适用场景 | Spring Cloud 微服务网关 | 老项目 | 流量入口 / 静态资源 / 传统负载均衡 |
实际架构中常配合使用: Nginx 作为最外层反向代理(负载均衡 + 静态资源),Spring Cloud Gateway 作为业务网关(路由 + 鉴权 + 限流)。
💡 一句话记忆:网关六大作用 = 路由 + 负载 + 限流 + 熔断 + 日志 + 鉴权;Spring Cloud 首选 Gateway,Zuul 已停更。
相关笔记
- [技术型面试题-01-Java基础.md](file:///Users/pika/fsf/project/fsf-lunar-base/note/08-工作/06-面试/技术型面试题-01-Java基础.md)
- [技术型面试题-02-JVM.md](file:///Users/pika/fsf/project/fsf-lunar-base/note/08-工作/06-面试/技术型面试题-02-JVM.md)
- [技术型面试题-03-Spring.md](file:///Users/pika/fsf/project/fsf-lunar-base/note/08-工作/06-面试/技术型面试题-03-Spring.md)
- [技术型面试题-04-Redis.md](file:///Users/pika/fsf/project/fsf-lunar-base/note/08-工作/06-面试/技术型面试题-04-Redis.md)
- 消息队列面试题:
note/08-开发/11-消息队列/目录下的 Kafka、RabbitMQ、RocketMQ 面试题与架构详解 - 非技术型面试题:[非技术型面试题.md](file:///Users/pika/fsf/project/fsf-lunar-base/note/08-工作/非技术型面试题.md)
- 技术栈知识整理:[知识整理.md](file:///Users/pika/fsf/project/fsf-lunar-base/note/08-工作/知识整理.md)
版本说明
本文内容基于以下版本编写:
- Java:以 JDK 8 为主,部分内容兼顾 JDK 17(LTS)特性。
- Spring / Spring Boot:基于 Spring Framework 6.x、Spring Boot 3.x。
- Redis:基于 Redis 7.x,兼顾 6.0 多线程、4.0 LFU 等版本特性。
- JVM:以 HotSpot 虚拟机为主,垃圾回收器涵盖 CMS、G1、ZGC。