原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11632679.html
漏斗限流
漏斗限流是最常用的限流方法之一,另一个是令牌桶(比如:Guava RateLimiter)
漏斗的容量是有限的,如果将漏嘴堵住,然后一直往里面灌水,它就会变满,直至再也装不进去。如果将漏嘴放开,水就会往下流,流走一部分之后,就又可以继续往里面灌水。如果漏嘴流水的速率大于灌水的速率,那么漏斗永远都装不满。如果漏嘴流水速率小于灌水的速率,那么一旦漏斗满了,灌水就需要暂停并等待漏斗腾出一部分空间。
所以,漏斗的剩余空间就代表着当前行为可以持续进行的数量,漏嘴的流水速率代表着系统允许该行为的最大频率。
Redis-Cell
Redis4.0提供来一个限流Redis模块 —— Redis-Cell。该模块使用来漏斗算法,并提供了原子的限流指令。
该模块只有1条指令cl.throttle
Reference
https://redislabs.com/blog/redis-cell-rate-limiting-redis-module/