人人都能看懂的 6 种限流实现方案(纯干货)_其它综合

来源:脚本之家  责任编辑:小易  

字谜 1、字谜:皇帝新衣——袭 2、字谜:一流水准 ——淮 3、字谜:石达开 ——研 4、字谜:拱猪入门——阂 5、字谜:格外大方——回 6、字谜: 走出深闺人结识——佳 7、字谜:一千零一夜——歼 8、字谜:七十二小时——晶 9、字谜:床前明月光——旷 10、字谜:需要一半,留下一半——雷 11、字谜:一口咬住多半截——名 12、字谜: 一月一日非今天——明 13、字谜: 要一半,扔一半——奶 14、字谜: 综合门市——闹 15、字谜: 不是冤家也碰头——硼 16、字谜: 上气接下气 ——乞 17、字谜: 四方来合作,贡献大一点——器 18、字谜: 贪前稍变就成穷——贫 19字谜:格外大方——回 20字谜: 半布春秋——秦 歇后语 瞎子进烟馆----------摩登。(摸灯)。 空中布袋------------装疯。(装风)。 宋江的军师----------无用。(吴用)。 老太婆上鸡窝--------笨蛋。(奔蛋)。 卖草帽的丢扁担------留神。(留绳)。 哥哥不在家----------少来。(嫂来)。 外甥打灯笼----------照旧。(照舅)。 雨打黄梅头----------倒霉。(倒梅)。 半两棉花------------免谈。(免弹)。 秃子打伞------------无法无天。(无发无天)。 矮子过渡------------安心。(淹心)。 马店买猪------------没那事。(没那市)。 腊月天气------------动手动脚。(冻手冻脚)。 父亲向儿子磕头------岂有此理。(岂有此礼)。 公共厕所仍石头------引起公愤。(引起公粪)。 反穿皮袄------------装佯。(装羊)。 孔夫子搬家----------净是输。(净是书)。 孕妇走独木桥--------铤而走险。(挺而走险)。 外婆死了儿子--------无救。(无舅)。 老公拍扇------------凄凉。(妻凉)。 秀才的毛巾----------包输。(包书)。 乌龟爬门槛----------但看此一番。(但看此一翻)。 针尖尚挑毛巾--------不足为奇。(不足为旗)。 钝刀破竹------------想不开。(响不开)。 电线杆上绑鸡毛------好大的e79fa5e98193e58685e5aeb931333335323439胆子。(好大的掸子)。 磕瓜子磕出臭虫------什麼人都有。(什麼仁都有)。 灯草打鼓------------不想。(不响)。 灯草拐杖------------做不了主。(做不了拄)。 盐店里谈天----------闲得没事做。(咸得没事做)。 张天师过海不用船----自有法度。(自有法渡)。 隔窗吹喇叭----------名声在外。(鸣声在外)。 龙王爷搬家----------厉害。(离海)。 老九的兄弟----------老实。(老十)。 空棺材出葬----------目中无人。(木中无人)。 王八中解元----------规矩。(龟举)。 笑话 一个口音很重的县长到村里作报告:兔子们,虾米们,猪尾巴!不要酱瓜,咸菜太贵啦! 翻译:同志们,乡民们,注意吧!不要讲话,现在开会啦! 县长讲完以后,主持人说:咸菜请香肠酱瓜! 翻译:现在请乡长讲话! 乡长说:兔子们,今天的饭狗吃了,大家都是大王八! 翻译:同志们,今天的饭够吃了,大家都是大碗吧! 不要酱瓜,我捡个狗屎给你们舔舔. 翻译:不要讲话,我讲个故事给你们听听对联南通州 北通州 南北通州通南北 春读书 秋读书 春秋读书读春秋 东当铺 西当铺 东西当铺当东西 望江楼,望江流,望江楼下望江流,江楼千古,江流千古 印月井,印月影,印月井中印月影,月井万年,月影万年 赛诗台,赛诗才,赛诗台上赛诗才,诗台绝世,诗才绝世 白塔街,黄铁匠,生红炉,烧黑炭,冒青烟,闪蓝光,淬紫铁,坐北朝南打东西 淡水湾,苦农民,戴凉笠,弯酸腰,顶辣日,流咸汗,砍甜蔗,养妻教子育儿孙 望天空,空望天,天天有空望空天 求人难,难求人,人人逢难求人难 过年苦,苦过年,年年苦过年年过 一杯清茶,解解解元之渴 二曲天音,乐乐乐师之心 七弦妙曲,乐乐乐府之音 炭去盐归,黑白分明山水货 竹横麻竖,青黄不接短长帘 竹横麻竖,青黄交错软硬帘 月照纱窗,个个孔明诸葛亮 风送花圃,阵阵畹华梅兰芳 烟沿艳檐烟燕眼 雾捂鸟屋雾物无,第一次回答可获2分,答案被采纳可获得悬赏分和额外20分奖励。1.字谜:三口重叠,莫把品字猜.(打一字) 目2.字谜:一字有四笔,没横也没竖,妈妈猜不着,爸爸笑嘻嘻.(打一字) 父3,字谜:夺取一半,还剩一半.(打一字) 达、过4.字谜:镜中人.(打一字) 入5.字谜:一万零一撇.(打一字) 厉6.谜语:彩虹落人间,横跨大江边;车马上边驰,舟船下面过.(打一建筑物名) 桥7.字谜:一人立旁边.(打一字) 傍8.字谜:上边一块田,下边一条川,三山头朝下,二月紧相连.(打一字) 用 9.字谜:一加一.(打一字) 王、丰10.字谜:南方有一人,身背两葫芦,喜的是杨柳木,怕的是洞庭湖.(打一字) 火11.字谜:拿不出手.(打一字) 合 12.谜语:不怕剪刀剪,就怕e79fa5e98193e4b893e5b19e31333335323463没光线,我走他也走,是我不是我.(打一自然现象) 影子13.字谜:一出头就长角.(打一字) 午 14.字谜:加一点有四边.(打一字) 万15.字谜:两根树干六个枝,中间有路无人走.(打一字) 非16.字谜:找到一半.(打一字) 划 17.字谜:晒.(打一字)酱(将酉)1、牛角抹油—又尖又滑2、兔子尾巴—长不了3、挂羊头卖狗肉—有名无实4、龙王跳海—回老家5、热包子打狗—有去无回 谐音笑话:1.一个乡里开会,由于谐音,村长说:“兔子们,虾米们,不要浆瓜,咸菜太贵了。\”(同志们,乡民们,不要讲话,现在开会了。)主持人说:“咸菜请香肠浆瓜。\”(现在请乡长讲话。)乡长说:“兔子们,虾米们,今天的饭狗吃了,大家都是大王八。\”(同志们,乡民们,今天的饭够吃了、大家都用大碗吧)2.新上任的知县是山东人,因为要挂帐子,他对师爷说:“你给我 去买两根竹竿来。” 师爷把山东腔的“竹竿\”听成了“猪肝\”,连忙答应着,急急地跑 到肉店去,对店主说:“新来的县太爷要买两个猪肝,你是明白人, 心里该有数吧!” 店主是个聪明人,一听就懂了,马上割了两个猪肝,另外奉送 了一副猪耳朵。 离开肉铺后,师爷心想:“老爷叫我买的是猪肝,这猪耳朵当然 是我的了……”于是便将猎耳包好,塞进口袋里。回到县衙,向知县 禀道:“回禀太爷,猪肝买来了!\” 知县见师爷买回的是猪肝,生气道:“你的耳朵哪里去了!\” 师爷一听,吓得面如土色,慌忙答道: “耳……耳朵……在此……在我……我的口袋里!\” 3.见鸡而作 从前有一个地主,很爱吃鸡,佃户租种他家的田,光交租不行, 还得先送一只鸡给他。 有一个叫张三的佃户,年终去给地主交租,并佃第二年的田。 去时,他把一只鸡装在袋子里,交完租,便向地主说起第二年佃田 的事,地主见他两手空空,便两眼朝天地说:“此田不予张三种。\” 张三明白这句话的意思,立刻从袋子里把鸡拿了出来。地主见 了鸡,马上改口说:“不予张三却予谁?\” 张三说:“你的话变得好快呵!\” 地主答道:“方才那句话是‘无稽(鸡)之谈’,此刻这句话是‘见 机(鸡)而作’。” 4.有“机\”可乘 有一个商品推销员去广州出差,到北京后,由于想乘飞机前 往,因怕经理不同意报销,便给经理发了一封电报:“有机可乘,乘 否?”经理接到电报,以为是成交之\“机”已到,便立即回电:\“可乘就 乘。” 这个推销员出差回来报销旅差费时,经理以不够级别,乘坐飞 机不予报销的规定条款,不同意报销飞机票费。推销员拿出经理回 电,经理口瞪口呆。 5.地名有关 元旦晚上,小弟带两位侨生到家晚餐,一个性情开朗,一个较 为拘谨。 席间,那位开朗的同学笑指拘谨的同学给我们介绍说:“他是 缅甸来的,所以比较腼腆。”随后他举起酒杯向大家敬酒,仰首一饮 而尽,接着说:“我是仰光来的。\” 6.校长在学期结束时的校务会议上,对人事行政效率之低,大发 雷霆。他说:“负责董事业务的不懂事;负责人事管理的不省人事; 身为干事的又不干事!”\r%A谐音歇后语1.矮子爬楼梯——巴不得(迫切盼望)2.矮子过河——安(淹)心3.庵庙里的尼姑——没福(夫)4.熬尽了灯油——烧心(芯)5.白菜叶子炒大葱--亲(青)上加亲(青)6.打架揪胡子--谦(牵)虚(须)7.大船载太阳--勉强度(渡)日8.大粪池里游泳--不怕死(屎)古诗中的谐音1.春蚕到死丝(思)方尽2.东边日出西边雨,道是无情却有晴(情)郎中陈亚,他为 人诙谐,非常爱好文字游戏,曾以中药名写诗百余首,被时人誉为“药诗\”。如3.“风雨前湖夜,轩窗半夏凉\”、4.“但看车前牛岭上,十家皮没五家皮\”等诗句,巧用谐音、双关修辞将前胡、半夏、车前、五加皮等中药糅进诗中,5.陈亚和友人蔡襄在路上看到一个和尚在求雨,赤膊自晒,非常可笑。陈亚随口讽刺道:“不雨若令过半夏,应定晒作葫芦巴\”(诗中半夏、葫芦巴是药名)。 笑话什么都齐了!www.zgxue.com防采集请勿采集本网。

