Spring Cloud 面试题 49 道

笔记/Java/面试专栏/Spring Cloud 面试题 49 道

整理自 Spring Cloud 面试题 49 道。详细原理见 Spring Cloud 基础

相关学习笔记#

专题笔记
Spring 全家桶Spring 全家桶
Spring CloudSpring Cloud 基础
Spring BootSpring 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 调用接口方式#

FeignRestTemplate(加 @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 管理各组件版本,避免单独升子项目导致不兼容。

文章目录

文章目录