为了防雪崩加了限流,结果入口先挂了

限流,本来是为了保护系统。
但在这次事故中,限流器本身成了第一个被拖垮的组件

更糟的是:

  • 后端服务没来得及崩
  • 网关先失去了响应能力
  • 所有请求卡在入口

这是一次非常典型的“限流设计正确,但位置和实现错误”的事故。


一、事故背景

系统架构简化如下:

text

Client ↓ Spring Cloud Gateway(统一入口) ↓ 下游微服务

事故发生前做了这些“看起来很正确”的事情:

  • 在 Gateway 层做统一限流
  • 使用 Redis 作为分布式限流存储
  • 限流算法:令牌桶 / 滑动窗口
  • 限流粒度:按接口 + IP

目标很明确:

入口挡流量,保护下游


二、事故现象

突发流量高峰后,系统表现为:

  • Gateway RT 飙升(几十 ms → 几秒)
  • 大量请求超时
  • 下游服务 CPU、线程池仍然正常
  • Redis QPS 急剧上升
  • Gateway 实例频繁 Full GC

最终结果:

限流没挡住流量,反而把网关拖死了


三、第一反应:限流规则是不是失效了?

第一时间检查限流规则:

  • 阈值配置正确
  • Redis key 在增长
  • 限流命中率正常

结论很反直觉:

限流规则是生效的,但系统还是扛不住

问题不在“限没限住”,而在“限流是怎么做的”


四、核心问题一:限流器成了“同步阻塞点”

Gateway 中的限流逻辑:

请求进入 ↓ 执行限流判断(Redis) ↓ 通过 → 转发 拒绝 → 返回 429

在高并发下,每一个请求都会:

  • 同步访问 Redis
  • 等待 Redis 返回结果
  • 才能决定是否放行

📌限流判断本身就是一次远程调用

当 QPS 上来时:

  • Redis RTT × 请求数
  • 网关线程被大量阻塞
  • Reactor 线程开始堆积

五、核心问题二:Redis 成了“全局热点”

限流 key 设计如下(示例):

javascript

gateway:rate_limit:/order/create

问题在于:

  • 热接口 → 热 key
  • 所有 Gateway 实例
  • 所有请求
  • 都在竞争同一个 Redis key

结果:

  • Redis 单点瓶颈
  • 网络 IO 放大
  • Gateway 等 Redis,Redis 又被 Gateway 打爆

👉形成“限流互相伤害”


六、核心问题三:限流位置选错了

这次事故最大的设计问题是:

把“高成本限流”放在了最外层入口

Gateway 层的特点:

  • 请求量最大
  • 并发最高
  • 对 RT 最敏感

但限流实现却是:

  • 分布式
  • 强一致
  • 同步远程依赖

📌入口层,最怕“慢”


七、为什么下游没挂,Gateway 先挂?

因为:

  • 下游有线程池、熔断、限流
  • Gateway 是“放大器”
  • Gateway 一旦慢,所有请求都慢

一句话总结:

网关是系统的喉咙,不是缓冲区


八、正确的限流设计思路

1️⃣ Gateway 层只做“轻量限流”

适合 Gateway 的限流:

  • 本地限流(Guava / Resilience4j)
  • 基于内存
  • 不依赖外部组件
  • 宁可不准,也要快

📌 原则:

入口限流要“快失败”


2️⃣ 分布式限流下沉到服务内部

真正需要精确控制的地方:

  • 核心接口
  • 资源敏感操作
  • 下游依赖重的逻辑

这些限流应该:

  • 放在服务内
  • 靠近资源
  • 粒度更细

3️⃣ 限流本身也要被限流

这是很多系统忽略的一点:

  • Redis 限流 → Redis 也要保护
  • Gateway → 也需要自我保护策略

例如:

  • Redis 超时直接放行 / 拒绝
  • 限流服务降级为本地策略

九、事故总结

这次事故并不是“限流没用”,而是:

  • 限流实现成本过高
  • 限流位置选择错误
  • 忽略了入口层的吞吐特性

最终导致:

系统没被流量打垮,却被“保护机制”先拖垮


十、写在最后

限流不是越统一越好,
入口不是越重越安全。

在分布式系统中:

任何保护机制,如果本身不可控,都会成为新的风险点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1150302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习毕设选题推荐:基于python-CNN卷积神经网络对海洋壳类生物识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

芯片的“免疫系统”:为AI大模型芯片设计硬件级安全漏洞检测单元

当大语言模型以每秒数万亿次的计算在芯片上运行时,一个隐藏的硬件漏洞可能导致整个AI系统崩溃或数据泄露。如何在硬件层面构建实时的安全防线? 最近,研究人员发现超过38%的硬件设计包含潜在安全漏洞,这些漏洞一旦被利用,可能导致AI模型参数被窃取或计算过程被干扰。 传统…