为了上班方便,去年我把自己在北郊的房子租出去了,搬到了南郊,这样离我上班的地方就近了,它为我节约了很多的时间成本,我可以用它来做很多有意义的事,最起码不会因为堵车而闹心了,幸福感直线上升。

地球只有一个,生态环境,是要靠每一个公民来维护的。现在,周围的环境都正在变化。花草枯萎,动物也正在面临频的危机。环境的恶化都是人类一手造成的,而恢复地球的美丽,也只有人类才能保护好

但即使这样,生活也有其他的烦恼。南郊的居住密度比较大,因此停车就成了头痛的事,我租的是路两边的非固定车位,每次只要下班回来,一定是没有车位停了,因此我只能和别人的车并排停着,但这样带来的问题是,我每天早上都要被挪车的电话给叫醒,心情自然就不用说了。

选择镇流器需要根据灯管功率大小去选择,就是40W灯管只能选择40W的镇流器,并且首选电子镇流器,品牌大一些的,质量有保证。实际上灯管已经逐步被淘汰,还是选择LED灯比较好。

但后来几天,我就慢慢变聪明了,我头天晚上停车的时候,会找第二天限行的车并排停着,这样我第二天就不用挪车了,这真是限行给我带来的“巨大红利”啊。

因为你不会养号 不会运营 系统会误判你这copy个是工作室批量养号误判 一 养号阶段 三天内百不发任何内容 只点赞关注转发 二 新号阶段 前五个视频需要高质量的内容 也是抖音最快打标度签的时机 最

