高并发流量限制 ------- 代币桶算法和泄漏桶算法
最编程
2024-03-07 14:15:19
...
用户在点击下单时,会在后端生成一个令牌(token),并存到redis中,然后又会从redis把对应的令牌读出来,若能成功读取,则能正常下单,若不能,证明生成令牌没成功,若没有令牌,用户是不能够正常下单的。
一、令牌桶算法
令牌桶算法的原理是系统以恒定的速率产生令牌,然后把令牌放到令牌桶中,令牌桶有一个容量,当令牌桶满了的时候,再向其中放令牌,那么多余的令牌会被丢弃;当想要处理一个请求的时候,需要从令牌桶中取出一个令牌,如果此时令牌桶中没有令牌,那么则拒绝该请求。
二、漏桶算法
把请求比作是水,水来了都先放进桶里,并以限定的速度出水,当水来得过猛而出水不够快时就会导致水直接溢出,即拒绝服务。
、
三、令牌桶算法VS漏桶算法
漏桶
漏桶的出水(处理请求)速度是恒定的,那么意味着如果瞬时大流量的话,将有大部分请求被丢弃掉(也就是所谓的溢出)。
令牌桶
生成令牌的速度是恒定的,而请求去拿令牌是没有速度限制的。这意味,面对瞬时大流量,该算法可以在短时间内请求拿到大量令牌,而且拿令牌的过程并不是消耗很大的事情。所以令牌桶能够处理突发的大流量。
四、限流工具类RateLimiter
Google开源工具包Guava提供了限流工具类RateLimiter,该类基于令牌桶算法来完成限流,非常易于使用。
上一篇: 速率限制令牌桶算法
下一篇: 流量限制算法 - 令牌桶和泄漏桶
推荐阅读
-
流量限制:计数器、泄漏桶、令牌桶 三大算法的原理与实践(史上最全)
-
接口流量限制算法:漏斗算法和令牌桶算法
-
流量限制算法 - 令牌桶和泄漏桶
-
高并发流量限制 ------- 代币桶算法和泄漏桶算法
-
高度并发系统的流量限制--泄漏桶算法和令牌桶算法 服务治理 - 流量限制(令牌桶算法)
-
流量限制算法和 Guava RateLimiter 令牌桶流量限制简介
-
接口流量限制算法:漏斗算法、令牌桶算法和 redis 流量限制
-
流量限制算法:漏斗算法和令牌桶算法
-
流量限制:计数器、泄漏桶、令牌桶 三大算法的原理与实践(史上最全) - 令牌桶流量限制
-
[5 分钟记住 8 份股票] 什么是代币桶流量限制算法?