限流的概念以及作用我前一篇文章已经做了介绍:并发限流算法的实践
目录
限流的几种算法 :
1、令牌桶算法
2、漏桶算法
3. 滑动时间窗口计数器算法
5. 全局限流
6. 客户端限流
7. API网关限流
8. 熔断与降级
本篇重点:
具体实现:
限流的几种算法 :
这里主要讲在分布式系统中,限流是控制系统负载、防止过载的重要手段。以下是一些常见的限流实现方法:
1、令牌桶算法
-
原理:系统以固定速率向桶中添加令牌,请求需要获取一个令牌才能执行。桶有最大容量,当桶满时,新令牌会被丢弃。
-
优点:能够平滑流量,同时允许突发流量。
2、漏桶算法
-
原理:请求像水一样流入桶,桶以固定速率“漏”出水,超出桶容量的请求将被丢弃。
-
优点:流量稳定且不受突发流量影响。
3. 滑动时间窗口计数器算法
-
原理:
1、当有新的请求来临时将窗口滑动到该请求来临的时刻
2、判断窗口内的请求数是否超过了限制, 超过则拒绝服务, 否则请求通过
3、丢弃滑动窗口以外的请求
4、使用一个滑动窗口来动态计算请求数,可以更精确地控制流量。
-
实现:使用Redis等工具维护计数器,并设定过期时间。
5. 全局限流
-
原理:在服务端实现全局限流,通过数据库或分布式缓存(如Redis)来保持全局请求计数。
-
注意:需考