Java面试第十一山!《SpringCloud框架》

大家好,我是陈一。如果文章对你有帮助,请留下一个宝贵的三连哦~ 万分感谢!

目录

一、Spring Cloud 是什么​

二、Spring Cloud 核心组件​

1. 服务发现 - Eureka​

2. ​负载均衡 - Ribbon​

3. 断路器 - Hystrix​

​​4. 网关 - Zuul​

三、Spring Cloud 应用场景​

四、面试真题

1. SpringCloud 和 Dubbo有那些区别?

2. SpringBoot 和 SpringCloud,请谈谈你对他们的理解

3. Spring Cloud Config是如何实现配置中心的?

4. 双十一期间,订单服务调用库存服务出现超时怎么解决

五、总结


一、Spring Cloud 是什么

Spring Cloud 并不是一个单独的框架,而是一系列框架的集合。它基于 Spring Boot 构建,提供了构建分布式系统的各种工具和组件,帮助开发者快速搭建可靠、可扩展的分布式系统。就好比你要搭建一个大型游乐场,Spring Cloud 就像是一套完整的搭建工具包,里面有建造过山车轨道的组件(服务发现)、管理游客流量的组件(负载均衡)等等,让你能更轻松地把游乐场搭建起来。​

二、Spring Cloud 核心组件

组件作用常用配置项替代方案
Eureka服务注册中心心跳间隔(30s)、失效时间(90s)Nacos
Ribbon负载均衡器轮询/随机/响应时间权重LoadBalancer
OpenFeign声明式HTTP客户端超时时间、重试次数RestTemplate
Hystrix服务熔断熔断阈值(20次)、恢复时间(5s)Sentinel
GatewayAPI网关路由规则、过滤器链Zuul

1. 服务发现 - Eureka​

作用

Eureka 就像是游乐场里的游客信息中心。在分布式系统中,各个服务(可以想象成游乐场里的不同游乐设施)会向 Eureka 注册自己的信息,包括服务地址、端口等。当其他服务需要调用某个服务时,就可以到 Eureka 这里来查找服务的位置。​

工作原理:​

服务提供者启动后,会定期向 Eureka Server 发送心跳,告诉 Eureka 自己还 “活着”。​

服务消费者在调用服务前,先从 Eureka Server 获取服务列表,然后根据一定的规则选择一个服务实例进行调用。​

示例图:

2. ​负载均衡 - Ribbon​

作用:Ribbon 如同游乐场入口处的排队引导员。当有多个服务实例提供相同的服务时(比如有多个相同的旋转木马设施),Ribbon 会负责把客户端的请求均衡地分配到这些实例上,避免某个实例压力过大,而其他实例却闲置。​

工作方式:​它会和 Eureka 配合使用,从 Eureka 获取到服务实例列表后,在客户端根据不同的负载均衡算法(如随机、轮询等)来选择一个实例进行请求发送。​

负载均衡算法对比表格:​​

算法名称​

描述​

应用场景​

轮询​

依次将请求分配到每个实例​

实例性能相近时​

随机​

随机选择一个实例​

对负载均衡精度要求不高时​

加权轮询​

根据实例权重分配请求,权重高的分配更多请求​

实例性能有差异时​

3. 断路器 - Hystrix​

作用:Hystrix 像是游乐场里的安全闸。在分布式系统中,服务之间的调用可能会因为各种原因失败(比如某个游乐设施临时故障),如果大量的请求因为调用失败而一直等待,会占用大量资源,甚至导致整个系统崩溃。Hystrix 通过熔断机制,当某个服务调用失败率达到一定阈值时,就会自动熔断,不再继续尝试调用,而是直接返回一个预设的结果,避免故障扩散。​

工作流程:​

  • 当请求调用服务时,Hystrix 会监控调用的成功和失败次数。​
  • 如果失败率超过设定的阈值,断路器就会打开,后续一段时间内的请求不再实际调用服务,而是直接返回 fallback(备用)结果。​
  • 经过一段时间后,断路器会进入半开状态,尝试放行少量请求,如果这些请求成功,断路器就会关闭,恢复正常调用;如果失败,断路器再次打开。​

​​4. 网关 - Zuul​

作用:Zuul 如同游乐场的大门。它是整个分布式系统对外的统一入口,所有外部请求都会先经过 Zuul。Zuul 可以对请求进行路由、过滤等操作,比如检查游客(请求)是否有门票(权限),决定将游客引导到哪个游乐设施(服务)。​

功能:

  • 路由功能:根据请求的 URL 等信息,将请求转发到对应的服务实例。​
  • 过滤功能:可以在请求进入系统前或响应返回前,对请求和响应进行处理,如身份验证、日志记录等。​

