← 每日面试题 学习看板

限流、降级、熔断有什么区别?

面试题/02架构设计题/01微服务/限流、降级、熔断有什么区别?.md

面试记录 2026-09-27

题目:限流、降级、熔断有什么区别?

难度:medium

标签:arch/microservice, architecture/resilience

评分:⭐⭐⭐⭐☆(4/5)

我的回答

限流、降级、熔断是三个阶段吧,或者说它三个其实本质上就不是一个东西。但它们都是为了处理一类问题,就是当它们三个处理的都不是一类问题。限流是为了控制最高流量。降级是当服务出现问题时候,给它一个反馈,但是这个反馈的话可能是,不是真实的,可能是假的,就是从真实的服务降级为非真实服务的反馈。比如说我之前就做过一个接口,去正常的是调三方接口去返回结果,但是当三方接口出现问题的时候,服务就降级了。降级我可能给它返回一个随机值,最终给它一个结果,这就是一个降级,从真的变成一个随机的结果,可能真可能假。熔断的话就是,熔断其实跟降级有关系,就是当下方我调用三方的服务,这时候三方的服务出现了问题,无法正常访问。它可能有时候能正常访问,有时候不能正常访问。当达到了一定阈值的时候,我判断这个服务一定期间内不可访问,我就给它熔断了,就是先不访问这个服务。但是在过了一段时间之后,我可能去再去访问这个服务。这个服务可能是某台服务器节点,可能是某一个三方,这个然后发生了熔断,我就不访问这个三方了,我访问其他的三方,我不访问这个服务器了,访问其他服务器。但是我又不能确保它什么时候恢复。这时候先确定它不能动不能用了,就先不用它。然后过一段时间我再尝试调它一次,能成功可能就给它恢复了,让它继续加入可调用的实例。如果还不能成功,就彻底给它熔断掉,就不再访问它,等待人工处理。

点评

优点:

不足:

补充:

完整讲解

第一部分:知识重点剖析

核心考点定位:考察对三种流量治理策略本质区别、使用场景、组合方式和主流实现工具的理解。

知识点拆解:

  1. 限流(Rate Limiting):控制入口流量,防止系统被打爆。作用于本服务。
  1. 熔断(Circuit Breaking):保护下游依赖,防止调用失败拖垮调用方。作用于下游服务。
  1. 降级(Fallback/Degrade):兜底策略,让系统在异常下仍可用。作用于本服务对外接口。
  1. 三者关系:
  1. 主流工具:
递进:从"三种策略是什么"→ "各自作用点在哪"→ "如何在生产组合使用"。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. 熔断三态具体怎么迁移?
  1. Hystrix 熔断和 Sentinel 熔断有什么区别?
  1. 什么时候用限流而不是熔断?
  1. 生产环境如何确定限流阈值和熔断阈值?

第三部分:面试者参考回答(300-600 字口语化)

面试官您好,限流、降级、熔断不是三个阶段,而是三种不同的防护策略,作用点不同。

限流(Rate Limiting):控制入口流量,防止系统被打爆。作用于本服务。算法有计数器、漏桶、令牌桶、滑动窗口;实现上单机用 Guava RateLimiter,集群用 Redis + Lua 或 Sentinel 集群限流。典型场景:秒杀接口防刷、登录接口防暴力破解。

熔断(Circuit Breaking):保护下游依赖,防止下游不稳定拖垮调用方。作用于下游服务。核心是三态机:

降级(Fallback/Degrade):兜底策略,让系统异常下仍可用。作用于本服务对外接口。类型有:

三者关系:限流是入口守门员,熔断是下游保险丝,降级是兜底策略。典型组合是网关限流 + 服务熔断 + 熔断后降级,形成三层保护。

主流工具:

生产上阈值一般:限流阈值 = 压测 80%,熔断阈值 = 50% 错误率持续 10s,恢复期 = 10-30s,探测成功连续 N 次后回 CLOSED。