zl程序教程

您现在的位置是:首页 >  其他

当前栏目

几种限流算法

2023-03-15 23:26:29 时间

安全稳定的Open API必须有限频措施,防止接口被某个用户非预期超量调用,影响正常用户使用

常用的限流算法有直接计数法,漏斗算法,令牌桶算法

计数法

单位时间内设定限频阈值,如果访问超过该阈值则拒绝。实现简单,缺点是容易在小突发流量情况下,拒绝很多请求,影响服务可用性

漏斗算法(Leaky Bucket)

核心思想就是请求收到后,会先进入漏斗,然后再按照限定速度请求服务,及可以达到限流的目的,也可以保证后台收到的请求都是平稳的。 但是也有一个缺点,就是突然流量的时候,会导致处理时间太长。当然流量更大的时候会被拒绝,这个是正常的。

常见实现方式有:限制大小的队列

令牌桶(Token Bucket)

核心思想是所有请求需要再令牌桶获取到令牌才可以处理, 同时有一个服务匀速的往令牌桶装令牌。 可以满足一定的突发请求处理,如果超过令牌桶的请求,也会被拒绝

常见实现方式有:gauva包中的RateLimiter

参考