智能合约团队协作:提示工程架构师的AI Prompt方案,统一开发规范

智能合约团队协作:提示工程架构师的 AI Prompt 方案与统一开发规范 摘要/引言 在智能合约开发领域,团队协作至关重要。随着人工智能(AI)技术的发展,提示工程在智能合约开发中展现出巨大潜力。然而,团队成员…

Kafka入门:从零开始掌握消息队列

前言在当今的分布式系统架构中,消息队列已经成为不可或缺的核心组件。Apache Kafka作为一款高吞吐量、低延迟的分布式消息系统,被广泛应用于大数据处理、日志收集、流式处理等场景。一、Kafka是什么?Apache Kafka是一个分布式流处理平台&…

鸿蒙后台任务:ServiceExtensionAbility 中短时任务和长时任务到底怎么选?

网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…

小白学C指针 *

1. & 取地址符 - “在哪里?” int a 10; // a 是个变量,值是 10 &a // 这是 a 的地址(门牌号),比如 0x7ffeeb0b1234比喻: a 你家的电视机(值)&a …

计算机深度学习毕设实战-基于python-CNN卷积神经网络对海洋壳类生物识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2024年AI原生应用在事实核查领域的最新研究进展

当AI成为“真相侦探”:2024年AI原生事实核查的进化与突破 关键词 AI原生应用、事实核查、大语言模型(LLM)、多模态推理、实时核查、可信AI、知识图谱 摘要 在虚假信息像“数字病毒”一样蔓延的今天,事实核查已成为维护信息生态的“免疫系统”。但传统核查…

【小程序】订单数据缓存 以及针对海量库存数据的 懒加载+数据分片 的具体实现方式

订单数据缓存 以及针对海量库存数据的 懒加载数据分片 的具体实现方式,结合UniApp微信小程序的技术栈,分两部分详细拆解落地思路和核心代码,既讲逻辑也给可落地的实现方案。 一、订单数据缓存的实现(低网环境适配核心)…

救命神器2026专科生必看!8个AI论文网站深度测评与推荐

救命神器2026专科生必看!8个AI论文网站深度测评与推荐 2026年专科生论文写作必备工具测评 随着AI技术的不断进步,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面对市场上琳琅满目的论文辅助平台,如何选择真正适合自己需…

FHIR 中 _summary 参数

前言 在构建基于 HL7 FHIR(Fast Healthcare Interoperability Resources)标准的医疗信息系统时,开发者和架构师常常面临一个关键问题:如何在保证数据完整性的同时,优化网络传输效率与客户端处理性能? FHI…

AI自动化编排:从入门到精通(基于Dify构建AI智能系统)

目录第一篇:范式重构 —— AI 编排底层基石第1章 AI 自动化编排:开启“人机协同”新时代1.1 从命令式编程到声明式编排1.2 LLM 为什么需要“手脚”:AI 应用的三阶段演化1.3 AI 编排的核心目标:让系统具备行动能力1.4 技术选型逻辑…

Nuxt3全栈开发实战指南

目录第一篇:全栈基石 —— Nuxt 核心概念篇第 1 章:NuxtJS 的前世今生与生态位现代 Web 开发的痛点(SEO、白屏、开发效率)什么是 NuxtJS:Vue 3 的超集与全栈框架SSR(服务端渲染)、SSG&#xff0…

为什么AI算法工程师年薪能破百万?大厂高薪岗位学习指南与实战经验分享_月薪35-50k 16薪

大模型算法工程师成为当前薪资最高的技术岗位,月薪中位数近3万元,顶尖人才年薪破百万。字节、腾讯等大厂大量扩招AI人才,DeepSeek等开出高达154万年薪。然而多数求职者能力不足以满足企业需求。《AI算法工程师培养计划》由一线大厂专家主讲&a…

深度学习计算机毕设之基于python-CNN深度学习的卷积神经网络对狗的行为识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

不用卡尺怎么测量复杂零件尺寸?告别卡尺,精准高效:SIMSCAN-E手持扫描仪在复杂零件检测中的革命性应用

告别卡尺,精准高效:SIMSCAN-E手持扫描仪在复杂零件检测中的革命性应用图1:思看科技(SCANTECH)—全球领先的三维视觉产品与解决方案提供商一、机械加工与来料检测的挑战:传统测量方法的局限在机械加工和来料…

【毕业设计】深度学习基于python-CNN深度学习对宠物体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【毕业设计】深度学习基于python-CNN深度学习对宠物体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

南昌出租车打表价格为3.15元/公里,没有燃油费,大家觉得贵吗?2026.1.1

南昌出租车打表价格为3.15元/公里,没有燃油费,大家觉得贵吗?

【课程设计/毕业设计】基于机器学习python-CNN深度学习对宠物体型识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…