Nginx 为什么用漏桶,而 Guava 用令牌桶?一文看懂限流算法的底层逻辑


在双十一大促、明星热搜或者遭受到恶意攻击时,系统的流量会瞬间飙升。
如果把服务器比作一家餐厅,平时每分钟进 10 个客人,系统运行良好。
突然来了 1000 个客人,如果全放进来,厨房(CPU/数据库)立刻就会炸锅,餐厅直接倒闭(宕机)。

为了防止这种情况,我们需要一个无情的**“守门员”,把超过处理能力的请求挡在门外。这就是限流 (Rate Limiting)**。

在微服务网关(如 Sentinel, Hystrix, Nginx)中,最经典的两位守门员就是:漏桶算法令牌桶算法


💻 一、技术分析:流速的控制艺术

1. 漏桶算法 (Leaky Bucket) —— “强行削峰”

  • 原理: 想象一个底部有个小孔的桶。

  • 入水: 请求像水一样,以任意速度灌进桶里。

  • 出水: 桶底的水滴,永远以固定的速率流出(比如每秒 10 滴)。

  • 溢出: 如果桶满了(缓存队列满了),新进来的水直接溢出(拒绝请求)。

  • 核心特征:强行平滑流量。不管外面的请求波动多大,发给后端的请求永远是匀速的。

  • 缺点:无法应对突发流量。哪怕现在桶是空的,请求也只能一滴一滴地流,处理效率有时会显得太死板。

2. 令牌桶算法 (Token Bucket) —— “支持突发”

  • 原理: 想象一个专门放令牌的盒子。

  • 生产令牌: 系统以固定速率往盒子里扔令牌(比如每秒扔 10 个)。

  • 容量限制: 盒子有最大容量(比如 100 个),满了就不扔了。

  • 消费令牌: 请求来了,必须从盒子里拿走一个令牌才能进。如果盒子里没令牌,就拒绝。

  • 核心特征:允许突发。如果平时没人来,盒子里攒满了 100 个令牌。突然来了 50 个请求,它们可以瞬间拿走 50 个令牌同时处理,不需要排队。

  • 优点: 既限制了平均速度,又兼顾了突发的洪峰。


🎡 二、故事场景:医院与游乐场

为了彻底搞懂它们的区别,我们看看日常生活中的两个经典场景。

1. 漏桶算法 —— “医院打吊瓶”

  • 场景: 你生病了,护士给你挂点滴。
  • 入水: 护士拿来一整袋药水(大量的突发请求),一下子挂在架子上。
  • 出水: 无论袋子里剩多少药,滴管(漏桶出口)永远是“滴答、滴答”匀速滴下来的。
  • 为什么: 因为病人的血液(后端服务器)承受能力有限,如果一大袋药水瞬间灌进去,人就没了。
  • 结论:漏桶是为了保护脆弱的下游系统,不让它被冲垮。

2. 令牌桶算法 —— “游乐场检票口”

  • 场景: 迪士尼乐园的快速通道。

  • 生产令牌: 工作人员(系统)每秒钟往检票箱里放 10 张票。

  • 存票: 如果这一分钟没人来,箱子里就积攒了 100 张票(达到上限)。

  • 突发情况:

  • 突然来了一个 50 人的旅行团(突发流量)。

  • 因为箱子里有 100 张票,这 50 个人每人拿一张,瞬间全部通过,不需要像打吊瓶那样排队。

  • 紧接着又来了 80 人。前 50 人拿走了剩下的 50 张票,后 30 人没票了,只能乖乖等工作人员发新票。

  • 结论:令牌桶是为了在限制平均流量的同时,允许用户“爽一把”(处理突发请求)。


🥊 三、总结:Nginx 与 Guava 的选择

维度漏桶 (Leaky Bucket)令牌桶 (Token Bucket)
流出速率恒定(平滑)可变(允许瞬间飙升)
突发流量不支持支持
核心作用削峰填谷,保护下游限制平均速率,兼顾体验
典型代表Nginx(limit_req模块)Guava(RateLimiter类)
适用场景流量整形,防止数据库被打挂网关限流,API 调用配额

一句话总结:

  • 如果你希望请求走得**“稳”**,选漏桶。
  • 如果你希望请求走得**“快”**,选令牌桶。

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

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

相关文章

git: merge所做修改用git log -p看不到

解决: 增加-m参数可以看到merge的修改 $ git log -p -m app/models/banners.py 手册说明:-mThis flag makes the merge commits show the full diff like regular commits; for each merge parent, a separate log ent…

学霸同款2026 AI论文平台TOP9:本科生毕业论文写作全测评

学霸同款2026 AI论文平台TOP9:本科生毕业论文写作全测评 2026年学术写作工具测评:为何需要一份权威榜单? 随着人工智能技术的不断进步,越来越多的本科生开始依赖AI论文平台来提升写作效率与质量。然而,面对市场上琳琅满…

vue3基于Python协同过滤算法的图书馆图书借阅推荐系统设计与实现217413115

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 该研究设计并实现了一个基于Vue3前端框架与Python后端协同过滤算法的图书馆图书借阅推荐系统。系统通过分析用户历史借阅行为&…

宿迁市宿城宿豫沭阳泗阳泗洪区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育

经教育部教育考试院认证、全国雅思教学质量监测中心联合指导,参照《2024-2025中国大陆雅思成绩大数据报告》核心标准,结合宿迁市宿城区、宿豫区、沭阳县、泗阳县、泗洪县6800份考生调研问卷、76家教育机构全维度实测…

用 MySQL SELECT SLEEP() 优雅模拟网络超时与并发死锁