而车辆限行就是一种生活中很常见的限流策略,他除了给我带来了以上的好处之外,还给我们美好的生活环境带来了一丝改善,并且快速增长的私家车已经给我们的交通带来了巨大的“负担”,如果再不限行,可能所有的车都要被堵在路上,这就是限流给我们的生活带来的巨大好处。

.你的图是一个可以提供1.2×60=72mA左右电流的阻容降压电路。图中: R1是C1的放电电阻,用来在切断电路时泄放C1的残余电荷,对电路工作基本没什么影响,一般选300K~500K即可。

从生活回到程序中,假设一个系统只能为 10W 人提供服务,突然有一天因为某个热点事件,造成了系统短时间内的访问量迅速增加到了 50W,那么导致的直接结果是系统崩溃,任何人都不能用系统了,显然只有少人数能用远比所有人都不能用更符合我们的预期,因此这个时候我们要使用「限流」了。

3、充电模式是否有被限流。如果使用不当的方式充电也可能会被限制充电电流,导致你的电源适配器的功率再大也无法发挥作用。扩展资料: 我们知道,国内的民用额定电压为220V,是不能够直接给手机充电的,

限流分类

限流的实现方案有很多种,磊哥这里稍微理了一下,限流的分类如下所示: 合法性验证限流:比如验证码、IP 黑名单等,这些手段可以有效的防止恶意攻击和爬虫采集; 容器限流:比如 Tomcat、Nginx 等限流手段,其中 Tomcat 可以设置最大线程数(maxThreads),当并发超过最大线程数会排队等待执行;而 Nginx 提供了两种限流手段:一是控制速率,二是控制并发连接数; 服务端限流:比如我们在服务器端通过限流算法实现限流,此项也是我们本文介绍的重点。

