SpringCloud面试题及答案(2024最新版)

SpringCloud面试题及答案(2024最新版)-mikechen

SpringCloud面试题是经常在Java面试被问到的,下面重点详解最常见的SpringCloud面试题及答案@mikechen

什么是SpringCloud?

SpringCloud面试题及答案(2024最新版)-mikechen

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,它将市面上较好的微服务框架集成进来,包括:Eureka、Zuul、Hystrix、Ribbon等组件。

 

什么是微服务?有哪些特点?

微服务是一种架构模式,它提倡将单一应用程序划,分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。

微服务的特点如下:

SpringCloud面试题及答案(2024最新版)-mikechen

1)一组小的服务;

2)独立的进程,比如:java的tomcat;

3)轻量级的通信;

4)基于业务能力,类似:用户服务,商品服务等等;

5)独立部署,迭代速度快;

6)无集中式管理,无须统一技术栈,可以根据不同的服务或者团队进行灵活选择;

 

SpringCloud技术体系有哪些?

Spring Cloud技术体系,如下:

SpringCloud面试题及答案(2024最新版)-mikechen

主要会包含如下组件:

  1. Eureka(服务注册与发现):Eureka 是 Spring Cloud 提供的服务注册和发现的组件。
  2. Ribbon(客户端负载均衡):Ribbon 是一个客户端负载均衡器,可以用于在多个服务实例之间分发请求,提高系统的可用性和性能。
  3. Hystrix(断路器模式):Hystrix 是一种断路器模式的实现,用于防止由于服务故障而导致整个系统的崩溃,它可以提供降级策略、请求缓存、线程池隔离等功能。
  4. Feign(声明式服务调用):Feign 是一个声明式的服务调用客户端,它使得编写服务间调用的代码更加简洁和可读。
  5. Zuul(API 网关):Zuul 是一个 API 网关,用于路由和过滤传入的请求。它可以提供安全性、监控和负载均衡的功能。
  6. Spring Cloud Config(配置管理):Spring Cloud Config 可以用于集中式管理微服务应用程序的配置,支持动态更新配置。
  7. Spring Cloud Bus(消息总线):Spring Cloud Bus 使用消息总线来连接分布式应用程序中的各个组件,从而实现配置的集中化管理和更新。
  8. Spring Cloud Sleuth(分布式追踪):Spring Cloud Sleuth 集成了分布式追踪工具,如 Zipkin,用于跟踪请求在微服务系统中的流动,以帮助诊断和分析问题。

 

SpringCloud架构及流程

SpringCloud面试题及答案(2024最新版)-mikechen

通过这张图,可以比较清楚的了解到各组件配置使用运行机制。

主要分为如下6大运行流程:

1、请求统一通过API网关:Zuul来访问内部服务;

2、网关接收到请求后,从注册中心Eureka获取可用服务;

3、由Ribbon进行均衡负载后,分发到后端具体实例;

4、微服务之间通过Feign进行通信处理业务;

5、Hystrix负责处理服务超时熔断等;

6、Turbine监控服务间的调用和熔断相关指标,用于后续的监控与分析。

 

什么是Eureka?作用是什么?

Eureka 作为 Spring Cloud 框架的注册中心,与之对应的是 Dubbo 框架的Zookeeper。

如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

 

什么是Hystrix?作用是什么?

Hystrix熔断器的作用是当服务调用失败率达到一定阈值时,自动切断对该服务的调用,防止雪崩效应的发生,从而保障系统的稳定性。

如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

ServiceB依赖于ServiceC,由于ServiceC访问量比较大,由于ServiceC挂了,很可能ServiceB也会被拖累挂。

所以针对这种情况需要考虑引入Hystrix 熔断机制,避免大面积雪崩等场景。

 

什么是Zuul?作用是什么?

Zuul是Netflix开源的一个网关服务,可以作为API网关来管理微服务架构中的所有请求流量。

如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

Zuul网关的主要功能包括:

  1. 服务路由:可以根据请求的URL、请求头、请求参数等信息将请求路由到相应的后端服务。
  2. 过滤器:Zuul提供了预处理和后处理的过滤器,可以在请求被路由到后端服务前或响应返回给客户端后执行一些额外的逻辑,例如鉴权、请求日志记录等。
  3. 负载均衡:可以通过与Ribbon集成,实现负载均衡功能,将请求平均分配到多个后端服务实例中。
  4. 容错处理:通过与Hystrix集成,可以实现容错和熔断功能,保障系统的可靠性和稳定性。

 

什么是Ribbon?作用是什么?

Ribbon是一个基于客户端的负载均衡组件,它是Netflix开源的微服务框架的一部分。

Ribbon的工作原理是:通过维护一份可用的服务列表,并根据一定的负载均衡策略从服务列表中选择一个实例来处理请求。

如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

Ribbon支持多种负载均衡策略,例如轮询、随机、权重等,可以根据实际情况进行配置。

 

什么是Spring Cloud Config?作用?

Spring Cloud Config是一个基于Git的配置中心,用于管理分布式系统中的配置文件,提供了集中式的、动态的配置管理功能。

如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

Spring Cloud Config可以将应用程序的配置从应用代码中解耦出来,实现配置的热更新、版本管理等功能。

 

Spring Cloud Feign是什么?作用

Feign是Spring Cloud Netiflix组件中的一个轻量级Restful的HTTP服务客户端,通过 接口 + 注解的方式发起 HTTP 请求调用。

Feign作用

Feign 主要是帮助我们方便进行Rest API服务间的调用,Feign最大的作用就是减少 HTTP 远程调用的复杂性。

Feign实现了像调用本地方法一样调用远程方法,无感知远程HTTP 请求,类似于Dubbo Consumer直接调用Provider的接口方法。

 

什么是Spring Cloud Sleuth?作用?

Spring Cloud Sleuth 是 Spring Cloud的链路追踪组件,实现了分布式跟踪解决方案。

随着微服务架构的流行,服务按照不同的维度进行拆分,在复杂的微服务架构系统中,会形成一个复杂的分布式服务调用链路,如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

面对复杂的调用链路就带来一系列问题:如何快速发现问题?如何分析链路性能?等问题。

这个就需要链路追踪来解决这种问题,它可以在复杂的服务调用中定位问题。

 

什么是服务注册?

服务注册指的是将自身服务信息注册到注册中心,服务信息包括:服务所在主机IP、服务的端口号Port、暴露服务协议等信息。

如下图所示:

SpringCloud面试题及答案(2024最新版)-mikechen

分布式和微服务应用区别

微服务架构是对系统进行更细粒度的拆分,侧重于模块解耦和复用,微服务是使系统各个功能拆分更加精细和独立的垂直拓展。

分布式:主要用来解决网站高并发带来问题,比如:不同模块部署在不同服务器上,对系统的水平拓展,分散单个服务器压力,增加系统吞吐量。

以上就是常见的SpringCloud面试题详解,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法