Java经典面试题汇总(十二)Spring Cloud

本篇总结的是Spring Cloud框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢~  

目录

1. 什么是 Spring Cloud?

2. Spring Cloud 断路器的作用是什么?

3. Spring Cloud 的核心组件有哪些?

4. 什么分布式系统?

5. 分布式系统的CAP理论?

6. Spring Cloud的版本关系?

7. SpringCloud 适合做注册中心的有哪些 ?

8. 什么是 Hystrix?它如何实现容错?

9. 什么是 Netflix Feign?它的优点是什么?

10. 什么是Spring Cloud Config?

11. 什么是Spring Cloud Gateway?


1. 什么是 Spring Cloud?

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发, 如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等, 都可以用 Spring Boot 的开发风格做到一键启动和部署。


2. Spring Cloud 断路器的作用是什么?

在分布式架构中,断路器模式的作用也是类似的,当某个服务单元发生故障(类似用电器发生短路)之后, 通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待。 这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延。


3. Spring Cloud 的核心组件有哪些?

  • Eureka:服务注册于发现。
  • Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。
  • Ribbon:实现负载均衡,从一个服务的多台机器中选择一台。
  • Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。
  • Zuul:网关管理,由 Zuul 网关转发请求给对应的服务。

4. 什么分布式系统?

一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的) 单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群。服务集群对外提供服务的过程中, 可以分解处理压力,在一定程度上打破性能瓶颈,并提高服务的可用性(不会因为一台机器宕机而造成服务不可用)。


5. 分布式系统的CAP理论?

  •  一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本),换句话就是说,任何时刻,所用的应用程序都能访问得到相同的数据。
  • 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性),换句话就是说,任何时候,任何应用程序都可以读写数据。
  • 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择,换句话说,系统可以跨网络分区线性的伸缩和扩展。


 6. Spring Cloud的版本关系?

Spring Cloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。为了管理Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对应的子项目版本。

7. SpringCloud 适合做注册中心的有哪些 ?

Eureka、Nacos

SpringCloud 之 为什么 Eureka 比 zookeeper更适合做服务注册与发现 ?

微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比

springcloud理论篇一之zookeeper和Eureka对比


8. 什么是 Hystrix?它如何实现容错?

Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。通常对于使用微服 构开发的系统,涉及到许多微服务。在这种情况下使用 Hystrix定义了一个回退方法。这种后备方法应该具有与公开服务相同的返回类型。如果暴露服务中出现异常,则回退方法将返回一些值。


9. 什么是 Netflix Feign?它的优点是什么?

Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性, 相比REST模板方式,使用 Netflix Feign 变得更加轻松和清洁。如果 Netflix Ribbon 依赖关系也在类路径中,那么 Feign 默认也会负责负载平衡。


10. 什么是Spring Cloud Config?

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

使用:

(1)添加pom依赖

(2)配置文件添加相关配置

(3)启动类添加注解@EnableConfigServer


11. 什么是Spring Cloud Gateway?

Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix ZUUL,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

Zuul和Gateway对比


### 回答1: Spring Cloud是一个开源的微服务框架,它提供了一系列的工具和组件来协助构建和维护基于微服务的应用程序。它提供了一套解决分布式系统中常见问题的解决方案,包括配置管理、服务注册与发现、负载均衡、断路器等。 在实践中,Spring Cloud通常与Spring Boot框架配合使用,Spring Boot是一个快速开发Web应用程序的框架,它提供了一个默认配置,使得开发人员可以轻松地构建起一系列的Web应用程序。Spring Boot与Spring Cloud的结合可以让我们更便捷地构建微服务应用程序。 在实际项目中,我们通常需要多种微服务协同工作,比如通过网关来实现路由、通过注册中心来管理服务、通过配置中心来管理配置、通过熔断器来保持服务的高可用性等等,Spring Cloud可以为我们提供开箱即用的解决方案。 总之,Spring Cloud是一个非常优秀的微服务框架,它可以帮助我们快速构建出高可用的分布式应用程序。无论是小型团队还是大型企业,都可以使用Spring Cloud来减少复杂性和提高效率。 ### 回答2: Spring Cloud是一个开发企业级分布式应用程序的框架,它基于SpringBoot来构建分布式应用,提供了一系列的工具和组件来简化分布式系统开发和部署。Spring Cloud能够将分布式应用中的各个服务进行互相调用和管理,以此保证分布式应用的稳定性和可扩展性。 Spring Cloud提供了丰富的组件来构建分布式应用,其中最重要的是服务注册和发现、配置中心、负载均衡、断路器等。服务注册和发现是必须掌握的组件,它能够在分布式应用中实现服务的自动发现和管理。在使用Spring Cloud的注册中心时,我们需要创建一个Eureka服务器,它负责管理所有的服务实例并向客户端提供可用服务的列表。 配置中心是另一个必须掌握的组件,它能够将分布式应用中的配置信息统一管理。Spring Cloud Config提供了一个配置服务器,并通过Git存储来管理配置文件。 负载均衡能够确保服务请求被分摊到多个节点上,以此提高分布式应用的性能和可靠性。Spring Cloud Load Balancer是负载均衡组件,它能够根据负载均衡算法来选择服务实例。 断路器组件能够在某个服务故障的情况下,保护分布式应用系统不会完全崩溃。Spring Cloud Circuit Breaker提供了这个功能,它能够在服务出现故障时,自动切换到备用服务上以确保系统的可用性。 总之,Spring Cloud提供了丰富的组件来简化分布式应用的开发、管理和部署,是开发分布式应用的不二选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让程序飞

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值