合法性验证限流为最常规的业务代码,就是普通的验证码和 IP 黑名单系统,本文就不做过多的叙述了,我们重点来看下后两种限流的实现方案:容器限流和服务端限流。

容器限流

Tomcat 限流

Tomcat 8.5 版本的最大线程数在 conf/server.xml 配置中,如下所示:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="150" redirectPort="8443" />

其中 maxThreads 就是 Tomcat 的最大线程数,当请求的并发大于此值(maxThreads)时,请求就会排队执行,这样就完成了限流的目的。

小贴士:maxThreads 的值可以适当的调大一些,此值默认为 150(Tomcat 版本 8.5.42),但这个值也不是越大越好,要看具体的硬件配置,需要注意的是每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用,并且线程越多 GC 的负担也越重。最后需要注意一下,操作系统对于进程中的线程数有一定的限制,Windows 每个进程中的线程数不允许超过 2000,Linux 每个进程中的线程数不允许超过 1000。

Nginx 限流

Nginx 提供了两种限流手段:一是控制速率,二是控制并发连接数。

控制速率

我们需要使用 limit_req_zone 用来限制单位时间内的请求数,即速率限制,示例配置如下:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server { location / { limit_req zone=mylimit; }}

以上配置表示,限制每个 IP 访问的速度为 2r/s,因为 Nginx 的限流统计是基于毫秒的,我们设置的速度是 2r/s,转换一下就是 500ms 内单个 IP 只允许通过 1 个请求,从 501ms 开始才允许通过第 2 个请求。

我们使用单 IP 在 10ms 内发并发送了 6 个请求的执行结果如下:

从以上结果可以看出他的执行符合我们的预期,只有 1 个执行成功了,其他的 5 个被拒绝了(第 2 个在 501ms 才会被正常执行)。

速率限制升级版

