分布式限流算法

分布式限流算法

目录

  • 分布式限流算法
    • 限流的维度
    • 分布式限流的主流方案
    • 分布式限流常见算法
      • 令牌桶算法
        • 令牌生成
        • 令牌获取
      • 漏桶算法
      • 滑动窗格算法

限流的维度

  1. 限制访问连接数
  2. 限制访问频率
  3. 设置黑白名单
  4. 限制传输速率
    分布式限流算法_第1张图片

分布式限流的主流方案

  1. Guava客户端组件
    该组件提供了RareLimiter等相关的限流支持类,该组件只能作用与当前服务器,无法很好的适用于分布式限流场景
  2. 网关层限流
    open gateway等组件
  3. 中间件限流
    redis,MQ等工具
  4. 其他工具
    阿里sentinel等

分布式限流常见算法

令牌桶算法

令牌桶算法是目前使用最为广泛的算法。其中分为两个角色,分别为:
1. 令牌,获取到令牌的请求才会被处理,其他的请求要么排队等候,要么直接被丢弃
2. ,用来装令牌的地方,全部请求都从这个桶中获取令牌。

分布式限流算法_第2张图片

令牌生成

这个过程涉及到令牌桶和令牌生成器,令牌桶就是一个装令牌的地方,而桶有一个容量,也就是说令牌桶所能容纳的令牌数量的一个固定的数值,对于令牌生成来说,它会以一个预定的速率向桶中增加令牌,当然这个速度可以是匀速的,也可以是非匀速的。

令牌获取

每个访问到的请求过来,必须要获取到一个令牌才能执行后续的操作,如果访问请求过多,一部分请求自然无法获取到令牌,我们可以设置一个缓冲队列来暂存这些多余的令牌。

漏桶算法

漏桶算法是将请求的数据包放在桶里面,如果桶满了,那么后面新来的数据包将被直接丢弃。桶中始终以一个固定的速度放行请求。
分布式限流算法_第3张图片

滑动窗格算法

优势在于时间跨度足够长的话,能平滑限流,
分布式限流算法_第4张图片

你可能感兴趣的:(算法,算法)