编程进阶网 编程进阶网
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 体系建设优化

  • 代码品质工坊

  • 稳定性与可靠性

  • 工程化与运维

  • 方案设计思想

    • README
    • 通用架构设计方案
    • 组件化方案的设计
    • SDK设计与发布方案
    • 缓存架构设计思想
    • 数据库SQL设计思想
    • 分库分表方案设计
    • 分布式ID生成方案
    • 消息队列方案选型
    • 长链接方案的设计
    • 认证授权方案设计
    • API网关设计方案
    • 路由库设计思想
    • 网络检测方案设计
    • 幂等性设计方案
    • 分布式锁方案设计
    • 限流熔断方案设计
      • 01. 案例引入
      • 02. 问题拆解
      • 03. 业界方案
      • 04. 设计原则
      • 05. 方案落地
      • 06. 踩坑反例
      • 07. 演进路线
    • 移动端防抓包实践
    • 通用轮训方案设计
    • 状态机设计的思想
  • 性能优化实践

  • 真经
  • 方案设计思想
杨充
2026-06-27
目录

限流熔断方案设计

# 限流与熔断方案设计

核心命题:流量洪峰下如何保护系统不崩溃——从单机限流到分布式全链路熔断降级。


# 01. 案例引入

一个真实事故:秒杀流量打崩支付服务 → 连锁雪崩拖垮整个集群 → 30分钟全站不可用。


# 02. 问题拆解

  • 限流:控制请求量(拒绝多余,保证核心可用)
  • 熔断:快速失败(下游挂了别等了,直接返回兜底)
  • 降级:有损服务(关非核心功能,保核心链路)
  • 隔离:线程池隔离 vs 信号量隔离

# 03. 业界方案

方案 代表 优点 缺点
令牌桶 Guava RateLimiter 允许突发、平滑 单机
漏桶 Nginx limit_req 强制匀速 不允许突发
滑动窗口 Redis + Lua 精确、分布式 Redis依赖
熔断器 Hystrix/Resilience4j 自动恢复 已停止维护(Hystrix)
全链路 Sentinel 限流+熔断+降级一体 阿里系依赖
网关层 Kong/APISIX 零代码入侵 粒度粗

# 04. 设计原则

  1. 限流在入口(网关层),熔断在调用点(RPC/HTTP Client层)
  2. 快速失败 > 等待超时
  3. 降级要有损但可控(明确知道关了哪些功能)
  4. 熔断恢复用半开状态(试探性放行)

# 05. 方案落地

  • 单机限流:Guava RateLimiter + 令牌桶
  • 分布式限流:Redis Lua脚本滑动窗口
  • 熔断器状态机:CLOSED → OPEN → HALF_OPEN
  • Sentinel 全链路流控规则配置

# 06. 踩坑反例

  • 限流阈值拍脑袋 → 阈值太低误杀正常流量
  • 只限不限排队 → 大量等待耗尽线程池
  • 熔断后不半开 → 服务恢复了但永远熔断
  • 降级不区分核心/非核心 → 用户体验灾难

# 07. 演进路线

  • V1: Guava 单机限流 → V2: Redis 分布式 + Sentinel 熔断 → V3: 自适应限流(BBR/拥塞控制)

下一篇:20. 终端设备鉴权设计

#限流#熔断#降级#Resilience4j#Sentinel
上次更新: 2026/06/28, 17:55:19
分布式锁方案设计
移动端防抓包实践

← 分布式锁方案设计 移动端防抓包实践→

最近更新
01
科学方法实践论法
06-28
02
辩证思维矛盾论法
06-28
03
毛选中的调查观念
06-28
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 鄂ICP备2024073355号-1 | 鄂ICP备2024073355号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式