上面的速率控制虽然很精准但是应用于真实环境未免太苛刻了,真实情况下我们应该控制一个 IP 单位总时间内的总访问次数,而不是像上面那么精确但毫秒,我们可以使用 burst 关键字开启此设置,示例配置如下:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;server { location / { limit_req zone=mylimit burst=4; }}

burst=4 表示每个 IP 最多允许4个突发请求,如果单个 IP 在 10ms 内发送 6 次请求的结果如下:

从以上结果可以看出,有 1 个请求被立即处理了,4 个请求被放到 burst 队列里排队执行了,另外 1 个请求被拒绝了。

控制并发数

利用 limit_conn_zone 和 limit_conn 两个指令即可控制并发数,示例配置如下:

limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server { ... limit_conn perip 10; limit_conn perserver 100;}

其中 limit_conn perip 10 表示限制单个 IP 同时最多能持有 10 个连接;limit_conn perserver 100 表示 server 同时能处理并发连接的总数为 100 个。

小贴士:只有当 request header 被后端处理后,这个连接才进行计数。

服务端限流

服务端限流需要配合限流的算法来执行,而算法相当于执行限流的“大脑”,用于指导限制方案的实现。

有人看到「算法」两个字可能就晕了,觉得很深奥,其实并不是。算法就相当于操作某个事务的具体实现步骤汇总,其实并不难懂,不要被它的表象给吓到哦~

限流的常见算法有以下三种: 时间窗口算法 漏桶算法 令牌算法

接下来我们分别看来。

1.时间窗口算法

所谓的滑动时间算法指的是以当前时间为截止时间,往前取一定的时间,比如往前取 60s 的时间,在这 60s 之内运行最大的访问数为 100,此时算法的执行逻辑为,先清除 60s 之前的所有请求记录,再计算当前集合内请求数量是否大于设定的最大请求数 100,如果大于则执行限流拒绝策略,否则插入本次请求记录并返回可以正常执行的标识给客户端。

滑动时间窗口如下图所示:

其中每一小个表示 10s,被红色虚线包围的时间段则为需要判断的时间间隔,比如 60s 秒允许 100 次请求,那么红色虚线部分则为 60s。

我们可以借助 Redis 的有序集合 ZSet 来实现时间窗口算法限流,实现的过程是先使用 ZSet 的 key 存储限流的 ID,score 用来存储请求的时间,每次有请求访问来了之后,先清空之前时间窗口的访问量,统计现在时间窗口的个数和最大允许访问量对比,如果大于等于最大访问量则返回 false 执行限流操作,负责允许执行业务逻辑,并且在 ZSet 中添加一条有效的访问记录,具体实现代码如下。

我们借助 Jedis 包来操作 Redis,实现在 pom.xml 添加 Jedis 框架的引用,配置如下:

<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version></dependency>

具体的 Java 实现代码如下:

