当前位置:   article > 正文

Spring Cloud五大组件详解(含面试题)_springcloud五大组件

springcloud五大组件

文章目录

一、Spring Cloud有哪五大组件?

二、服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?

三、我看你之前也用过nacos、你能说下nacos与eureka的区别?

四、你们项目负载均衡如何实现的,负载均衡策略有哪些 ?

五、如果想自定义负载均衡策略如何实现 ?

六、什么是服务雪崩,怎么解决这个问题?

七、你们的微服务是怎么监控的?


一、Spring Cloud有哪五大组件?

通常情况下:                                             

  • Eureka   : 注册中心                                       
  • Ribbon  : 负载均衡
  • Feign     : 远程调用
  • Hystrix :  服务熔断
  • Zuul/Gateway  : 网关

随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件:

  • 注册中心/配置中心 Nacos
  • 负载均衡 Ribbon
  • 服务调用 Feign
  • 服务保护 sentinel
  • 服务网关 Gateway

二、服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?

注册中心的核心作用是:服务注册和发现

常见的注册中心:eureka、nocas、zookeeper

  • 我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件
  • 服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等
  • 服务发现:消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用负载均衡算法,选择一个发起调用
  • 服务监控:服务提供者会每隔30秒向eureka发送心跳,报告健康状态,如果eureka服务90秒没接收到心跳,从eureka中剔除

三、我看你之前也用过nacos、你能说下nacos与eureka的区别?

  • Nacos与eureka的共同点(注册中心)
  1. 都支持服务注册和服务拉取
  2. 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别(注册中心)
  1. Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  2. 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
  3. Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
  4. Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
  • Nacos还支持了配置中心,eureka则只有注册中心,也是选择使用nacos的一个重要原因

四、你们项目负载均衡如何实现的,负载均衡策略有哪些 ?

  • 微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是使用了ribbon

  • RoundRobinRule:简单轮询服务列表来选择服务器
  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
  • RandomRule:随机选择一个可用的服务器
  • BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器
  • RetryRule:重试机制的选择逻辑
  • AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例
  • ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询(就近原则,选择离自己地域近的微服务机房进行轮询)

五、如果想自定义负载均衡策略如何实现 ?

提供了两种方式:

  • 创建类实现IRule接口,可以指定负载均衡策略(全局)
  • 在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)

六、什么是服务雪崩,怎么解决这个问题?

  • 服务雪崩:一个服务失败,导致整条链路的服务都失败的情形
  • 服务降级:服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃,一般在实际开发中与feign接口整合,编写降级逻辑
  • 服务熔断:默认关闭,需要手动打开,如果检测到 10 秒内请求的失败率超过 50%,就触发熔断机制。之后每隔 5 秒重新尝试请求微服务,如果微服务不能响应,继续走熔断机制。如果微服务可达,则关闭熔断机制,恢复正常请求

雪崩:一个服务失败,导致整条链路的服务都失败的情形

  • 熔断降级(解决)
  • 限流(预防)

例如:服务D失败(宕机),那么服务A调用服务D的连接仍然存在,但是服务A的连接有限,此连接不会释放,服务A的连接被占满知乎,服务A就会宕机,会导致一系列连锁反应。

服务降级

服务熔断

七、你们的微服务是怎么监控的?

我们项目中采用的skywalking进行监控的

  • skywalking主要可以监控接口、服务、物理实例的一些状态。特别是在压测的时候可以看到众多服务中哪些服务和接口比较慢,我们可以针对性的分析和优化。
  • 我们还在skywalking设置了告警规则,特别是在项目上线以后,如果报错,我们分别设置了可以给相关负责人发短信和发邮件,第一时间知道项目的bug情况,第一时间修复

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/732318
推荐阅读
相关标签
  

闽ICP备14008679号