三、Spring Cloud 应用场景

1. 电商系统​

  • 服务拆分:电商系统包含商品管理、订单管理、用户管理等多个功能模块。可以将每个模块拆分成独立的服务,使用 Spring Cloud 进行管理。例如,商品服务负责管理商品信息的增删改查,订单服务负责处理订单相关业务。通过服务发现和负载均衡,确保各个服务高效运行。​
  • 高并发处理:在促销活动期间,大量用户同时访问系统,可能会导致某些服务压力过大。Hystrix 断路器可以防止因某个服务故障而引发整个系统的雪崩效应。同时,Ribbon 负载均衡可以将用户请求均匀分配到各个服务实例上,提高系统的并发处理能力。​
  • 安全与权限管理:Zuul 网关可以对所有进入系统的请求进行身份验证和权限检查,确保只有合法用户能够访问相应的服务,保障系统的安全性。​

2. 在线教育平台​

  • 课程服务:课程服务包含课程视频播放、课程资料下载等功能。通过 Spring Cloud 的服务发现和负载均衡,将课程服务的请求分配到多个实例上,保证大量用户同时观看课程时的流畅性。​
  • 用户互动:如直播互动、评论等功能,可能涉及多个服务之间的调用。Hystrix 断路器可以在某个服务出现故障时,保障其他服务的正常运行,提升用户体验。​

四、面试真题

1. SpringCloud 和 Dubbo有那些区别?

Spring Cloud 抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式

Dubbo采用的是RPC调用,SpringCloud采用http的REST方式,

在一定程度上牺牲了调用上的性能,但是降低了代码的强依赖性,是微服务架构更加灵活

2. SpringBoot 和 SpringCloud,请谈谈你对他们的理解

SpringBoot可以离开SpringCloud独立使用,开发项目,但SpringCloud离不开SpringBoot,属于依赖关系;

Spring Cloud之所以离不开Spring Boot,是因为Spring Boot为构建微服务提供了必要的快速开发基础、统一的依赖管理与启动机制、强大的自动配置能力、嵌入式服务支持以及一致的开发体验。这些特性使得Spring Cloud能够专注于提供微服务架构层面的高级抽象和工具集,而无需重新实现Spring Boot已经解决的基础问题,二者紧密结合,共同构成了构建现代微服务架构的强大工具链。

SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架;

3. Spring Cloud Config是如何实现配置中心的?

Spring Cloud Config Server作为配置中心,从Git仓库或其他配置存储中读取配置信息,客户端通过Config Client组件从Config Server拉取配置,并自动更新。

4. 双十一期间,订单服务调用库存服务出现超时怎么解决

  • 设置Hystrix熔断规则:20次调用失败后熔断5秒

  • 降级方案:返回默认库存信息+异步补单

  • 配合仪表盘监控熔断状态

五、总结

Spring Cloud 框架通过提供一系列强大的组件,帮助开发者轻松构建分布式系统,解决了分布式系统中的服务发现、负载均衡、容错处理、网关等关键问题。在实际项目中,根据不同的业务场景合理运用 Spring Cloud 的各个组件,能够显著提升系统的性能、可靠性和可扩展性。无论是面试还是在实际开发中,深入理解 Spring Cloud 都是非常有价值的。

翻过这座山,他们就会听到你的故事!欢迎在评论区交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transaction rolled back because it has been marked as rollback-only问题解决

transaction rolled back because it has been marked as rollback-only 简略总结> 发生场景:try-catch多业务场景 发生原因:业务嵌套,事务管理混乱,外层业务与内层业务抛出异常节点与回滚节点不一致。 解决方式:修…

sql server数据迁移,springboot搭建开发环境遇到的问题及解决方案

最近搭建springboot项目开发环境,数据库连的是sql server,遇到许多问题在此记录一下。 1、sql server安装教程 参考:https://www.bilibili.com/opus/944736210624970769 2、sql server导出、导入数据库 参考:https://blog.csd…

【数学建模】灰色关联分析模型详解与应用

灰色关联分析模型详解与应用 文章目录 灰色关联分析模型详解与应用引言灰色系统理论简介灰色关联分析基本原理灰色关联分析计算步骤1. 确定分析序列2. 数据无量纲化处理3. 计算关联系数4. 计算关联度 灰色关联分析应用实例实例:某企业生产效率影响因素分析 灰色关联…

Spring配置文件-Bean实例化三种方式

无参构造方法实例化 工厂静态方法实例化 工厂实例方法实例化

SSL 和 TLS 认证