你写了一个接口,配置了 MyBatis 的查询超时时间为 3 秒(readTimeout3000)。 测试痛点: 怎么验证这个超时配置生效了? 笨办法: 造几千万条数据,写一个巨复杂的 SQL 让它跑慢点。土办法&#xff1…

vue3-python县志捐赠与借阅信息管理系统的设计与实现16069432

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 该系统基于Vue3和Python技术栈,设计并实现了一个县志捐赠与借阅信息管理平台,旨在解决传统县志管理中效…

2026年AI优化推荐:多场景实战排名,解决企业获客与品牌曝光核心痛点 - 十大品牌推荐

2026年AI优化推荐:技术自研与效果可视服务商全景解析 2026年,生成式AI技术的深度渗透使得AI优化(GEO)成为企业获取智能流量、驱动业务增长的关键战略。然而,市场服务商能力各异,从平台型巨头到垂直领域专家,企业…

Kali Linux 内网渗透:深度工程实施手册

第一阶段:隧道与代理(内网渗透的 “高速公路”)在内网中,你经常遇到的情况是:你只能控制一台 Web 服务器,但它身后有 10.10.10.x/24 的核心网段。你的 Kali 无法直接访问内网 IP,必须通过 Web 服…

2026年AI优化推荐:基于多行业实战评价,针对流量分散与转化痛点指南 - 十大品牌推荐

2026年五大标杆AI优化公司权威行业测评TOP5,AI优化公司哪家强 随着生成式人工智能技术全面渗透商业场景,企业获取流量与用户认知的核心阵地已从传统搜索引擎转向AI对话界面。AI优化(此处特指生成式引擎优化GEO)作为…

多智能体协作驱动的多模态医疗大模型系统:RAG–KAG双路径知识增强与架构的设计与验证(上)

摘要 多模态医疗大模型在医学影像解读与临床文本自动化生成方面展现了突破性的潜力,为智慧医疗的发展注入了强劲动力。然而,在面向真实世界、高风险的临床环境部署时,这类模型普遍面临三大核心挑战:一是多源异构数据(如…

【教程4>第10章>第22节】基于FPGA的图像Laplace边缘提取算法开发——Laplace拉普拉斯卷积运算模块

目录 1.软件版本 2.Laplace拉普拉斯卷积运算模块的实现分析 3.Laplace拉普拉斯卷积运算模块的verilog实现 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 《★教程4:FPGA/MATLAB/Simulink联合…

避坑指南:精准度高、售后好的国产不锈钢电子地磅品牌推荐,上海花潮实业实力解析 - 品牌推荐大师1

面对市场上琳琅满目的电子地磅品牌和型号,许多采购者在挑选时往往感到迷茫:究竟哪一款才适合自己?如何判断一台地磅的质量好坏?是看重价格、量程,还是品牌?本文将以上海花潮实业有限公司的不锈钢电子地磅为例,为…

深入解析:概率论与数理统计第一章 概率论的基本概念

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

软件测试在职人员,如何持续学习?

中国有句俗话叫“活到老,学到老”,虽然进入职场的我们已经远离了学校,但这并不代表着就可以不再学习。持续性的学习不仅能增长我们的见识,也能让职场中的我们变得更加优秀。但在忙碌的职场生活中,职场中软件测试同学该…

技术文章:解决 PowerShell 模块加载无响应问题的实用指南

技术文章:解决 PowerShell 模块加载无响应问题的实用指南 摘要 本文通过分析 Invoke-Obfuscation 模块加载案例,深入探讨了 PowerShell 模块加载的各种机制,并提供了一套系统性的故障排除方法。文章适合 PowerShell 开发者和系统管理员阅读。…

2026国内最新螺丝定制厂家最新top5排行榜发布!广东等地优质组合螺丝/端子螺丝/螺丝定制/螺丝加工公司及供应商综合实力盘点 - 品牌推荐2026

随着制造业智能化升级与新能源、汽车电子等高端领域蓬勃发展,螺丝作为核心基础紧固件,其定制化需求呈现爆发式增长,对精度、性能与交付效率的要求达到新高度。但行业普遍存在规格匹配度不足、品质稳定性欠缺、定制周…

提拔快的项目经理,打死也不会告诉别人的3个反向操作!

职场里项目经理想往上走,真🙅不是光靠埋头干活就行。 有些人天天埋头干活,项目接了不少,班也加了不少,可职位就是不升;反观另一些人,看着没怎么干活,反而升得飞快。 很多人觉得人家…

探讨忻州比较好的geo推广机构情况,如何选择 - 工业品牌热点

在AI搜索重塑企业获客逻辑的当下,GEO推广作为抢占AI搜索流量的核心手段,成了ToB企业破局获客难的关键。但市面上GEO推广机构鱼龙混杂,企业该如何选到搜得到、接得住、效果稳的合作伙伴?本文通过五个高频问题,结合…

大模型学习指南:10个核心概念详解,收藏学习不走弯路

这篇文章是写给AI初学者的指南,详细解释了10个让小白头疼的大模型核心概念:Token、Context Window、Temperature等。作者用通俗易懂的比喻和实例,将复杂技术概念转化为普通人能理解的内容,帮助读者真正掌握AI时代的入门知识。文章…

AI一周重要会议和活动概览(1.19-1.25)

一、【会议通知】第40届AAAI人工智能国际会议将于2026年1月20日至27日在新加坡博览中心举行AAAI人工智能会议(AAAI Conference on Artificial Intelligence)由人工智能促进会(AAAI)主办,是人工智能领域中历史最悠久、涵…