整理自 Spring Cloud 面试题 49 道。详细原理见 Spring Cloud 基础。
相关学习笔记
| 专题 | 笔记 |
|---|---|
| Spring 全家桶 | Spring 全家桶 |
| Spring Cloud | Spring Cloud 基础 |
| Spring Boot | Spring Boot 入门与启动 |
1. 什么是微服务架构
单体拆分为多个独立部署的小服务,各自进程、轻量通信、按业务能力划分、可不同语言与数据库。
2. 为什么学习 Spring Cloud
基于 Boot 简化配置;整合注册发现、网关、熔断、负载均衡等,开箱即用,直击分布式痛点。
3. Spring Cloud 是什么
有序集合的框架,用 Boot 风格简化分布式基础设施:服务发现、配置、路由、熔断、监控等。
4. Spring Cloud 优缺点
优点:解耦、并行开发、配置简单、跨语言、独立库。缺点:部署复杂、数据分散、集成测试难、监控成本高。
5. Spring Boot 和 Spring Cloud 区别
Boot 专注单个微服务开发;Cloud 做全局治理(配置、发现、路由、熔断等)。Cloud 依赖 Boot,Boot 可单独用。
6. Spring Cloud 和 Spring Boot 版本对应
Release Train 命名(如 Hoxton、Greenwich),需查官方对照表与 Boot 2.x/3.x 匹配(如 Hoxton ≈ Boot 2.2.x)。
7. Spring Cloud 由什么组成
Eureka、Zuul/Gateway、Ribbon、Feign、Hystrix、Config、Bus、Consul、Sleuth 等(随版本演进,部分进入维护模式)。
8. 用 Boot 开发分布式微服务面临什么问题
网络延迟、服务发现、负载均衡、容错、配置集中管理、链路追踪、安全等。
9. Spring Cloud 和 Dubbo 区别
调用:RPC vs REST;注册:ZK vs Eureka/Nacos;Cloud 自带网关、配置刷新、熔断等一体化组件。
10. 服务注册和发现?Spring Cloud 如何实现
服务注册到注册中心,消费者查询实例列表再调用。Spring Cloud 常用 Eureka(或 Nacos、Consul)。
11. 什么是 Eureka
服务注册中心,服务实例注册并保持心跳,客户端拉取可用实例。
12. Eureka 怎么实现高可用
多 Eureka 节点集群,服务向多个注册,客户端按列表访问。
13. Eureka 自我保护模式
短时间内大量心跳失败时不立即剔除注册表,网络恢复后自动退出,防止误杀。
14. DiscoveryClient 的作用
从注册中心按服务名获取实例列表(Spring Cloud 封装客户端)。
15. Eureka 和 Zookeeper 区别
ZK 选举期间可能不可用,偏 CP;Eureka 节点平等,偏 AP,更适合服务发现;ZK 是进程,Eureka 是应用。
16. 什么是网关
微服务架构的统一入口,请求经网关转发到后端服务。
17. 网关的作用
路由、鉴权、限流、负载均衡、日志审计、服务聚合等。
18. 什么是 Spring Cloud Zuul
基于 Servlet 的路由网关:动态路由、反向代理,可与 Eureka、Ribbon、Hystrix 配合。
19. 网关与过滤器区别
网关处理全局入口流量;过滤器可指网关内 filter 或单服务 filter,粒度不同。
20. 常用网关框架
Nginx、Zuul、Spring Cloud Gateway(推荐替代 Zuul)。
21. Zuul 与 Nginx 区别
Zuul:Java、与 Spring 集成灵活。Nginx:C、性能高,自定义需 Lua。可 Nginx + Zuul 集群。
22. 有 Nginx 为什么还要 Zuul
Zuul 与 Spring Cloud 生态集成(注册发现、统一配置、Java 扩展)更方便。
23. 如何设计 API 接口
区分内外网 API;开放 API 用 OAuth2;考虑安全、幂等、版本、限流。
24. ZuulFilter 常用方法
run() 业务逻辑;shouldFilter() 是否执行;filterOrder() 顺序;filterType() 类型(pre/route/post/error)。
25. 动态 Zuul 路由转发
path 匹配 + ServiceId 从配置中心取服务列表,Ribbon 负载均衡转发。
26. Zuul 网关集群搭建
Nginx upstream 配置多个 Zuul 实例,轮询转发。
27. 负载均衡的意义
把请求分散到多个实例,提高吞吐与可用性,避免单点过载。
28. Ribbon 是什么
客户端负载均衡库,按规则(轮询、随机等)选择实例。
29. Nginx 与 Ribbon 区别
Nginx:服务端反向代理;Ribbon:客户端从注册中心取列表再选实例。
30. Ribbon 底层原理(简述)
从注册中心拉取实例列表,按规则(如轮询)选择目标;@LoadBalanced 增强 RestTemplate。
31. 什么是断路器
调用失败过多时熔断,快速失败,避免雪崩;有开/半开/关三种状态。
32. 什么是 Hystrix
熔断、降级、隔离、监控,防雪崩(新项目可了解 Sentinel / Resilience4j)。
33. 服务雪崩效应
下游故障导致上游线程阻塞,故障蔓延到整个系统。
34. 微服务如何保护服务
熔断、降级、隔离、限流;Hystrix/Sentinel 等。
35. 雪崩产生原因
代码 bug、流量激增、硬件故障、线程池被占满等。
36. 服务降级、熔断、隔离
降级:返回兜底;熔断:失败率超阈值短路;隔离:线程池/信号量隔离依赖。
37. 服务降级底层如何实现
Hystrix 的 getFallback() 或类似框架的 fallback 回调。
38. 什么是 Feign
声明式 HTTP 客户端,定义接口即可远程调用。
39. Spring Cloud 调用接口方式
Feign、RestTemplate(加 @LoadBalanced)。
40. Ribbon 和 Feign 区别
Ribbon 需自己拼 HTTP;Feign 在 Ribbon 基础上用接口声明,更简洁。
41. 什么是 Spring Cloud Bus
分布式消息总线,配合 MQ 广播配置变更,实现刷新。
42. 什么是 Spring Cloud Config
分布式配置中心:Config Server + Config Client,常存 Git。
43. 分布式配置中心框架
Apollo、Nacos、Zookeeper、Spring Cloud Config 等。
44. 分布式配置中心作用
集中管理配置,动态刷新无需重新部署。
45. Spring Cloud Config 实时刷新
配合 Spring Cloud Bus 广播刷新事件。
46. 什么是 Spring Cloud Gateway
第二代网关(WebFlux),路由、断言、过滤器,替代 Zuul。
47. Spring Cloud 主要子项目(简述)
Config、Netflix 套件(Eureka/Ribbon/Hystrix/Feign/Zuul)、Bus、Consul、Gateway、OpenFeign、Sleuth、Stream 等。
48. Spring Cloud 和 Spring Boot 版本对应关系
查官方 Release Train 与 Boot 版本矩阵,不可随意混搭。
49. Spring Cloud 各子项目版本对应关系
随 Release Train(如 Greenwich.SR2)统一 BOM 管理各组件版本,避免单独升子项目导致不兼容。