原創轉載請注明出處: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/