【2024面试刷题】一、Spring Cloud 面试题
1、什么是 Spring Cloud?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如 服务发现注册
、配置中心
、智能路由
、消息总线
、负载均衡
、断路器
、数据监控
等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
2、为什么要使用Spring Cloud?
由于单体结构的应用随着系统复杂度的增高,带来了如下问题
- 代码结构混乱
- 开发效率变低
- 排查解决问题成本高
3、Spring Cloud的优缺点?
4、 Spring Cloud和Spring Boot的区别?
- SpringBoot专注于快速方便的开发单个个体微服务。
- SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
- SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系
- SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
5、Spring Cloud 和dubbo区别?
- 服务调用方式
- dubbo是RPC
- SpringCloud采用Rest Api
- 注册中心
- dubbo 是nacos、zookeeper
- SpringCloud是eureka,也可以是nacos、zookeeper
- 服务网关
- dubbo本身没有实现,只能通过其他第三方技术整合,
- SpringCloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。
6、spring cloud断路器的作用是什么?
答:在分布式架构中,断路器模式的功能也相似。当服务单元出现故障(类似于电器短路)时,通过断路器故障监控(类似于熔断保险丝)将错误响应返回给调用器,而不是长时间等待。这样,由于调用故障服务,线程就不会被长期占用,也不会被释放,以避免故障在分布式系统中的传播。
7、spring cloud的核心组件有哪些?
答:(1)Eureka:发现服务注册;(2)Feign:拼接请求基于动态代理机制,根据注释和选择的机器 url 地址,发起请求;(3)Ribbon:实现负载均衡,从多台服务机器中选择一台;(4)Hystrix:提供线程池,不同的服务采用不同的线程池,实现不同服务调用的隔离,避免服务雪崩的问题;(5)Zuul:网关管理,由 Zuul 向相应服务转发网关请求。
8、spring 如何注册cloud服务?
答:第一,服务发布时,指定相应的服务名称,在注册中心注册服务(eureka zookeeper);二是增加注册中心@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign直接调用服务发现。
9、微服务优点是什么??
答:(1)每个服务都足够内聚,代码易于理解;(2)提高开发效率,一项服务只做一件事;(3)微服务可以由小团队单独开发;(4)微服务是松耦合的,是有功能意义的服务;(5)可以用不同的语言开发,面向接口编程;(6)易于与第三方集成;(7)微服务只是业务逻辑的代码,不会和HTML一起使用。CSS或其它界面组合;(8)可灵活搭配,连接公共库和独立库。
10、微服务的缺点是什么?
答:(1)分布式系统的责任;(2)多服务运维难度,随着服务的增加,运维压力也在增加;(3)系统部署依赖;(4)服务间通信成本;(5)数据一致性;(6)系统集成测试;(7)性能监控。
11、什么是Spring Cloud Bus?
答:Spring Cloud Bus是基于消息代理的分布式系统消息总线。它利用轻量级消息代理来连接各个分布式节点,实现节点之间的消息传递和事件驱动。Spring Cloud Bus的核心思想是通过消息广播机制,使得一次配置更新可以触发所有相关节点的配置刷新,从而实现分布式系统的配置管理]和动态更新。
12、springcloud断路器的作用是什么?
答:当一个服务调用另一个服务由于网络原因或自身原因出现问题时,调用者将等待被调用者的响应 当更多的服务要求这些资源导致更多的请求等待时,就会出现连锁效应(雪崩效应)。断路器完全打开:一段时间内 达到一定次数不能调用 并且多次监测无恢复迹象 断路器完全打开 那么下一个请求就不会要求服务了。半开:短时间内有恢复迹象,断路器会向服务发出部分请求,正常调用时断路器会关闭;关闭:服务处于正常状态时,可以正常调用。
13、什么是服务熔断?什么是服务降级?
答:在复杂的分布式系统中,微服务之间的相互呼叫可能会导致服务堵塞的各种原因。在高并发场景下,服务堵塞意味着线程堵塞,导致当前线程不可用,服务器线程全部堵塞,导致服务器崩溃。由于服务之间的呼叫关系是同步的,它将导致整个微服务系统的服务雪崩。为了解决微服务的调用响应时间过长或不可用,占用越来越多的系统资源,导致雪崩效应,需要进行服务熔断和服务降级。
所谓服务熔断,是指某个服务故障或异常在一起,类似于显示世界“保险丝”当异常情况被触发时,整个服务将被直接熔断,而不是等到服务加班。
服务熔断相当于我们电闸的保险丝,一旦发生服务雪崩,整个服务将被熔断。通过维护自己的线程池,当线程达到阈值时,将启动服务降级。如果其他请求继续访问,则直接返回fallback的默认值。
14、负载平衡的意义是什么?
答:负载平衡旨在优化资源使用,最大吞吐量,最小响应时间,避免任何单一资源过载。使用多个组件来平衡负载,而不是通过冗余来提高可靠性和可用性。
15、SpringBoot和SpringCloud有什么联系和区别?
答:SpringBoot是Spring推出的基于Maven的解决方案,用于解决传统框架配置文件的冗余和复杂的装配组件,旨在快速构建单个微服务;SpringCloud专注于解决各微服务、服务间通信、熔断、负载平衡等之间的协调配置问题。
不同的技术维度,而Spring Cloud依赖于Spring Boot,Spring Boot不依赖Spring Cloud,甚至可以和Dubbo优秀的综合开发。
16、Hystrix是如何实现它的目标的?
Hystrix 通过:
- 将所有调用封装到一个HystrixCommand或hystrix观察者的对象中,通常在一个单独的线程中执行(这是命令模式的一个例子)。
- 时间的调用比你定义的阈值要长。有一个默认值,但是对于大多数依赖项,您可以通过“属性”来定制这些超时,这样它们就会比每个依赖项的99.5%的性能稍微高一些。
- 维护每个依赖项的一个小线程池(或信号量);如果它变得满了,那么就会立即拒绝请求这个依赖项的请求,而不是排队。
- 测量成功、失败(客户端抛出的异常)、超时和线程拒绝。
- 在一段时间内,如果服务的错误百分比超过了一个阈值,就会触发一个断路器来停止对特定服务的所有请求,无论是手动的还是自动的。
- 当一个请求失败时执行回退逻辑,被拒绝,超时,或短路。
- 监控指标和配置在接近实时的情况下发生变化。
【2024面试刷题】一、Spring Cloud 面试题的更多相关文章
- 安利一个基于Spring Cloud 的面试刷题系统。面试、毕设、项目经验一网打尽
推荐: 接近100K star 的Java学习/面试指南 Github 95k+点赞的Java面试/学习手册.pdf 今天给小伙伴们推荐一个朋友开源的面试刷题系统. 这篇文章我会从系统架构设计层面详解 ...
- spring cloud 面试题总结
前言,随着分布式的时代到来,现在微服务越来越火了,Spring Cloud已经成为一个面试必问的考点,下面我们就Cloud这一些列的组件来一个入门到面试的过程.开篇前,先让大家看几个常见的Spring ...
- Spring Cloud面试题万字解析(2020面试必备)
1.什么是 Spring Cloud? Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring cloud Tas ...
- 有效的括号序列——算法面试刷题4(for google),考察stack
给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 括号必须依照 "()" 顺序表示, & ...
- 相似的RGB颜色——算法面试刷题3(for google),考察二分
在本题中,每个大写字母代表从“0”到“f”的一些十六进制数字. 红绿蓝三元色#AABBCC可以简写为#ABC. 例如,#15c是颜色#1155cc的简写. 现在,假设两种颜色#ABCDEF和#UVWX ...
- 回文的范围——算法面试刷题2(for google),考察前缀和
如果一个正整数的十进制表示(没有前导零)是一个回文字符串(一个前后读取相同的字符串),那么它就是回文.例如,数字5, 77, 363, 4884, 11111, 12121和349943都是回文. 如 ...
- 有效单词词广场——算法面试刷题5(for google),考察数学
给定一个单词序列,检查它是否构成一个有效单词广场.一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)的k,第k行和第k列对应的字符串应该相同,. 给 ...
- AI面试刷题版
(1)代码题(leetcode类型),主要考察数据结构和基础算法,以及代码基本功 虽然这部分跟机器学习,深度学习关系不大,但也是面试的重中之重.基本每家公司的面试都问了大量的算法题和代码题,即使是商汤 ...
- 面试刷题30:SpringBean的生命周期?
spring是Java软件开发的事实标准. 我是李福春,我在准备面试,今天的问题是:springBean的生命周期是怎样的? 答:spring最基础的能力是IOC(依赖注入),AOP(面向切面编程), ...
- 面试刷题37:微服务是什么?springcloud,springboot是什么?
面试中被问到为什么要使用微服务架构?springcloud的核心组件有哪些? 拿我们国家的兵种来说,如何把战争这个单体架构微服务化,就是根据适用的场景,拆分出不同的兵种(微服务) 然后每个兵种之间通过 ...
随机推荐
- NLP涉及技术原理和应用简单讲解【二】:paddle(分布式训练、AMP自动混合精度训练、模型量化、模型性能分析)
参考链接: https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/06_distributed_training/cluster_q ...
- python中--try except 异常捕获以及正则化、替换异常值
1.异常处理过程 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exceptio ...
- 1.13 导出表劫持ShellCode加载
在Windows操作系统中,动态链接库DLL是一种可重用的代码库,它允许多个程序共享同一份代码,从而节省系统资源.在程序运行时,如果需要使用某个库中的函数或变量,就会通过链接库来实现.而在Window ...
- OS X 下安装 pycurl
1 (venv) ➜ pythonProject4 find / -iname ssl.h 2 find: /usr/sbin/authserver: Permission denied 3 /usr ...
- Intel Arrow Lake处理器还是8+16 24核心:接口换LGA1851
Intel已经确认,将在今年内发布未来两代处理器Arrow Lake.Lunar Lake,其中前者将弥补Meteor Lake的不足,同时用于笔记本.桌面.服务器,现在它的核心规格流出了. 这份曝光 ...
- P4149 [IOI2011] Race 题解
题目链接:Race 点分治基本题,从这题简单阐述点分治如何思考问题的.点分治常见的解决一类问题,就是树里面的一些路径类问题.比如一些计数是最常见的. 点分治的一个核心计数思想: 如图所见,对于某个点而 ...
- 【进阶篇】Java 实际开发中积累的几个小技巧(一)
目录 前言 一.枚举类的注解 二.RESTful 接口 三.类属性转换 四.Stream 流 五.判空和断言 5.1判空部分 5.2断言部分 文章小结 前言 笔者目前从事一线 Java 开发今年是第 ...
- 索引构建磁盘IO太高,巧用tmpfs让内存来帮忙
在文本索引构建这种需要大量占用磁盘IO的任务,如果正巧你的内存还有点余粮,是否可以先索引存储到内存,然后再顺序写入到磁盘呢?,需要大量占用磁盘IO,如果正巧你的内存还有点余粮,是否可以先索引存储到内存 ...
- .NET 云原生架构师训练营(模块二 基础巩固 配置)--学习笔记
2.2.3 核心模块--配置 IConfiguration Options ASP.NET Core 中的配置:https://docs.microsoft.com/zh-cn/aspnet/core ...
- Hadoop集群常用组件的命令
1. Hadoop (1).HDFS:启动HDFS:start-dfs.sh关闭HDFS:stop-dfs.sh格式化NameNode:hdfs namenode -format查看文件系统状态:hd ...