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

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

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面试知识点总结)” 的相关文章

vue中如何在自定义组件上使用v-model和.sync

自定义事件tips推荐始终使用 kebab-case 的事件名。(v-on会将事件名自动转换为小写,避免匹配不到)changeData ×change-data √自定义组件的v-model用法:父组件定义数据源(不需要定义修改数据的方法),在子组件标签上通过v-model="data...

雅马哈TMAX 560 TECH MAX 外媒深度测评

应雅马哈(Yamaha)的邀请,在葡萄牙埃斯托里尔对全新的Yamaha TMAX 560 Tech Max踏板车进行了测试,在这里TMAX 560 Tech Max售价为11649英镑。雅马哈TMAX长期以来一直站在踏板车的顶端,就声誉和知名度而言,它是当之无愧的大踏板界NO.1。2020 TMAX...

关于Vue页面跳转传参,参数不同, 但页面只获取参数一次的问题

#头条创作挑战赛#1.问题描述问题描述: element 展示表格(页面A),点击表格的每一行的查看详情按钮,可以携带此行的信息参数跳转到另一个页面(页面B),但是从A页面到B页面,只有第一次跳转的时候B页面可以获取到A页面的参数,返回再次A->B ,B页面无法获取到参数。2.解决办法:方法一...

一套代码,多端运行——使用Vue3开发兼容多平台的小程序

介绍Vue3发布已经有一段时间了,从目前来看,其生态还算可以,也已经有了各种组件库给予了支持,但是不管是Vue3还是Vue2都无法直接用来开发小程序,因此国内一些技术团队针对Vue开发了一些多端兼容运行的开发框架,今天来体验一下使用Taro来体验一下使用Vue3开发多平台运行的小程序,以便于兼容各大...

电工也体会到英文也博大精深了意思一样字母不相同而且还经常遇到

在学习电工电路中,往往和电路图有密切关系,之前老师常说要学会看图,认识电气符号。我觉得这还是不够的。因为在一些电路中存在很多英文字母,它们并不代表电器元件。而是一种电路名称或命名。以下是我在工作中看到过字母常见的意思一样。 如:UVW=RST=ABC=T1T2T3=L1L2L3三相黄绿红 .交流火线...

跨域strict-origin-when-cross-origin vue前端解决

今天在对接一个hls协议的视频直播流的时候,提示跨域问题,导致一直播放不了,一直在提示 strict-origin-when-cross-origin 跨域问题。首先上代码 import "video.js/dist/video-js.css" import videojs f...