Spring Cloud Gateway 基于 Redis 的限流中,令牌桶容量、补充速率与分布式限流粒度如何共同定义请求边界?
旗舰版来源:alibaba高级工程师分布式限流粒度Redis令牌桶算法Spring Cloud Gateway限流限流与降级策略
草稿
答案解析
Spring Cloud Gateway 基于 Redis 的限流,通常使用令牌桶模型来定义请求边界,核心参数包括令牌桶容量 burstCapacity、令牌补充速率 replenishRate,以及限流键的粒度。
replenishRate 表示单位时间内补充的令牌数量,通常按每秒计算。例如设置为 100,表示稳定情况下每秒允许通过 100 个请求。burstCapacity 表示令牌桶最大容量,它决定了系统能够承受的瞬时突发流量。例如容量设置为 200,即使稳定速率只有每秒 100 个请求,桶中最多也能积累 200 个令牌,因此短时间内可以放行最多 200 个请求,前提是每个请求消耗一个令牌。
如果配置了 requestedTokens,它表示单个请求需要消耗的令牌数。默认一般是 1。如果一个请求消耗 2 个令牌,那么实际允许的稳定请求速率约为 replenishRate / 2,瞬时可通过的请求数约为 burstCapacity / 2。因此请求消耗量也会参与请求边界的计算。
请求是否能够通过,可以简单理解为:当前令牌数不少于本次请求所需令牌数就
登录后查看完整内容