import redis.clients.jedis.Jedis;public class RedisLimit { // Redis 操作客户端 static Jedis jedis = new Jedis("127.0.0.1", 6379); public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 15; i++) { boolean res = isPeriodLimiting("java", 3, 10); if (res) { System.out.println("正常执行请求:" + i); } else { System.out.println("被限流:" + i); } } // 休眠 4s Thread.sleep(4000); // 超过最大执行时间之后,再从发起请求 boolean res = isPeriodLimiting("java", 3, 10); if (res) { System.out.println("休眠后,正常执行请求"); } else { System.out.println("休眠后,被限流"); } } /** * 限流方法(滑动时间算法) * @param key 限流标识 * @param period 限流时间范围(单位:秒) * @param maxCount 最大运行访问次数 * @return */ private static boolean isPeriodLimiting(String key, int period, int maxCount) { long nowTs = System.currentTimeMillis(); // 当前时间戳 // 删除非时间段内的请求数据(清除老访问数据,比如 period=60 时,标识清除 60s 以前的请求记录) jedis.zremrangeByScore(key, 0, nowTs - period * 1000); long currCount = jedis.zcard(key); // 当前请求次数 if (currCount >= maxCount) { // 超过最大请求次数,执行限流 return false; } // 未达到最大请求数,正常执行业务 jedis.zadd(key, nowTs, "" + nowTs); // 请求记录 +1 return true; }}

以上程序的执行结果为:

正常执行请求:0

正常执行请求:1

正常执行请求:2

正常执行请求:3

正常执行请求:4

正常执行请求:5

正常执行请求:6

正常执行请求:7

正常执行请求:8

正常执行请求:9

被限流:10

被限流:11

被限流:12

被限流:13

被限流:14

休眠后,正常执行请求

此实现方式存在的缺点有两个: 使用 ZSet 存储有每次的访问记录,如果数据量比较大时会占用大量的空间,比如 60s 允许 100W 访问时; 此代码的执行非原子操作,先判断后增加,中间空隙可穿插其他业务逻辑的执行,最终导致结果不准确。

2.漏桶算法

漏桶算法的灵感源于漏斗,如下图所示:

滑动时间算法有一个问题就是在一定范围内,比如 60s 内只能有 10 个请求,当第一秒时就到达了 10 个请求,那么剩下的 59s 只能把所有的请求都给拒绝掉,而漏桶算法可以解决这个问题。

漏桶算法类似于生活中的漏斗,无论上面的水流倒入漏斗有多大,也就是无论请求有多少,它都是以均匀的速度慢慢流出的。当上面的水流速度大于下面的流出速度时,漏斗会慢慢变满,当漏斗满了之后就会丢弃新来的请求;当上面的水流速度小于下面流出的速度的话,漏斗永远不会被装满,并且可以一直流出。

漏桶算法的实现步骤是,先声明一个队列用来保存请求,这个队列相当于漏斗,当队列容量满了之后就放弃新来的请求,然后重新声明一个线程定期从任务队列中获取一个或多个任务进行执行,这样就实现了漏桶算法。

上面我们演示 Nginx 的控制速率其实使用的就是漏桶算法,当然我们也可以借助 Redis 很方便的实现漏桶算法。

我们可以使用 Redis 4.0 版本中提供的 Redis-Cell 模块,该模块使用的是漏斗算法,并且提供了原子的限流指令,而且依靠 Redis 这个天生的分布式程序就可以实现比较完美的限流了。

Redis-Cell 实现限流的方法也很简单,只需要使用一条指令 cl.throttle 即可,使用示例如下:

> cl.throttle mylimit 15 30 601)(integer)0 # 0 表示获取成功,1 表示拒绝2)(integer)15 # 漏斗容量3)(integer)14 # 漏斗剩余容量4)(integer)-1 # 被拒绝之后,多长时间之后再试(单位:秒)-1 表示无需重试5)(integer)2 # 多久之后漏斗完全空出来

其中 15 为漏斗的容量,30 / 60s 为漏斗的速率。

3.令牌算法

在令牌桶算法中有一个程序以某种恒定的速度生成令牌,并存入令牌桶中,而每个请求需要先获取令牌才能执行,如果没有获取到令牌的请求可以选择等待或者放弃执行,如下图所示:

我们可以使用 Google 开源的 guava 包,很方便的实现令牌桶算法,首先在 pom.xml 添加 guava 引用,配置如下:

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.2-jre</version></dependency>

具体实现代码如下:

