到底是漏桶算法能处理突发流量还是令牌桶能处理突发流量
令牌桶:
1 指定速率放入令牌到桶中,不可超过桶容量
2 请求可以取得令牌则不进行限流
漏桶
1 水注入桶中,当桶满了则溢出进行限流
2 桶已指定速率流出,流空则不在流出
场景:
1 假设令牌桶容量500,注入速度为10unit/sec
那么说明满负载时流量为10qps/s,但假设令牌放满,则可以应对500流量获取
2 假设漏桶容量500,水流速度为10unit/sec
那么说明满负载时流量为10qps/s,但假设桶已流空,也以应对500流量获取?[可以让500流量被接收,但处理是匀速的]
那么两者都可以面对突发流量?
结论:
1 实际上令牌桶可以应对突发的,而漏桶是不可以的;
2 令牌桶适应于上游调用自身时进行限流,可达到【场景1】的目的
3 漏桶适应于对调用下游进行限流, 当【场景2】有500流量允许通过后
最关键的不是说这些流量可以马上调用下游,而是按照水的流速调用下游 这才是为什么漏桶是不具备应对突发流量
漏桶是流出的流量按匀速处理,而令牌桶无此要求;仅供参考
参见百度百科解释