springCloud(day10-面试篇)

目录

[1SpringCloud 有哪些常用组件?分别是什么作用?](#1SpringCloud 有哪些常用组件?分别是什么作用?)

[2 在nacos中,服务注册发现的基本流程是怎样的?](#2 在nacos中,服务注册发现的基本流程是怎样的?)

[3Eureka 和 Nacos 有哪些区别?](#3Eureka 和 Nacos 有哪些区别?)

[4Nacos 的分级存储模型是什么意思?](#4Nacos 的分级存储模型是什么意思?)

[5Ribbon 和 SpringCloudLoadBalancer 有什么差异](#5Ribbon 和 SpringCloudLoadBalancer 有什么差异)

[6 什么是服务雪崩,常见的解决方案有哪些?](#6 什么是服务雪崩,常见的解决方案有哪些?)

[7Hystix 和 Sentinel 有什么区别和联系?](#7Hystix 和 Sentinel 有什么区别和联系?)

[8 限流的常见算法有哪些?](#8 限流的常见算法有哪些?)

[9 什么是 CAP 理论和 BASE 思想?](#9 什么是 CAP 理论和 BASE 思想?)

[10 项目中碰到过分布式事务问题吗?怎么解决的?](#10 项目中碰到过分布式事务问题吗?怎么解决的?)

[11AT 模式如何解决脏读和脏写问题的?](#11AT 模式如何解决脏读和脏写问题的?)

[12TCC 模式与 AT 模式对比,有哪些优缺点](#12TCC 模式与 AT 模式对比,有哪些优缺点)

[13OpenFeign 是如何实现负载均衡的?](#13OpenFeign 是如何实现负载均衡的?)

[14RabbitMQ 是如何确保消息的可靠性的?](#14RabbitMQ 是如何确保消息的可靠性的?)

[15RabbitMQ 是如何解决消息堆积问题的?](#15RabbitMQ 是如何解决消息堆积问题的?)

末尾页


1SpringCloud 有哪些常用组件?分别是什么作用?

  • 1Nacos/Eureka:服务注册与发现,配置中心(config)
  • 2Ribbon / LoadBalancer:客户端负载均衡(旧ribbon+feign)
  • 3OpenFeign:声明式服务调用
  • 4Gateway(zuul):API 网关,路由转发、鉴权
  • 5Sentinel/Hystrix:熔断器,请求限流、熔断、降级,防止雪崩
  • 6Seata:分布式事务
  • 7elasticsearch:快速存储、搜索和分析大量数据

springcloud不是一个技术,而是一个全家桶,是一套解决分布式系统麻烦的解决方案

我们只需要把微服务当成一个大公司,理清里面的部分以及新老交替即可

1Gateway:API网关,负责路由转发和鉴权,以前使用的是zuul,不过它是阻塞式的,效率低

2nacos:注册和配置中心,负责服务注册发现和配置,以前使用的是eureka

3openfeign

2 在nacos中,服务注册发现的基本流程是怎样的?

  • 服务启动时,向注册中心注册自己(IP、端口、服务名)
  • 注册中心保存服务列表
  • 调用方从注册中心拉取服务列表并缓存
  • 调用方通过负载均衡选择一个实例发起调用
  • 服务通过心跳保持健康,故障自动剔除

3Eureka 和 Nacos 有哪些区别?

  • Eureka:AP 架构,只做服务发现,配置中心需要配合 Spring Cloud Config
  • Nacos :AP/CP 可切换,注册中心 + 配置中心二合一
  • Nacos 支持动态配置刷新,Eureka 不支持
  • Nacos 支持权重、动态上下线、灰度
  • Nacos 心跳机制更轻量,集群更稳定

4Nacos 的分级存储模型是什么意思?

全局级别,集群级别,服务级别和实例级别

5Ribbon 和 SpringCloudLoadBalancer 有什么差异

  • Ribbon 是 Netflix 的,已经停止维护
  • Spring Cloud LoadBalancer 是官方替代品,轻量、现代。
  • LoadBalancer 支持响应式编程(WebFlux),Ribbon 不支持。
  • 功能差不多,都是客户端负载均衡,现在默认用 LoadBalancer。

6 什么是服务雪崩,常见的解决方案有哪些?

服务雪崩:一个服务挂了 → 上游调用阻塞 → 线程耗尽 → 越来越多服务不可用 → 整个系统崩溃。

解决方案:

  • 熔断:故障时切断调用
  • 限流:控制请求量
  • 降级:返回兜底结果
  • 超时控制、线程隔离

7Hystix 和 Sentinel 有什么区别和联系?

  • 两者都是做熔断、限流、降级。
  • Hystrix 停更,基于线程池隔离,较重。
  • Sentinel 是阿里开源,还在维护,更轻量。
  • Sentinel 支持热点限流、系统保护、实时监控,功能更强。

8 限流的常见算法有哪些?

  • 固定窗口计数器:简单,但有临界突刺问题。
  • 滑动窗口:更平滑,解决突刺问题。
  • 漏桶算法:匀速处理请求,削峰填谷。
  • 令牌桶算法:允许突发流量,Sentinel、Nginx 常用。

9 什么是 CAP 理论和 BASE 思想?

CAP:分布式系统最多同时满足两个:

  • C 一致性、A 可用性、P 分区容错性分布式必须保证 P,所以只能选 CP 或 AP。

BASE:对 CAP 的妥协,追求最终一致性。

  • 基本可用、软状态、最终一致。

10 项目中碰到过分布式事务问题吗?怎么解决的?

项目里用 Seata AT 模式

  • 一阶段执行本地事务,记录 undo 日志,提交本地事务。
  • 二阶段根据全局事务结果,统一提交或自动回滚。优点:无侵入、开发简单,适合大多数业务场景

11AT 模式如何解决脏读和脏写问题的?

  • 更新数据时,Seata 会对数据行加全局锁
  • 其他事务想要修改必须等待锁释放。
  • 结合数据库本地行锁,保证并发安全。
  • 避免了一阶段提交后、回滚前的数据被其他事务篡改。

12TCC 模式与 AT 模式对比,有哪些优缺点

AT 模式

  • 优点:无侵入、自动回滚、开发简单
  • 缺点:依赖数据库,不适合非数据库操作

TCC 模式

  • 优点:不依赖数据库,灵活,支持跨中间件
  • 缺点:开发量大,要写 Try/Confirm/Cancel,处理幂等、悬挂等问题

13OpenFeign 是如何实现负载均衡的?

  • OpenFeign 集成了 LoadBalancer。
  • 发起调用时,从注册中心获取服务实例列表。
  • 根据负载均衡策略(轮询、随机等)选择一个实例。
  • 自动构造 HTTP 请求,完成远程调用。

14RabbitMQ 是如何确保消息的可靠性的?

  • 生产者用 confirm 机制,确保消息发到交换机。
  • 队列、消息都做持久化,宕机不丢失。
  • 消费者使用手动 ACK,处理完再确认。
  • 配合死信队列处理失败消息。

15RabbitMQ 是如何解决消息堆积问题的?

  • 增加消费者数量,提高消费速度。
  • 提高消费者并发线程数。
  • 业务异步化、批量处理消息。
  • 清理无用消息,临时扩容队列。

末尾页

相关推荐
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
Moment1 天前
2026 年,AI 全栈时代到了,前端简历别再只写前端技术了 🫠🫠🫠
前端·后端·面试
白晨并不是很能熬夜1 天前
【PRC】第 2 篇:Netty 通信层 — NIO 模型 + 自定义协议 + 心跳
java·开发语言·后端·面试·rpc·php·nio
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 天前
《redis-cluster 集群部署完全手册(含扩容+缩容)》
数据库·redis·缓存
0xDevNull1 天前
Java项目中Redis热点Key自动检测方案详细教程
java·spring boot·redis
M ? A1 天前
Vue 的 scoped 样式穿透 React 不支持?用 VuReact 编译就行
前端·javascript·vue.js·react.js·面试·开源·vureact
极客沐森1 天前
如何取消大批量的超时订单,关于超时架构的探讨
面试·架构
豹哥学前端1 天前
10分钟彻底搞懂 window 对象、全局环境与 JS 引擎
前端·面试
spencer_tseng1 天前
redis.windows.conf 2026.04.27
windows·redis
白晨并不是很能熬夜1 天前
【RPC】第 1 篇:全景篇 — 一次 RPC 调用的完整旅程
java·网络·后端·网络协议·面试·rpc·java-zookeeper