import com.google.common.util.concurrent.RateLimiter;import java.time.Instant;/** * Guava 实现限流 */public class RateLimiterExample { public static void main(String[] args) { // 每秒产生 10 个令牌(每 100 ms 产生一个) RateLimiter rt = RateLimiter.create(10); for (int i = 0; i < 11; i++) { new Thread(() -> { // 获取 1 个令牌 rt.acquire(); System.out.println("正常执行方法,ts:" + Instant.now()); }).start(); } }}

以上程序的执行结果为:

正常执行方法,ts:2020-05-15T14:46:37.175Z

正常执行方法,ts:2020-05-15T14:46:37.237Z

正常执行方法,ts:2020-05-15T14:46:37.339Z

正常执行方法,ts:2020-05-15T14:46:37.442Z

正常执行方法,ts:2020-05-15T14:46:37.542Z

正常执行方法,ts:2020-05-15T14:46:37.640Z

正常执行方法,ts:2020-05-15T14:46:37.741Z

正常执行方法,ts:2020-05-15T14:46:37.840Z

正常执行方法,ts:2020-05-15T14:46:37.942Z

正常执行方法,ts:2020-05-15T14:46:38.042Z

正常执行方法,ts:2020-05-15T14:46:38.142Z

从以上结果可以看出令牌确实是每 100ms 产生一个,而 acquire() 方法为阻塞等待获取令牌,它可以传递一个 int 类型的参数,用于指定获取令牌的个数。它的替代方法还有 tryAcquire(),此方法在没有可用令牌时就会返回 false 这样就不会阻塞等待了。当然 tryAcquire() 方法也可以设置超时时间,未超过最大等待时间会阻塞等待获取令牌,如果超过了最大等待时间,还没有可用的令牌就会返回 false。

注意:使用 guava 实现的令牌算法属于程序级别的单机限流方案,而上面使用 Redis-Cell 的是分布式的限流方案。

总结

本文提供了 6 种具体的实现限流的手段,他们分别是:Tomcat 使用 maxThreads 来实现限流;Nginx 提供了两种限流方式,一是通过 limit_req_zone 和 burst 来实现速率限流,二是通过 limit_conn_zonelimit_conn 两个指令控制并发连接的总数。最后我们讲了时间窗口算法借助 Redis 的有序集合可以实现,还有漏桶算法可以使用 Redis-Cell 来实现,以及令牌算法可以解决 Google 的 guava 包来实现。

需要注意的是借助 Redis 实现的限流方案可用于分布式系统,而 guava 实现的限流只能应用于单机环境。如果你嫌弃服务器端限流麻烦,甚至可以在不改代码的情况下直接使用容器限流(Nginx 或 Tomcat),但前提是能满足你的业务需求。

好了,文章到这里就结束了,期待我们下期再会~

参考 & 鸣谢

https://www.cnblogs.com/biglittleant/p/8979915.html

到此这篇关于人人都能看懂的 6 种限流实现方案(纯干货)的文章就介绍到这了,更多相关限流内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

交通童谣:1、交通灯交通灯,会说话,黄灯说,请注意,红灯说,快停下,绿灯说,请走吧,牢记它们说的话,按照黄红绿行动,做礼貌的好宝宝。2、保镖安全带,真好笑,喜欢把我爸爸抱。我的爸爸一开车,他就抱住胸和腰。爸爸乖乖让他抱,因为他是好“保镖”。开车系上安全带,高速公路上放心跑。3、交通礼貌歌交通法规不可少,礼貌交通很重要。红灯停,绿灯行,斑马线上你先行。互相谦让懂礼貌,交通安全有保障。4、交通安全儿歌小朋友们要记牢,交通安全数第一。安全法规心中记,出门在外不大意。横过马路要注意,红黄绿灯要看清。左右看看无车行,快步透过是要领。交警叔叔真辛苦,为保安全多忙碌。风雨无阻路中站,无私奉献保安全。5、交通安全儿歌红领巾,守纪律,交通安全要牢记。早上起来去上学,小区车多要注意。乘车必须守秩序,排队上车不拥挤。自行车是工具,骑车带人不允许。大马路,车真多,人来人往真热闹。斑马线,画中间,左看右看别抢先。信号灯,红黄绿,红停绿行记心间。走天桥,过通道,生活幸福人欢笑。礼貌人,守交通,翻护栏,绝不能。红灯闪,立刻停,黄灯闪,不要走。绿灯闪,要慢走,马路中,左右看。守交通,学做人,交通好,人人笑。6、注意交通安全交通安全很重要,交通规则要牢记;从小养成好习惯,不在路上玩游戏。行走应走人行道,没有行道往右靠。天桥地道横行道,横穿马路离不了。一慢二看三透过,莫与车辆去抢道。骑车更要守规则,不能心急闯红灯;转弯车速必减慢,抢行猛拐酿车祸。乘车安全要注意,遵守秩序要排队;手、头不能出车窗,扶紧把手莫忘记。7、交通安全最重要太阳当空照,花儿对我笑。我背书包e79fa5e98193e78988e69d8331333431346339上学校,情绪多欢畅。我去上学校,带着小黄帽。过马路时不跑闹,司机叔叔对我笑,夸我是个好孩子,牢记交通安全最重要!内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • nginx限流方案的实现(三种方式)
  • 高并发系统的限流详解及实现
  • 使用nginx实现分布式限流的方法
  • 基于redis实现分布式应用限流的方法
  • go如何实现http请求限流示例
  • 基于redis的限流器的实现(示例讲解)
  • 浅谈koa服务限流方法实践
  • 来自csdn的"无限流"分页程序
  • nginx 如何实现读写限流的方法
  • 一文搞懂nginx限流(简单实现)
  • http头信息总结
  • 到初创公司工作的五个理由
  • antd通过 filterdropdown 自定义按某天时间搜索功能
  • php实现html标签自动补全代码
  • 使用 ffmpeg 命令拼接mp3音频文件异常问题及解决方法
  • 详细介绍http cookie
  • 分享下get和post的真正区别
  • git版本回退_动力节点java学院整理
  • aop的实现原理_动力节点java学院整理
  • 初探 soa(补充)
  • 交通童谣6句
  • 谁有六个字谜?急啊!!
  • 川端的《雪国》到底要表达什么?有点看不懂。怎么的就得了个诺贝尔文学奖?
  • 怎么看懂财务报表
  • 保护环境,人人有责。作为当代的大学生,我们该如何从自身做起?谈谈你的看法。
  • 镇流器的选用
  • 抖音号还没发作品怎么就会被限流
  • 阻容降压电路中限流电阻阻值到底怎么选择?有没有跟明确的一个范围啊?求助
  • 手机冲电快慢是看充电器的输出大小还是看输入大小?
  • 家里LED灯镇流器坏了,想从网上买个替换,铭牌看不懂啊
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页其它综合nginx限流方案的实现(三种方式)高并发系统的限流详解及实现使用nginx实现分布式限流的方法基于redis实现分布式应用限流的方法go如何实现http请求限流示例基于redis的限流器的实现(示例讲解)浅谈koa服务限流方法实践来自csdn的"无限流"分页程序nginx 如何实现读写限流的方法一文搞懂nginx限流(简单实现)到初创公司工作的五个理由antd通过 filterdropdown 自定义按某天时间搜索功能php实现html标签自动补全代码使用 ffmpeg 命令拼接mp3音频文件异常问题及解决方法详细介绍http cookie分享下get和post的真正区别git版本回退_动力节点java学院整理aop的实现原理_动力节点java学院整理初探 soa(补充)最新idea2020注册码永久激活(激活删除svn三种方法delsvn(windows+intellij idea激活码获取方法(ic/s和b/s两种架构的概念、区别和网址(url)支持的最大长度是多少5个linux平台程序员最爱的开发工url中斜杠/和反斜杠\的区别小结提示“处理url时服务器出错”和“支付宝 接口开发帮助(asp,php,as最适合人工智能开发的5种编程语言 附人工iisschlp.wsc [88,25] 属性值无效 : prog多种语言(big5\gbk\gb2312\utf8\shift_ji微信报警 zabbix实现详解荐书|程序员书单必不可少系列之算法篇delphi使用chilkat 组件和库从sftp下载文intellij idea 2020最新注册码(亲测有效,玩转markdown 分享几个需要用到的工具科学知识:二进制、八进制、十进制、十六vscode的几项基本配置详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved