SpringCloud面试题及答案(SpringCloud面试题大全带答案)
2022年面试题及答案【最新版】高级SpringCloud面试题大全,发现网上很多SpringCloud面试题及答案整理都没有答案,所以花了很长时间搜集,本套SpringCloud面试题大全,有大量经典的SpringCloud面试题以及答案,面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习!
本套SpringCloud面试题大全,汇总了大量经典的Java程序员面试题以及答案,包含SpringCloud语言常见面试题、SpringCloud工程师高级面试题及一些大厂SpringCloud开发面试宝典
1、什么是Hystrix?它如何实现容错?
Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。
通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。
假设如果上图中的微服务9失败了,那么使用传统方法我们将传播一个异常。但这仍然会导致整个系统崩溃。
随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达1000.这是hystrix出现的地方 我们将使用Hystrix在这种情况下的Fallback方法功能。我们有两个服务employee-consumer使用由employee-consumer公开的服务。
这套7000多页的Java面试题 PDF 大全,希望对大家有帮助哈~
已经整理成7000多页,面试手册PDF版https://mp.weixin.qq.com/s/TMBjoux5tpcqmbEFR-pDrA
这套Java面试题大全,希望对大家有帮助哈~
博主已将以下这些面试题整理成了一个面试手册,是PDF版的
2、ZuulFilter常用有那些方法
1、 Run():过滤器的具体业务逻辑
2、 shouldFilter():判断过滤器是否有效
3、 filterOrder():过滤器执行顺序
4、 filterType():过滤器拦截位置
3、Spring Cloud Gateway
Spring cloud gateway是spring官方基于Spring 5.0、SpringBoot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。
4、Spring Cloud Netflix
Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。
1、 Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
2、 Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
3、 Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
4、 Feign:基于Ribbon和Hystrix的声明式服务调用组件;
5、 Zuul:API网关组件,对请求提供路由及过滤功能。
5、负载均衡的意义是什么?
在计算中,负载均衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载均衡旨在优化资源使用,最大吞吐量,最小响应时间并避免任何单一资源的过载。使用多个组件进行负载均衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务进程。
6、Spring Cloud OpenFeign
Feign是一个声明性的Web服务客户端。它使编写Web服务客户端变得更容易。要使用Feign,我们可以将调用的服务方法定义成抽象方法保存在本地添加一点点注解就可以了,不需要自己构建Http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。
7、什么是耦合?
组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。
8、Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别
ZooKeeper保证的是CP,Eureka保证的是AP,ZooKeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的。Eureka各个节点是平等关系,只要有一台Eureka就可以保证服务可用,而查询到的数据并不是最新的自我保护机制会导致Eureka不再从注册列表移除因长时间没收到心跳而应该过期的服务。Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点(高可用)。当网络稳定时,当前实例新的注册信息会被同步到其他节点中(最终一致性)。Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像ZooKeeper一样使得整个注册系统瘫痪。
1、 ZooKeeper有Leader和Follower角色,Eureka各个节点平等
2、 ZooKeeper采用过半数存活原则,Eureka采用自我保护机制解决分区问题
3、 Eureka本质上是一个工程,而ZooKeeper只是一个进程
9、网关的作用是什么
统一管理微服务请求,权限控制、负载均衡、路由转发、监控、安全控制黑名单和白名单等
10、什么是Eureka
Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过Eureka Service来监控各个微服务是否运行正常。
11、为什么人们会犹豫使用微服务?
我见过许多开发者在这个问题上摸索。毕竟,在面试微服务架构师角色时,他们会被问到这个问题,所以承认它的缺点可能有点棘手。以下是一些很好的答案:
它们需要大量协作 - 微服务需要大量的合作。不同的微服务模块,可能分散在不同的团队,团队之间需要始终保持良好的同步。
他们需要建立繁重的架构 - 系统是分布式的,架构涉及很多。 他们需要过多的计划来处理操作开销 - 如果您计划使用微服务架构,则需要为操作开销做好准备。 需要熟练的专业人员,他们可以支持异构分布的微服务。
12、Spring Cloud 是什么
1、 Spring Cloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。
2、 Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
13、为什么需要域驱动设计(DDD)?
图9:我们需要DDD的因素 – 微服务面试问题
44、Spring Cloud和SpringBoot版本对应关系
Spring Cloud Version | SpringBoot Version |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston |
15、Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。
16、什么是SpringBoot?
Spring boot是微服务面试问题的主要话题。 随着新功能的加入,Spring变得越来越复杂。无论何时启动新项目,都必须添加新的构建路径或Maven依赖项。简而言之,你需要从头开始做每件事。SpringBoot是一种帮助您避免所有代码配置的解决方案。
17、微服务有什么特点?
您可以列出微服务的特征,如下所示:
图7:微服务的特征 – 微服务访谈问题
18、什么是Spring Cloud Bus?
spring cloud bus 将分布式的节点用轻量的消息代理连接起来,它可以用于广播配置文件的更改或者服务直接的通讯,也可用于监控。
如果修改了配置文件,发送一次请求,所有的客户端便会重新读取配置文件。
使用:
1、 添加依赖
2、 配置rabbimq
19、SpringBoot和springcloud认识
1、 SpringBoot 是 Spring 的⼀套快速配置脚⼿架,可以基于SpringBoot 快速开发单个微服务,Spring Cloud是⼀个基于SpringBoot实现的云应⽤开发⼯具;
2、 SpringBoot专注于快速、⽅便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
3、 SpringBoot使⽤了默认⼤于配置的理念,很多集成⽅案已经帮你选择好了,能不配置就不配置;
4、 Spring Cloud很⼤的⼀部分是基于SpringBoot来实现,可以不基于SpringBoot吗?不可以。
20、链路跟踪Sleuth
当我们项目中引入Spring Cloud Sleuth后,每次链路请求都会添加一串追踪信息,格式是[server-name, main-traceId,sub-spanId,boolean]:
1、 server-name:服务结点名称。
2、 main-traceId:一条链路唯一的ID,为TraceID。
3、 sub-spanId:链路中每一环的ID,为SpanID。
4、 boolean:是否将信息输出到Zipkin等服务收集和展示。
Sleuth的实现是基于HTTP的,为了在数据的收集过程中不能影响到正常业务,Sleuth会在每个请求的Header上添加跟踪需求的重要信息。这样在数据收集时,只需要将Header上的相关信息发送给对应的图像工具即可,图像工具根据上传的数据,按照Span对应的逻辑进行分析、展示。
这套7000多页的Java面试题 PDF 大全,希望对大家有帮助哈~
已经整理成7000多页,面试手册PDF版https://mp.weixin.qq.com/s/TMBjoux5tpcqmbEFR-pDrA
这套Java面试题大全,希望对大家有帮助哈~
博主已将以下这些面试题整理成了一个面试手册,是PDF版的
21、什么是Spring引导的执行器?
SpringBoot执行程序提供了restful Web服务,以访问生产环境中运行应用程序的当前状态。在执行器的帮助下,您可以检查各种指标并监控您的应用程序。
22、什么是持续集成(CI)?
持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。
23、你对SpringBoot有什么了解?
事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的spring项目,则必须添加构建路径或添加maven依赖项,配置应用程序服务器,添加spring配置。所以一切都必须从头开始。
SpringBoot是解决这个问题的方法。使用spring boot可以避免所有样板代码和配置。因此,基本上认为自己就好像你正在烘烤蛋糕一样,春天就像制作蛋糕所需的成分一样,弹簧靴就是你手中的完整蛋糕。
图10: SpringBoot的因素 – 微服务面试问题
24、Ribbon和Feign调用服务的区别
1、 调用方式同:Ribbon需要我们自己构建Http请求,模拟Http请求然后通过RestTemplate发给其他服务,步骤相当繁琐
2、 而Feign则是在Ribbon的基础上进行了一次改进,采用接口的形式,将我们需要调用的服务方法定义成抽象方法保存在本地就可以了,不需要自己构建Http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。
25、Spring Cloud和SpringBoot版本对应关系
Spring Cloud Version | SpringBoot Version |
---|---|
Hoxton | 2.2.x |
Greenwich | 2.1.x |
Finchley | 2.0.x |
Edgware | 1.5.x |
Dalston | 1.5.x |
26、微服务有哪些特点?
图3:微服务的 特点 – 微服务访谈问题
解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展
组件化 – 微服务被视为可以轻松更换和升级的独立组件
业务能力 – 微服务非常简单,专注于单一功能
自治 – 开发人员和团队可以彼此独立工作,从而提高速度
持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件
责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品
分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题
敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃
27、Ribbon是什么?
1、 Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法
2、 Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。简单的说,就是在配置文件中列出后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。(有点类似Nginx)
28、微服务之间是如何独立通讯的?
1、 远程调用,比如feign调用,直接通过远程过程调用来访问别的service。 2.消息中间件
29、什么是网关?
网关相当于一个网络服务架构的入口,所有网络请求必须通过网关转发到具体的服务。
30、使用Spring Cloud有什么优势?
使用SpringBoot开发分布式微服务时,我们面临以下问题
1、 与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
2、 服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
3、 冗余-分布式系统中的冗余问题。
4、 负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
5、 性能-问题 由于各种运营开销导致的性能问题。
6、 部署复杂性-Devops技能的要求。
这套7000多页的Java面试题 PDF 大全,希望对大家有帮助哈~
已经整理成7000多页,面试手册PDF版https://mp.weixin.qq.com/s/TMBjoux5tpcqmbEFR-pDrA
这套Java面试题大全,希望对大家有帮助哈~
博主已将以下这些面试题整理成了一个面试手册,是PDF版的
由于某些原因,employee-consumer 公开服务会引发异常。在这种情况下使用 Hystrix 我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值
中断,并且员工使用者将一起跳过 firtsPage 方法,并直接调用回退方法。 断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。
32、springcloud如何实现服务的注册?
1、 服务发布时,指定对应的服务名,将服务注册到 注册中心(eureka zookeeper)
2、 注册中心加@EnableEurekaServer,服务用@EnableDiscoveryClient,然后用ribbon或feign进行服务直接的调用发现。
33、微服务架构如何运作?
微服务架构具有以下组件:
图5:微服务 架构 – 微服务面试问题
客户端 – 来自不同设备的不同用户发送请求。
身份提供商 – 验证用户或客户身份并颁发安全令牌。
API网关 – 处理客户端请求。
静态内容 – 容纳系统的所有内容。
管理 – 在节点上平衡服务并识别故障。
服务发现 – 查找微服务之间通信路径的指南。
内容交付网络 – 代理服务器及其数据中心的分布式网络。
远程服务 – 启用驻留在IT设备网络上的远程访问信息。
34、Web,RESTful API在微服务中的作用是什么?
微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得Web API成为微服务的一个非常重要的推动者。RESTful API基于Web的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型。
35、什么是服务降级
consumer 端:consumer 如果发现某个provider出现异常情况,⽐如,经常超时(可能是熔断引起的降级),数据错误,这时,consumer可以采取⼀定的策略,降级provider的逻辑,基本的有直接返回固定的数据。
provider 端:当provider 发现流量激增的时候,为了保护⾃身的稳定性,也可能考虑降级服务。
1、 直接给consumer返回固定数据
2、 需要实时写⼊数据库的,先缓存到队列⾥,异步写⼊数据库。
36、什么是Eureka的自我保护模式,
默认情况下,如果Eureka Service在一定时间内没有接收到某个微服务的心跳,Eureka Service会进入自我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka Servic 节点会自动退出自我保护模式
37、什么是不同类型的双因素身份认证?
执行双因素身份验证需要三种类型的凭据:
1、 一件你知道的事情——比如密码、密码或屏幕锁定模式。
2、 您拥有的物理凭证,如OTP、电话或ATM卡,换句话说,您在外部或第三方设备中拥有的任何类型的凭证。
3、 您的物理身份–如语音认证或生物特征安全,如指纹或眼睛扫描仪。
38、Spring Cloud Sleuth
Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。
39、你所知道微服务的技术栈有哪些?列举一二
40、Spring Cloud Bus
用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置。