第 219 题:服务降级策略,熔断与限流的触发条件?
题目
服务降级策略,熔断与限流的触发条件?
完整讲解
一、服务降级与高可用
降级:当系统过载或依赖故障时,主动关闭部分功能或返回简化结果,保证核心路径可用、避免雪崩。熔断与限流是常用手段,需明确触发条件与恢复策略。
二、限流(Rate Limiting)
- 目的:限制请求速率(QPS、并发数),防止下游或自身过载。触发条件:通常按阈值触发,如 QPS > 1000 或当前并发 > 500 时,对超出部分拒绝(返回 429)或排队;也可按用户/租户分别限流。
- 算法:令牌桶、漏桶、滑动窗口等;限流粒度可为全局限流、单机限流、按 key(如 user_id)限流。恢复:请求量低于阈值后,自动恢复接受;可设预热(冷启动时逐步放量)。
三、熔断(Circuit Breaker)
- 目的:当依赖下游持续失败或延迟过高时,快速失败、不再请求下游,避免拖垮本服务与下游。状态:关闭(正常请求)→ 打开(失败率/错误数超阈值,直接返回错误或降级)→ 半开(间歇放行少量请求试探下游是否恢复)→ 恢复则关闭。
- 触发条件:错误率超过阈值(如 50%)、连续失败次数超过 N、慢调用比例超过阈值、或超时比例高。可组合:如 5 秒内错误率 > 50% 且请求数 > 10 则打开。恢复:半开状态下若干次成功则关闭、仍有失败则再打开;可设冷却时间避免频繁开关。
四、与降级策略配合
- 限流:超限时返回「系统繁忙」或默认/缓存结果(降级内容)。熔断:打开时返回默认结果或简化逻辑(如推荐走缓存、不调模型)。优先级:先限流保护自身与下游,再熔断隔离故障依赖;两者可同时存在,配合监控与告警。
面试要点
- 能区分限流与熔断:限流=控速率/并发、熔断=依赖故障时快速失败;能说明各自目的与典型触发条件。
- 能描述限流触发(QPS/并发超阈值)与恢复;能描述熔断三态(关闭、打开、半开)及触发(错误率、连续失败、慢调用)与恢复。
- 能简述与降级策略的配合(超限/熔断时返回默认或缓存);能提及按 key 限流与熔断粒度。
记忆要点
- 限流=控 QPS/并发,超阈值拒绝或排队;熔断=依赖故障时打开、快速失败,半开试探恢复。
- 触发:限流看 QPS/并发;熔断看错误率、连续失败、慢调用。降级=超限/熔断时返回默认或缓存。