限流|限流算法

限流是为了防止系统因资源耗尽而停止服务,常见分类包括合法性验证限流、容器限流和服务端限流。本文重点介绍服务端限流的四种算法:固定窗口计数、滑动窗口计数、漏桶算法和令牌桶算法。固定窗口算法存在时间窗口临界突变问题,滑动窗口对此有所改善。漏桶算法以恒定速率处理请求,适合平滑流量,但对突发流量响应不佳。令牌桶算法能适应突发流量,启动时有缓慢加速过程。
摘要由CSDN通过智能技术生成

一、概念

限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而停止服务。

二、限流分类

限流的分类如下所示:

合法性验证限流:比如验证码、IP 黑名单等,这些手段可以有效的防止恶意攻击和爬虫采集;最常规的业务手段。

容器限流:比如 Tomcat、Nginx 等限流手段,其中 Tomcat 可以设置最大线程数(maxThreads),当并发超过最大线程数会排队等待执行;而 Nginx 提供了两种限流手段:一是控制速率,二是控制并发连接数;

服务端限流:比如我们在服务器端通过限流算法实现限流,本文介绍的重点。

三、常见的限流算法

1、固定窗口计数(Fixed window counter)

固定窗口算法又叫计数器算法,是一种简单方便的限流算法。主要通过一个支持原子操作的计数器来累计 1 秒内的请求次数,当 1 秒内计数达到限流阈值时触发拒绝策略。每过 1 秒,计数器重置为 0 开始重新计数。

滑动窗口特点:

固定窗口计数缺点也非常明显,在进行周期切换时,上一个周期的访问总数会立即置为0,这可能导致在进行周期切换时可能出现流量突发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值