限流熔断虽然都是为了保障系统的可用性,但它们解决的问题视角不同。

核心对比

维度限流 (Rate Limiting)熔断 (Circuit Breaking)
侧重点防止流量过载,保护本服务防止故障蔓延,保护下游服务
判断依据请求的速率/并发量请求的成功率/错误率/超时率
触发位置通常在系统入口(如网关层)通常在系统出口(如 RPC 客户端)
行为拒绝请求、排队等待、丢弃跳闸、快速失败、走降级逻辑

两者如何协作?

在实际的生产环境中,限流和熔断通常是配合使用的。以缓存雪崩为例:

  1. 限流的作用:当 Redis 挂掉导致海量流量直达数据库时,限流在应用层入口拦截掉大部分超负荷请求,确保数据库只处理它能扛住的那部分查询,防止数据库因过载而彻底宕机。
  2. 熔断的作用:如果数据库因为这突如其来的压力已经响应极慢(甚至部分请求开始报错),熔断机制会检测到超时率过高,直接切断对数据库的访问,防止应用服务器的线程池被堆积的查询请求占满,从而保护应用层自身不挂掉。

总结

  • 限流是控制流量的量,确保系统不被“撑死”。
  • 熔断是控制调用的质,确保系统不被下游的故障“拖死”。