常见流量场景

  1. 业务流量:正常用户使用流量
  2. 突发流量:某些特定时间所产生的流量,例如双11
  3. 恶意流量:服务器被攻击所产生的流量

常见限流算法

  1. 基于计数器
  2. 基于滑动窗口
  3. 漏桶
  4. 令牌桶

1、基于计数器

image-20231205131106559

对于计数器算法,每隔固定一段时间限流固定流量,例如上图,2-3秒内限流500,4-5秒内限流500。但是3-4秒内可以拥有流量1000。导致可能会出现这种边界问题。边界之间流量值超过限定的流量

2、基于滑动窗口

image-20231205131852559

滑动窗口则是将时间进行滑动,第一次时间限制1-2秒,第二次是2-3秒,第三次是3-4秒,这样间隔粒度更小,是能解决临界问题,如果粒度够小的话。

3、基于漏桶

image-20231205132809225

漏桶算法,桶的大小一定,流出速度一定,如果流量突发很大,就会导致流量被抛弃。对突发流浪处理不是很好。

4、基于令牌桶

对于令牌桶,则是对桶算法的升级。对进去的流量需要去拿一个令牌,如果令牌被拿完了。就拒绝处理。请求被处理完成后会将令牌放入桶中。这种对于突发流量兼容也是不错的。只要令牌够的话,是能处理的。