
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
通过限流的方法来保护系统的稳定与安全是程序员经常会用到的一个方法,而本文我们就通过案例分析来简单了解一下,常见的限流算法都有哪些类型。
1、计数器算法
一种比较简单的限流实现算法;
原理:在指定周期内累加访问次数,当访问次数达到设定的闽值时,触发限流策略,当进入下一个时间周期时进行访问次数的清零;
存在临界问题:前一个周期的后半部分与后一个周期的前半部分的总访问次数可能超过阈值;
2、滑动窗口算法
是一种流量控制技术,在TCP网络通信协议中,就采用了滑动窗口算法来解决网络拥塞的情况;
原理:在固定窗口中分割出多个小时间窗口,分别在每个小时间窗口中记录访问次数,然后根据时间将窗口往前滑动并删除过期的小时间窗口。终只需要统计滑动窗口范围内的所有小时间窗口总的计数即可;
该算法解决了临界问题,Sentinel采用滑动窗口算法来实现限流;
3、令牌桶算法
是网络流量整形(TrafficShaping)和速率限制(RateLimiting)中常使用的一种算法;
原理:对于每一个请求,都需要从令牌桶中获得一个令牌,如果没有获得令牌,则需要触发限流策略;
由于令牌桶有固定的大小,当请求速度小于令牌生成速度时,令牌桶会被填满。所以令牌桶能够处理突发流量,也就是在短时间内新增的流量系统能够正常处理,这是令牌桶的特性;
4、漏桶限流算法
主要作用是控制数据注入网络的速度,平滑网络上的突发流量;
原理:在漏桶算法内部同样维护一个容器,这个容器会以恒定速度出水,不管上面的水流速度多快,漏桶水滴的流出速度始终保持不变;
消息中间件就使用了漏桶限流的思想;
请求速度大于漏桶流出水滴的速度时,触发限流策略;
与令牌桶算法的区别:漏桶无法处理短时间内的突发流量,漏桶限流算法是一种恒定速度的限流算法;
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。