网易首页 > 网易号 > 正文 申请入驻

了解什么是限流?

0
分享至

专注于Java领域优质技术,欢迎关注

作者:Java3y

前言

之前在学习的时候也接触不到高并发/大流量这种东西,所以限流当然是没接触过的了。在看公司项目的时候,发现有用到限流(RateLimiter),顺带了解一波。

一、限流基础知识介绍

为啥要限流,相信就不用我多说了。

  • 比如,我周末去饭店吃饭,但是人太多了,我只能去前台拿个号,等号码到我的时候才能进饭店吃饭。如果饭店没有限流怎么办?一到饭点,人都往里冲,而饭店又处理不了这么多人流,很容易就出事故(饭店塞满了人,无路可走。饭店的工作人员崩溃了,处理不过来)
  • 回到代码世界上也是一样的,服务器能处理的请求数有限,如果请求量特别大,我们需要做限流(要么就让请求等待,要么就把请求给扔了)

在代码世界上,限流有两种比较常见的算法:

  • 令牌桶算法
  • 漏桶算法

1.1 什么是漏桶算法

比如,现在我有一个桶子,绿色那块是我能装水的容量,如果超过我能装下的容量,再往桶子里边倒水,就会溢出来(限流):

我们目前可以知道的是:

  • 桶子的容量是固定的(是图上绿色那块)
  • 超出了桶子的容量就会溢出(要么等待,要么直接丢弃)

OK,现在我们在桶子里挖个洞,让水可以从洞子里边流出来:

桶子的洞口的大小是固定的,所以水从洞口流出来的速率也是固定的

所以总结下来算法所需的参数就两个:

  • 桶子的容量
  • 漏水的速率

漏桶算法有两种实现:

  1. 不允许突发流量的情况:如果进水的速率大于出水的速率,直接舍弃掉多余的水。比如,我的桶子容量能装100L,但我的桶子出水速率是10L/s。此时,如果现在有100L/s的水进来,我只让10L的水进到桶子,其余的都限流。(限定了请求的速度
  2. 允许一定的突发流量情况:我的桶子能装100L,如果现在我的桶子是空的,那么这100L的水都能进我的桶子。我以10L/s的速率将这些水流出,如果还有100L的水进来,只能限流了。

经过上面的分析我们就知道:

漏桶算法可以平滑网络上的突发流量(因为漏水的速率是固定的)

1.2 什么是令牌桶算法

现在我有另外一个桶子,这个桶子不用来装水,用来装令牌:

令牌会一定的速率扔进桶子里边,比如我1秒扔10个令牌进桶子:

桶子能装令牌的个数有上限的,比如我的桶子最多只能装1000个令牌。

每个请求进来,就会去桶子拿一个令牌

  • 比如这秒我有1001个请求,我就去桶子里边拿1001个令牌,此时可能会出现两种情况:
  • 桶子里边没有1001个令牌,只有1000个,那没拿到令牌的请求只能被阻塞了(等待)
  • 桶子里边有1001个令牌,所有请求都可以执行。

令牌桶算法支持网络上的突发流量

**漏桶和令牌桶的区别:**从上面的例子估计大家也能看出来了,漏桶只能以固定的速率去处理请求,而令牌桶可以以桶子最大的令牌数去处理请求

二、RateLimiter使用

RateLimiter是Guava的一个限流组件,我这边的系统就有用到这个限流组件,使用起来十分方便。

引入pom依赖:

<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>20.0</version></dependency>

RateLimiter它是基于令牌桶算法的,API非常简单,看以下的Demo:

我们可以从结果看出,每秒只能执行三个:

三、分布式限流

RateLimiter是一个单机的限流组件,如果是分布式应用的话,该怎么做?

可以使用Redis+Lua的方式来实现,大致的lua脚本代码如下:

Java代码如下:

解释:

  • Java代码传入key和最大的限制limit参数进lua脚本
  • 执行lua脚本(lua脚本判断当前key是否超过了最大限制limit)
  • 如果超过,则返回0(限流)
  • 如果没超过,返回1(程序继续执行)
来源:掘金 链接:https://juejin.im/post/5d8036a3e51d4561ff6668c3

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
西甲欧冠5席位全出炉!贝蒂斯时隔20年再参赛,26岁安东尼终圆梦

西甲欧冠5席位全出炉!贝蒂斯时隔20年再参赛,26岁安东尼终圆梦

我爱英超
2026-05-13 05:38:11
“好豪迈的洛丽塔”,165cm未成年女儿穿搭火了,家长尴尬不敢认

“好豪迈的洛丽塔”,165cm未成年女儿穿搭火了,家长尴尬不敢认

妍妍教育日记
2026-05-12 18:46:53
释永信被一女子爆料:她们姐妹住少林寺3天,争着往释永信房间跑

释永信被一女子爆料:她们姐妹住少林寺3天,争着往释永信房间跑

江山挥笔
2026-03-23 15:40:31
网传华工男生在教室偷拍女生?校方:情况属实,依规给予处分

网传华工男生在教室偷拍女生?校方:情况属实,依规给予处分

南方都市报
2026-05-13 17:36:31
确认了!正式签约加盟!又一中国新星征战NCAA

确认了!正式签约加盟!又一中国新星征战NCAA

篮球实战宝典
2026-05-13 16:04:51
夏窗引援目标曝光!利物浦列12人大名单,英超或迎来大结局

夏窗引援目标曝光!利物浦列12人大名单,英超或迎来大结局

锐评利物浦
2026-05-13 23:54:07
1987年,马季宴请冯巩等几位徒弟,这一桌菜,可不便宜

1987年,马季宴请冯巩等几位徒弟,这一桌菜,可不便宜

喜文多见01
2026-05-12 10:54:13
拒绝3000万,降薪辅佐库里!如今32岁神射手,沦为边缘弃子

拒绝3000万,降薪辅佐库里!如今32岁神射手,沦为边缘弃子

体育大朋说
2026-05-13 10:53:39
两次嫁给梁靖崑,退圈安心照顾2个儿子,如今老公转型当大学教授

两次嫁给梁靖崑,退圈安心照顾2个儿子,如今老公转型当大学教授

混沌录
2026-05-13 23:46:19
《低智商犯罪》张一昂立了大功,结局为什么被调回档案室?

《低智商犯罪》张一昂立了大功,结局为什么被调回档案室?

白公子探剧
2026-05-13 21:21:23
天降横财!男子入狱前,花120万买股票,6年后出狱,变成4.9亿!

天降横财!男子入狱前,花120万买股票,6年后出狱,变成4.9亿!

川渝视觉
2026-05-13 22:09:30
夺冠代价!阿森纳冲刺双冠或送切尔西5800万,哈弗茨成关键

夺冠代价!阿森纳冲刺双冠或送切尔西5800万,哈弗茨成关键

星耀国际足坛
2026-05-13 14:03:59
官方:CCTV5转播U17女足亚洲杯半决赛,中国vs朝鲜

官方:CCTV5转播U17女足亚洲杯半决赛,中国vs朝鲜

懂球帝
2026-05-13 13:57:10
大疆多款产品降价,Pocket3至高直降1400元,Pocket4仍无现货

大疆多款产品降价,Pocket3至高直降1400元,Pocket4仍无现货

鲁中晨报
2026-05-13 16:06:55
28.8亿只卖30.3万!恒大这笔"废纸债权",为何29人疯抢780轮?

28.8亿只卖30.3万!恒大这笔"废纸债权",为何29人疯抢780轮?

新浪财经
2026-05-11 00:01:46
特朗普来访能否增进对华合作、减少两国分歧?

特朗普来访能否增进对华合作、减少两国分歧?

中国网
2026-05-13 14:23:10
美股芯片股走低 高通、美光科技等涨幅收窄

美股芯片股走低 高通、美光科技等涨幅收窄

财联社
2026-05-13 21:40:13
越来越多的县城,只剩下体制内经济了!

越来越多的县城,只剩下体制内经济了!

黯泉
2026-05-13 11:15:55
韩国明星河智苑在杭州西湖无名无牌无人认,真正顶流的生存之道

韩国明星河智苑在杭州西湖无名无牌无人认,真正顶流的生存之道

小邵说剧
2026-05-12 08:25:28
突发!17个小时谈判破裂!三星电子5万名员工将罢工,损失或超1800亿元,公司股价一度跌超6%,对手公司大涨7%!韩总理紧急召开会议

突发!17个小时谈判破裂!三星电子5万名员工将罢工,损失或超1800亿元,公司股价一度跌超6%,对手公司大涨7%!韩总理紧急召开会议

每日经济新闻
2026-05-13 16:56:14
2026-05-14 00:16:49
Java架构技术
Java架构技术
专注于Java领域优质技术
502文章数 14662关注度
往期回顾 全部

科技要闻

腾讯一季度营收1964.6亿元 同比增9%

头条要闻

女子闪婚获千万房产99%份额闪离后起诉分割 法院判了

头条要闻

女子闪婚获千万房产99%份额闪离后起诉分割 法院判了

体育要闻

14年半,74万,何冰娇没选那条更安稳的路

娱乐要闻

白鹿掉20万粉,网友为李晨鸣不平

财经要闻

美国总统特朗普抵达北京

汽车要闻

C级纯电轿跑 吉利银河"TT"申报图来了

态度原创

家居
时尚
健康
教育
公开课

家居要闻

内在自叙,无域有方

专栏 | 进入心流后,不被洪流裹挟

干细胞能让人“返老还童”吗

教育要闻

1980年中考:6加6除6,等于多少?

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版