当前位置:首页 > 技术分析 > 正文内容

爆了爆了,Spring Cloud面试题(spring cloud面试知识点总结)

ruisui882个月前 (04-30)技术分析15

1. 什么是 Spring Cloud?它的主要目标是什么?

Spring Cloud 是用于构建分布式系统和微服务架构的工具集,提供云原生应用所需的基础设施支持。主要目标:简化分布式系统开发,解决服务发现、配置管理、熔断、负载均衡等问题,提升系统的弹性、容错性和可维护性。


2. Spring Cloud 和 Spring Boot 之间有什么关系?

  • Spring Boot:简化单体应用开发,提供自动配置和快速启动能力。
  • Spring Cloud:基于 Spring Boot,扩展为分布式系统工具链,依赖 Spring Boot 的约定大于配置原则。

3. 列举 Spring Cloud 中一些重要的组件及其功能

组件

功能

Eureka

服务注册与发现(已逐步被 Nacos 替代)

Spring Cloud Gateway

API 网关,支持动态路由、过滤、限流

OpenFeign

声明式 HTTP 客户端,整合负载均衡与熔断

Spring Cloud Config

集中式配置管理,支持 Git、数据库等存储

Spring Cloud LoadBalancer

客户端负载均衡(替代 Ribbon)

Resilience4j

熔断、限流、重试(替代 Hystrix)

Nacos

服务发现、动态配置管理(Spring Cloud Alibaba 组件)

Sentinel

流量控制、熔断降级(Spring Cloud Alibaba 组件)

Sleuth + Zipkin

分布式链路追踪


4. Eureka 的服务注册与发现机制是如何工作的?

  • 服务注册:服务启动时向 Eureka Server 发送注册请求(包含 IP、端口、健康状态)。
  • 心跳续约:客户端每 30 秒发送心跳,若 90 秒未收到心跳,Server 将其标记为下线。
  • 服务发现:消费者从 Eureka Server 拉取服务列表,通过客户端缓存实现本地负载均衡。

5. 什么是 Ribbon?它的主要作用是什么?

  • 旧方案:Ribbon 是客户端负载均衡器,支持轮询、随机等策略。
  • 现状:已被 Spring Cloud LoadBalancer 替代,新项目应优先使用后者。

6. Feign 是什么?如何使用 Feign 调用服务?

  • 定义:OpenFeign 是声明式 HTTP 客户端,通过接口注解简化服务调用。
  • 示例
@FeignClient(name = "user-service") 
public interface UserClient { 
  @GetMapping("/users/{id}") 
  User getUser(@PathVariable Long id);
}
  • 依赖:spring-cloud-starter-openfeign。

7. Spring Cloud 中的 Hystrix 是用来做什么的?

  • 旧方案:Hystrix 提供熔断、降级、资源隔离,防止雪崩效应。
  • 替代方案:官方推荐使用 Resilience4jSpring Cloud Circuit Breaker

8. 如何使用 Spring Cloud Gateway 配置路由?

  • YAML 配置
