MST

星途 面试题库

面试题:微服务架构下Sentinel熔断降级策略的实现原理

在微服务架构中,使用Sentinel构建熔断降级体系,请阐述Sentinel实现熔断降级的主要原理,比如它如何判断服务是否应该熔断,以及熔断后如何恢复服务调用?
21.4万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

Sentinel实现熔断降级的主要原理

  1. 判断服务是否应该熔断
    • 基于平均响应时间:Sentinel会统计一段时间内(例如1秒)请求的平均响应时间。如果平均响应时间超过设定的阈值,且在这段时间内请求数达到一定数量(避免因少量慢请求导致误判),就会触发熔断。例如,设定平均响应时间阈值为200ms,1秒内请求数大于等于5个,且平均响应时间超过200ms,此时就可能触发熔断。
    • 基于异常比例:统计一段时间内请求的异常比例。当异常比例超过设定的阈值,且请求数达到一定数量时,触发熔断。比如,设定异常比例阈值为50%,1秒内请求数大于等于10个,且异常比例超过50%,则触发熔断。
    • 基于异常数:统计一段时间内的异常请求数。当异常请求数超过设定的阈值时,触发熔断。例如,设定1分钟内异常请求数阈值为100个,当1分钟内异常请求数达到或超过100个时,触发熔断。
  2. 熔断后恢复服务调用
    • 熔断开启后:在熔断开启期间,后续的请求会被快速失败,不再真正调用实际的服务。Sentinel会进入熔断冷却期,在这个冷却期内,不允许对被熔断的服务进行调用。
    • 熔断恢复:冷却期结束后,Sentinel会进入半熔断状态。此时会允许少量的试探性请求通过,去调用被熔断的服务。如果这些试探性请求成功(例如成功率达到一定比例,或平均响应时间在正常范围内),则认为服务已经恢复,关闭熔断,恢复正常的服务调用;如果试探性请求失败(异常比例或平均响应时间等指标未达到预期),则继续保持熔断状态,再次进入冷却期,等待下一次试探。