SSL(Secure Sockets Layer,安全套接层)认证是一种用于加密网络通信和验证服务器身份的安全技术。它是TLS(Transport Layer Security,传输层安全协议)的前身,虽然现在大多数应用使用的是TLS&…

SpringBoot学习(三)SpringBoot整合JSP以及Themeleaf

目录 Spring Boot 整合 JSP1. 配置依赖2. 创建WEB目录结构,配置JSP解析路径3. 创建Controller类4. 修改application.yml5. 添加jstl标签库的依赖6. JSP页面7. 创建启动类 Spring Boot 整合 Thymeleaf1. 添加Thymeleaf依赖2. Controller3. 修改application.yml配置&a…

普通鼠标的500连击的工具来了!!!

今天介绍的这款软件叫:鼠标录制器,是一款大小只有54K的鼠标连点器,软件是绿色单文件版。抢票,拍牌,摇号都能用上。文末有分享链接 在使用先我们先设置快捷键,这样我们在录制和停止录制的时候会更方便。 软件…

【MySQL】基本查询(表的增删查改+聚合函数)

目录 一、Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 二、Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 比较运算符2.2.2 逻辑运算符2.2.3 案…

JAVA中关于图形化界面的学习(GUI)动作监听,鼠标监听,键盘监听

动作监听: 先创建一个图形化界面,接着创建一个按钮对象,设置按钮的大小。 添加一个addActionListener(); addActionListener() 方法定义在 java.awt.event.ActionListener 接口相关的上下文中,许多支持用户交互产生…

MySQL 基础学习文档

一、MySQL 概述 1.1 核心概念 数据库 (DB):存储数据的结构化仓库数据库管理系统 (DBMS):操作数据库的软件(如 MySQL、Oracle)SQL:操作关系型数据库的标准语言 1.2 安装与配置 下载地址:MySQL Installer…

火山引擎(豆包大模型)(抖音平台)之火山方舟的Prompt的使用测试

前言 在大模型的使用过程当中,Prompt的使用非常的关键。原来,我对Prompt的理解不深,觉得Prompt的产生并不是很有必要。但是,自从使用了火山方舟中的“Prompt优解”之后,感受加深了,觉得Prompt是我们和大模型…

SpringBoot入门-(2) Spring IOC机制【附实例代码】

SpringBoot入门-(2) Spring IOC机制 Spring Spring是一个当前主流的轻量级的框架,发展到形状已经不仅仅是一个框架,而是形成以Spring为基础的生态圈,如(Spring Boot,Spring Cloud,Spring Security等) Spring 两大核心技术 控制反转(IoC)面…

备赛蓝桥杯之第十六届模拟赛3期职业院校组

提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…

【AI大模型】提示词(Prompt)工程完全指南:从理论到产业级实践

【AI大模型】提示词(Prompt)工程完全指南:从理论到产业级实践 一、Prompt 提示词介绍:AI的“密码本” 1. Prompt的底层定义与价值 本质:Prompt是人与AI模型的“协议语言”,通过文本指令激活模型的特定推理…

Excel 小黑第12套

对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用(查找目标,查找范围(F4 绝对引用),返回值的所在列数,精确查找或模糊查找)双击填充柄就会显示所有值 这个逗号要中文的不能英…

基于Spring Boot的冷链物流系统的设计与实现的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

python环境集成整理

接口测试过程中,可能会切换测试环境,通过配置相关信息修改 设计思路: 1、 准备各个环境配置文件信息,包括http、common 、redis、db 2、创建不同环境配置信息 测试环境:env_test.yml、 预生产环境:env_prepro.yml、生产…

动平衡仿真程序设计

以下是针对动平衡振动信号分析的模块扩展方案&#xff0c;基于原有信号发生器架构进行增强&#xff1a; 一、动平衡专用信号生成器 // UnbalanceVibrationGenerator.h #pragma once #include "SignalGenerator.h" #include <vector>class UnbalanceVibration…

牛客周赛85 题解 Java ABCDEFG

A小紫的均势博弈 判断输入的 n 是奇数还是偶数 import java.io.*; import java.math.*; import java.util.*;public class Main {static IoScanner sc new IoScanner();static final int mod(int) (1e97);static void solve() throws IOException {int nsc.nextInt();if(n%2…

python——UI自动化(1) selenium之介绍和环境配置

一、selenium介绍 selenium是一个第三方库&#xff0c;python有很多库&#xff1b; 1、什么是ui自动化? 通过模拟手工操作用户ui页面的方式&#xff0c;用代码去实现自动化操作和验证的行为。 2、ui自动化的优点&#xff1f; &#xff08;1&#xff09;解决重复性的功能测…