分布式限流算法
作者:bin一、漏桶算法
请求是做水滴,往桶里面装,如果桶满了,就溢出来(走拒绝策略)。
然后桶只有一个小小的洞,按固定速率消费桶中的任务。
通常我们用队列实现桶, 队列的最大长度即桶的容量。
二、令牌桶算法
桶中装固定数量的令牌,每个线程来获取执行时,获取一个令牌,当令牌消耗完了,新来的任务就会走拒绝策略。
固定速率往桶里面放令牌或者用完还回去也行
区别:
令牌桶算法可以保证同一时刻,只有固定数量的任务在并发。
漏桶算法,可以保证每个任务按一定间隔时间执行,但是如果任务执行时间过长的话,那么同一时间任务也会很多。
业内一般都采用令牌桶算法去做