spring:
  cloud:
    gateway:
      routes:
        - id: user_route
          uri: lb://user-service
          predicates:
            - Path=/api/users/**
  • 动态路由:结合注册中心(如 Nacos)实现服务发现。

9. Zuul 和 Spring Cloud Gateway 有什么区别?

对比项

Zuul 1.x

Spring Cloud Gateway

架构

阻塞式(Servlet)

非阻塞式(WebFlux)

性能

低并发性能

高并发,支持响应式编程

官方支持

已停止维护

官方推荐

功能扩展

过滤器机制

支持自定义全局/局部过滤器、断言


10. Spring Cloud Config 的工作原理是什么?

  • 服务端:集中存储配置文件(Git/SVN/本地),通过 HTTP 接口暴露配置。
  • 客户端:启动时从 Config Server 拉取配置,支持 @RefreshScope 动态刷新(需调用 /actuator/refresh)。

11. 什么是服务熔断?Hystrix 如何实现熔断功能?

  • 熔断:当服务失败率超过阈值时,暂时阻断请求,避免级联故障。
  • Hystrix 实现:通过 @HystrixCommand 定义降级方法,监控请求失败率触发熔断。
  • 替代方案:使用 Resilience4j 的 @CircuitBreaker 注解。

12. Spring Cloud 中的服务治理有哪些策略?

  • 服务发现:Eureka、Nacos、Consul。
  • 负载均衡:Spring Cloud LoadBalancer、Ribbon(已弃用)。
  • 熔断限流:Resilience4j、Sentinel。
  • 配置管理:Spring Cloud Config、Nacos Config。
  • API 网关:Spring Cloud Gateway、Zuul(旧)。

13. 如何在 Spring Cloud 中实现微服务之间的安全调用?

  • OAuth2:使用 Spring Security OAuth2 实现服务间认证。
  • JWT:传递令牌验证权限。
  • HTTPS:启用 SSL/TLS 加密通信。

14. Nacos 和 Consul 有什么异同?

对比项

Nacos

Consul

服务发现

支持

支持

配置管理

内置

需单独启用

健康检查

主动探测 + 客户端心跳

主动探测

生态系统

Spring Cloud Alibaba 集成

HashiCorp 生态


15. 微服务启动失败如何解决?

  • 检查依赖:确认注册中心(如 Nacos)是否可用。
  • 配置验证:检查 bootstrap.yml 和配置中心数据。
  • 日志分析:通过 logging.level.root=DEBUG 输出详细日志。
  • 健康检查:确保 /actuator/health 返回 UP 状态。

16. 如何监控微服务?工具推荐

  • Spring Boot Actuator:暴露健康、指标、日志等端点。
  • Prometheus + Grafana:采集和可视化监控数据。
  • Sleuth + Zipkin:链路追踪。
  • ELK Stack:日志聚合分析。

17. 什么是 Spring Cloud Stream?它的主要目的是什么?

  • 定义:用于构建消息驱动的微服务,抽象消息中间件(如 Kafka、RabbitMQ)。
  • 核心概念:Binder(中间件适配)、Channel(输入/输出通道)。

18. 如何处理服务的版本管理?

  • 元数据路由:通过 Nacos 元数据标记服务版本,结合网关路由到指定版本。
  • 请求头过滤:在 Spring Cloud Gateway 中根据 Header 路由。

19. 如何实现动态配置管理?

  • Nacos Config:通过 @NacosValue 注解动态获取配置。
  • Spring Cloud Config:使用 @RefreshScope 注解刷新配置。

20. 如何做服务的健康检查?

  • 端点暴露:启用 /actuator/health。
  • 注册中心集成:Eureka/Nacos 定期调用健康端点,自动剔除异常实例。

21. 什么是 Spring Cloud Alibaba?

  • 定位:Spring Cloud 官方子项目,集成阿里云组件。
  • 核心组件:Nacos(服务发现/配置)、Sentinel(限流)、Seata(分布式事务)。

22. 如何实现限流?

  • Sentinel:通过 QPS/线程数规则控制流量。
  • Resilience4j:使用 RateLimiter 限制请求速率。

23. 负载均衡策略有哪些?

  • 默认策略:轮询(Round Robin)、随机(Random)。
  • 自定义策略:实现 ReactorLoadBalancer 接口,配置 @LoadBalancerClient。

24. Nacos 服务发现机制

  • 服务注册:客户端启动时向 Nacos Server 注册实例。
  • 健康检查:客户端定期发送心跳,Server 主动探测异常实例。

25. Dubbo 与 Spring Cloud 的区别

对比项

Dubbo

Spring Cloud

通信协议

RPC(如 Dubbo 协议)

RESTful HTTP/消息队列

服务治理

需整合其他组件

全家桶式解决方案

生态系统

主要面向 Java

支持多语言(通过 Sidecar)


26. 如何实现跨服务事务?

  • Seata:提供 AT(自动补偿)模式,通过全局事务 ID 协调分支事务。

27. OpenFeign 替代 Feign

  • 依赖变更:使用 spring-cloud-starter-openfeign。
  • 功能增强:原生支持负载均衡、熔断与 Spring MVC 注解。

28. 服务网格与 Spring Cloud

  • 服务网格:如 Istio,负责服务间通信、监控、安全(基础设施层)。
  • Spring Cloud:关注应用层逻辑(如业务代码集成)。

29. API 网关的认证与授权

  • OAuth2:集成 Spring Security OAuth2 资源服务器。
  • JWT 验证:在网关过滤器中解析 Token 并鉴权。

30. 如何实现可观察性(Observability)?

  • 指标(Metrics):Micrometer + Prometheus,监控 QPS、延迟、错误率。
  • 日志(Logging):ELK 统一收集。
  • 追踪(Tracing):Sleuth + Zipkin,分析请求链路。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3700.html

分享给朋友:

“爆了爆了,Spring Cloud面试题(spring cloud面试知识点总结)” 的相关文章

培训机构财务及缴费管理系统

学校收费软件是专门为学校财务量身打造的用于灵活性收取学生费用,智能化管理学生缴欠费信息的一款智能系统。1.灵活性全面的学生档案(学籍)信息化管理要计费,一定要有学生信息。所以就算是财务的收费软件,关于学生的档案资料(学籍)管理,同样是计费系统软件不可缺少的部分。档案资料属性,全面、灵活性、能自定义。...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化工具链以及各种支持类库结合使用时,vu...

Gitlab概览

Gitlab是开源的基于Git的仓库管理系统,也可以管理软件开发的整个生命周期,是项目管理和代码托管平台,支撑着整个DevOps的生命周期。Gitlab很容易选为GitHub,作为公司私有库管理的工具。我们可以用Gitlab Workflow来协同整个团队的软件开发管理过程。软件开发阶段Gitlab...

10分钟搞定gitlab-ci自动化部署

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布过程,如果每次都手动操作这一步骤就会浪费时间,效率低下。所以就有了持续集成。准备事项请提前安装以下软...

Python 幕后:Python导入import的工作原理

更多互联网精彩资讯、工作效率提升关注【飞鱼在浪屿】(日更新)Python 最容易被误解的方面其中之一是import。Python 导入系统不仅看起来很复杂。因此,即使文档非常好,它也不能让您全面了解正在发生的事情。唯一方法是研究 Python 执行 import 语句时幕后发生的事情。注意:在这篇文...

html5+css3做的响应式企业网站前端源码

大家好,今天给大家介绍一款,html5+css3做的响应式企业网站前端源码 (图1)。送给大家哦,获取方式在本文末尾。首页banner幻灯片切换特效(图2)首页布局简约合理(图3)关于我们页面(图4)商品列表(图5)商品详情(图6)服务介绍(图7)新闻列表(图8)联系我们(图9)源码完整,需要的朋友...