流量一高服务就雪崩:限流、熔断、降级与隔离的正确组合
解决突发流量、下游故障扩散和线程池耗尽,给出容量基线、限流算法、熔断条件与业务降级的组合策略。
问题现象:局部变慢拖垮整个系统
高并发故障常从一个依赖开始:下游响应变慢,上游线程和连接被占满,重试继续放大流量,最终健康服务也无法响应。保护系统的目标不是让所有请求成功,而是在资源有限时优先保证核心业务,并阻止故障跨层扩散。
限流必须建立在容量基线上
先通过压测确定实例在目标延迟下的稳定吞吐,而不是把 CPU 跑满。令牌桶适合允许短时突发,漏桶适合平滑输出,并发限制适合保护连接和慢操作。限流维度可以是接口、用户、租户或业务优先级。返回限流结果时要提供明确重试建议,避免客户端立即重放。
熔断关注失败趋势
当下游错误率或慢调用比例超过阈值时,熔断器暂时停止请求,让依赖获得恢复时间。恢复阶段使用少量探测流量,不能一次性全部放开。阈值过低会频繁误熔断,过高则失去保护作用,应结合调用量、错误类型和业务容忍度配置。
降级与隔离决定核心业务能否存活
降级可以关闭推荐、统计等非核心能力,返回缓存或简化结果。线程池、连接池和队列应按依赖或业务隔离,防止一个慢接口占满全部资源。核心与非核心请求还应使用不同优先级,资源紧张时优先保住交易和登录链路。
验证保护是否真实有效
故障演练要主动注入延迟、错误和连接拒绝,观察熔断是否触发、核心接口是否稳定、恢复是否平滑。问:限流阈值应该固定吗?答:容量稳定时可固定,复杂环境可结合实例数动态调整,但必须设置上下界。保护策略本身也要监控,避免静默丢弃大量请求。
文章回复
0 条公开回复