有疑问,综上所述,匀速排队并不能算严格的漏桶算法。
1.有排队意味着可堆积,满足宽进,在队列积压高于消费速率时,消费为1s中5次且稳定,符合严出,故判定为漏桶算法。
2.假设队列为空,以1s的内部运作的暂态来看。在800ms时瞬间有五个请求进来。如果该匀速算法与谷歌的ratelimit一样,那么800ms这一瞬间可以并行消费4个消息,在1000ms时消费最后的1个消息。结果这1s的消费速率还是5个消息。但集中在最后200ms消费,0-799ms一条消息也没有消费。这就具备了令牌桶消费峰值流量的特性。所以站在1s内的消费情况来看,其特性其实是令牌桶算法。(1)中提到的队列积压后匀速的情况,其实是令牌桶峰值消耗过后的匀速(放入令牌的速率)消费。
展开