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

SpringCloud面试笔记

核心组件概述

SpringCloud 5大核心组件包括:注册中心(Eureka/Nacos)服务调用(Feign)负载均衡(Ribbon)服务熔断(Hystrix/Sentinel)服务网关(Gateway)

随着SpringCloud Alibaba在国内的兴起,现在更多项目选择阿里巴巴生态:Nacos作为注册中心和配置中心、Ribbon负载均衡、Feign服务调用、Sentinel服务保护、Gateway网关。
组件之间的依赖

服务注册与发现

服务注册发现的核心概念:

  • 服务注册:服务启动时向注册中心注册自己的信息(IP、端口、服务名等)
  • 服务发现:客户端从注册中心获取服务列表,实现服务间的调用

以Nacos为例的实现流程:

  1. 服务提供者启动时向Nacos注册服务信息
  2. 服务消费者从Nacos拉取服务列表
  3. 消费者通过负载均衡选择具体的服务实例进行调用
  4. Nacos维护服务的健康状态,自动剔除不健康实例

nacos

Ribbon负载均衡

负载均衡策略详解:

  • RoundRobinRule:轮询策略,按顺序选择服务器
  • WeightedResponseTimeRule:权重策略,响应时间越短权重越高
  • RandomRule:随机选择可用服务器
  • BestAvailableRule:选择并发数最低的服务器
  • RetryRule:重试机制,在指定时间内重试选择服务器
  • AvailabilityFilteringRule:可用性过滤,先过滤故障实例再选择连接数小的
  • ZoneAvoidanceRule:区域感知策略,优先选择同区域的服务器

自定义负载均衡策略:

  1. 全局配置:创建类实现IRule接口,通过@Bean注解注册
  2. 局部配置:在配置文件中为特定服务指定负载均衡策略
# 局部配置示例
service-name:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

服务熔断与降级

熔断机制:
当服务调用失败率达到阈值时,熔断器开启,直接返回错误响应,避免级联故障。熔断器有三种状态:关闭、开启、半开。

降级机制:
当服务不可用时,执行预定义的降级逻辑,返回默认值或友好提示,保证系统基本可用。

Hystrix vs Sentinel:

  • Hystrix:Netflix开源,功能成熟但已停止更新
  • Sentinel:阿里开源,功能更强大,支持实时监控和规则配置

服务网关Gateway

Gateway的核心功能:

  • 路由转发:根据请求路径转发到对应的微服务
  • 过滤器:实现认证、限流、监控等横切关注点
  • 负载均衡:集成Ribbon实现客户端负载均衡

Gateway vs Zuul:

  • Gateway基于Spring 5.0和WebFlux,性能更好
  • 支持异步非阻塞编程模型
  • 提供更丰富的过滤器和断言功能

服务调用Feign

Feign的特点:

  • 声明式HTTP客户端,通过注解定义接口
  • 集成Ribbon实现负载均衡
  • 集成Hystrix实现熔断降级
  • 支持请求/响应压缩和日志记录

Feign vs RestTemplate:

  • Feign代码更简洁,易于维护
  • RestTemplate更灵活,适合复杂场景

配置中心

Nacos配置中心的优势:

  • 集中管理配置,支持动态更新
  • 支持多环境配置隔离
  • 提供配置版本管理和回滚功能
  • 支持配置监听和推送机制

服务监控

微服务监控的重要性:

  • 实时了解服务运行状态
  • 快速定位和解决问题
  • 优化服务性能

常用监控方案:

  • Spring Boot Actuator:提供健康检查、指标收集等功能
  • Micrometer:指标收集框架,支持多种监控系统
  • Prometheus + Grafana:指标收集和可视化展示
  • SkyWalking:分布式链路追踪系统

面试常见问题

Q: SpringCloud和Dubbo的区别?
A: SpringCloud是完整的微服务解决方案,基于HTTP通信;Dubbo主要解决RPC调用问题,基于TCP通信,性能更好但功能相对单一。

Q: 如何保证微服务的数据一致性?
A: 通过分布式事务解决方案,如Seata、TCC模式或最终一致性方案(消息队列+补偿机制)。

Q: 微服务拆分的原则是什么?
A: 按业务边界拆分,遵循高内聚低耦合原则,每个服务有独立的数据库和部署单元。

Q: 如何处理分布式系统的CAP问题?
A: 根据业务需求选择CP或AP,通常选择AP(可用性+分区容错),通过最终一致性保证数据一致性。

http://www.lryc.cn/news/591426.html

相关文章:

  • 【每日刷题】跳跃游戏
  • Apache DolphinScheduler介绍与部署
  • 分布式光伏发电系统中的“四可”指的是什么?
  • 解读PLM系统软件在制造企业研发管理中的应用
  • 18650锂电池点焊机:新能源制造的精密纽带
  • AR智能巡检:制造业零缺陷安装的“数字监工”
  • Git仓库核心概念与工作流程详解:从入门到精通
  • 【java面试day6】redis缓存-数据淘汰策略
  • 二刷 黑马点评 秒杀优化
  • 全面升级!WizTelemetry 可观测平台 2.0 深度解析:打造云原生时代的智能可观测平台
  • Netty-基础知识
  • 【前端如何利用 localStorage 存储 Token 及跨域问题解决方案】
  • 7.17 Java基础 | 集合框架(下)
  • 【unitrix】 6.5 基础整数类型特征(base_int.rs)
  • 对比分析:给数据找个 “参照物”,让孤立数字变 “决策依据”
  • 数据呈现进阶:漏斗图与雷达图的实战指南
  • SQLite的可视化界面软件的安装
  • H3CNE 综合实验二解析与实施指南
  • 医院各类不良事件上报,PHP+vscode+vue2+element+laravel8+mysql5.7不良事件管理系统源代码,成品源码,不良事件管理系统
  • ASP .NET Core 8实现实时Web功能
  • linux-SSH
  • Django由于数据库版本原因导致数据库迁移失败解决办法
  • 从C#6天学会Python:速通基础语法(第一天)
  • C#监听txt文档获取新数据
  • [IRF/Stack]华为/新华三交换机堆叠配置
  • 虚拟化测试工具Parasoft Virtualize如何为汽车企业提供仿真测试?
  • C语言模拟面向对象三大特性与C++实现对比
  • Python 网络爬虫 —— 提交信息到网页
  • Hyperledger Fabric:构建企业区块链网络的实践指南
  • AI赋能农业:基于YOLO11的苹果瑕疵检测系统实战分享