Sentinel面试题总结

12/5/2023 Sentinel

[toc]

# Sentinel面试题总结

# 什么是服务雪崩 ?

微服务中,一个业务功能往往依赖于多个服务。

如果其中一个下游服务出现了故障,那么就会导致这个业务功能异常。如果大量的请求都访问这个业务功能,那么会导致系统中的其他业务功能都出现问题。这种情况就是服务雪崩。

# 如何解决服务雪崩问题?

  1. 服务熔断
  2. 超时处理:给服务设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待。

# Sentinel支撑的流控模式有哪些 ?

  • 直接:统计当前资源的请求,触发阈值时对当前资源直接限流,这是默认的模式。
  • 关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流
  • 链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流。

# Sentinel支持的流控效果有哪些 ?

流控效果是指请求的QPS达到流控阈值时应该采取的措施,有三种:

  1. 快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。
  2. warm up:预热模式,对超出阈值的请求同样是拒绝并抛出异常。但这种模式下阈值会动态变化,从一个较小值逐渐增加到最大阈值。
  3. 排队等待:让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长。

# Sentinel是否可以实现对指定热点数据访问限流 ?

Sentinel支持热点参数限流,具体就是需要在控制面板配置热点参数和阈值。

# Sentinel中如何对一个普通的方法限流 ?

通过@SentinalResource注解来把方法标注为一个sentinel资源。然后在控制面板上设置方法的阈值即可。

# Sentinel断路器是如何工作的 ?

断路器包括三个状态:

  • closed:关闭状态,断路器放行所有请求,并开始统计异常比例、慢请求比例。超过阈值则切换到open状态
  • open:打开状态,服务会被熔断,访问被熔断服务的请求会被快速失败,直接走降级逻辑。Open状态5秒后会进入half-open状态
  • half-open:半开状态,放行一次请求,根据执行结果来判断接下来的操作。如果请求成功:则切换到closed状态。如果请求失败:则切换到open状态。

# Sentinel什么情况下会触发熔断降级 ?

断路器熔断策略有三种:慢调用、异常比例、异常数。可以在sentinel控制台中配置

# Sentinel限流底层是通过什么方式实现的 ?

有两种方式:

  • 信号量隔离(默认使用):不创建线程池,而是计数器模式,记录业务使用的线程数量,达到信号量上限时,禁止新的请求。
  • 线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果

# Sentinel如何实现对访问来源的控制 ?

  • 白名单:在白名单内的调用者允许访问
  • 黑名单:在黑名单内的调用者不允许访问

主要做法就是 : 实现RequestOriginParser接口 , 从request对象中,获取请求者的origin值来判断调用者是不是黑白名单上的。

# Sentinel中配置的规则是如何保存的 ? 重启之后还生效嘛 ?

默认情况下Sentinel的所有规则都是内存存储,重启后所有规则都会丢失。

Sentinel数据的三种持久化方式。取决于规则管理模式

entinel支持三种规则管理模式:

  • 原始模式:Sentinel的默认模式,将规则保存在内存,重启服务会丢失。
  • pull模式 : 控制台将配置的规则推送到Sentinel客户端,而客户端会将配置规则保存在本地文件或数据库中。以后会定时去本地文件或数据库中查询,更新本地规则
  • push模式 :控制台将配置规则推送到远程配置中心,例如Nacos。Sentinel客户端监听Nacos,获取配置变更的推送消息,完成本地配置更新。
Last Updated: 12/6/2023, 1:49:24 AM