当前位置: 首页 > news >正文

spring Could 高频面试题

一、基础概念

  1. Spring Cloud 的核心组件有哪些?

    • 答案:Eureka/Nacos(服务注册发现)、Ribbon/LoadBalancer(负载均衡)、Feign/OpenFeign(声明式HTTP客户端)、Hystrix/Sentinel(熔断限流)、Zuul/Gateway(API网关)、Config/Nacos(配置中心)、Sleuth/Zipkin(分布式链路追踪)。
  2. Spring Cloud 与 Spring Boot 的关系?

    • 答案:Spring Boot 提供快速开发单微服务的能力;Spring Cloud 基于 Boot 构建分布式系统的工具箱,整合第三方组件(如Netflix OSS)实现微服务治理。

二、服务注册与发现

  1. Eureka 和 Nacos 的区别?

    • 答案
      特性EurekaNacos
      一致性协议AP(最终一致性)AP + CP(可切换)
      配置管理✔️(集成配置中心)
      健康检查客户端心跳主动探测 + 心跳
      权重/元数据✔️
  2. Eureka 如何防止服务列表过期?

    • 答案
      • 客户端每 30s 发送心跳到 Eureka Server。
      • Server 若 90s 未收到心跳,则将实例标记为过期并从注册表移除。
      • 客户端每 30s 从 Server 全量拉取服务列表(可配置增量同步)。

三、服务调用与负载均衡

  1. Ribbon 的负载均衡策略有哪些?

    • 答案
      • RoundRobinRule(轮询)
      • RandomRule(随机)
      • WeightedResponseTimeRule(响应时间加权)
      • ZoneAvoidanceRule(区域优先)
  2. Feign 的工作原理?

    • 答案
      1. 通过 @EnableFeignClients 扫描接口;
      2. 为接口生成动态代理
      3. 调用时拼接 HTTP 请求,由 Ribbon 负载均衡选择实例;
      4. 默认使用 JDK 的 HttpURLConnection 发送请求(可替换为 OKHttp)。

四、熔断与限流

  1. Hystrix 熔断器的状态转换流程?

    • 答案
      • 关闭(Closed):请求正常通过。
      • 打开(Open):错误率超阈值(默认50%),熔断开启,请求直接失败。
      • 半开(Half-Open):熔断一段时间后,尝试放行部分请求,若成功则关闭熔断。
  2. Sentinel 对比 Hystrix 的优势?

    • 答案
      • 实时监控:集成 Dashboard 实时显示 QPS/响应时间;
      • 规则持久化:支持推送到 Nacos/Redis;
      • 精细化控制:支持基于调用来源、热点参数的流控;
      • 低开销:基于滑动窗口的统计,性能损耗更低。

五、API 网关

  1. Spring Cloud Gateway 的过滤器类型?

    • 答案
      • Pre 过滤器:在路由前执行(如限流、日志);
      • Post 过滤器:在响应返回前执行(如修改响应头);
      • 全局过滤器:作用于所有路由(如认证、请求记录)。
  2. Gateway 如何实现动态路由?

    • 答案
      1. 集成 NacosRedis,监听路由配置变更;
      2. 实现 RouteDefinitionRepository 接口,从数据库读取路由规则;
      3. 调用 RouteLocatorBuilder 动态刷新路由。

六、配置中心

  1. Spring Cloud Config 的配置刷新原理?

    • 答案
      • 客户端通过 @RefreshScope 标记需要刷新的 Bean;
      • 调用 /actuator/refresh 端点 → 触发 RefreshEvent 事件;
      • 销毁旧 Bean 并重新初始化(依赖配置的 Bean会被重建)。
  2. Nacos 配置中心如何保证高可用?

    • 答案
      • 集群部署:至少 3 节点(推荐 Raft 协议);
      • 数据持久化:配置存储到 MySQL(避免单点故障);
      • 客户端缓存:本地缓存配置,即使 Server 宕机仍可运行。

七、分布式链路追踪

  1. Sleuth 的 TraceId 传递原理?
    • 答案
      • 通过 HTTP HeaderX-B3-TraceId)传递;
      • 集成 Feign/RestTemplate 自动注入 Header;
      • 支持异步线程(LazyTraceExecutor 包装线程池)。

八、场景设计题

  1. 如何设计一个服务雪崩防护方案?
    • 答案
      • 前端:请求限流(Nginx 层);
      • 网关:Sentinel 全局 QPS 限流 + 熔断规则;
      • 服务间:Feign 整合 Hystrix(设置超时、线程隔离);
      • 数据库:连接池控制(如 HikariCP 最大连接数);
      • 降级策略:返回兜底数据(如缓存中的旧数据)。

附:高频追问问题

  • 为什么需要 API 网关?与 Nginx 的区别?
  • Spring Cloud Alibaba 与 Netflix 组件的替代关系?
  • 如何保证微服务之间调用的幂等性?
  • 分布式事务在 Spring Cloud 中的解决方案(Seata)?
http://www.dtcms.com/a/299953.html

相关文章:

  • 【科普】java和html和lvgl生成页面有什么区别,还有什么方法可以生成?
  • 数据库HB OB mysql ck startrocks, ES存储特点,以及应用场景
  • 通过服务启动应用的流程(类似SystemUi启动流程)
  • Linux笔记5——常用命令-4
  • 深入浅出学习 KNN 算法:从原理到数字识别实践
  • 【Linux庖丁解牛】— 日志进程池 !
  • 大模型系列——Dify:知识库与外部知识库
  • SSH连接失败排查与解决教程: Connection refused
  • PromQL完全指南:掌握Prometheus核心查询语言
  • Ubuntu 22.04 配置 Zsh + Oh My Zsh + Powerlevel10k
  • 二十八、【Linux系统域名解析】DNS安装、子域授权、缓存DNS、分离解析、多域名解析
  • C++___快速入门(上)
  • 人工智能之数学基础:概率论之韦恩图的应用
  • WebAPIs里的filter
  • Android 编码规范全指南
  • 驱动-设备树-基本语法
  • Python爬虫实战:诗词名句网《三国演义》全集
  • 服务器:数字世界的隐形引擎
  • 《基于雅可比矢量近似的EIT触觉传感灵敏度非均匀校正》论文解读
  • ESP32实战:5分钟实现PC远程控制LED灯
  • C++类和对象(三)
  • IC测试之pogo pin学习与总结-20250726
  • 进制定义与转换详解
  • 1.Java发展简史与设计哲学
  • 最优估计准则与方法(5)加权最小二乘估计(WLS)_学习笔记
  • 360° 外壁镜头:小物体环外侧检测的创新突破
  • Python day25
  • MySQL中的 redolog
  • 连锁店铺巡查二维码的应用
  • 单片机CPU内部的定时器——滴答定时器