自学内容网 自学内容网

简单聊聊 限流算法

计数器

计数器算法,是在一个时间间隔内,比如一分钟内,对请求进行计数,然后将计数值和设置的最大值进行比较,如果超过了最大值,进行限流处理,拒绝请求。

他的优点是:算法简单,易于理解。

缺点是:在时间窗口临界点,如果突然请求增加,会对系统造成一定的压力,而且如果在一段时间内,如果时间窗口前段已经消耗完了计数,那么后一段时间将无法处理请求。

滑动窗口

滑动窗口是对计数器算法的一种改进,滑动窗口将时间窗口划分为多个小周期

例子

假设1分钟可以接收请求100

将1分钟分为10个滑动窗口,那么每个窗口代表6s,每个滑动窗口可以承载的请求数是10。

然后当时间线向前推进6s,我滑动窗口向前推进一格,我的可接收请求将+10,封顶100。

滑动窗口较好的解决了计数器模式中存在的问题,但是相对需要更多的计算资源和空间来维护多个滑动窗口。

漏桶

漏桶的主要作用是流量整形和速率限制,可以平滑突发流量。

在漏桶中,流量可以以任意速率接收请求,如果桶满了,则会拒绝请求。

在漏桶中,会以恒定的速率允许处理请求。

令牌桶

令牌桶的作用是流量整形和限制速率,和漏桶不同,允许再一定程度上处理突发流量。

在令牌桶中,会以恒定的速率产生令牌,进入到桶中。

请求需要去获取令牌,才能执行请求。

桶的大小是固定的。因此,突发流量最大可执行的速率和桶的最大容积有关。

在消耗完令牌后,只能以发令牌的速率执行。


原文地址:https://blog.csdn.net/sjdxx/article/details/142990653

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!