我正在尝试理解API网关使用的令牌桶算法,但是有一个场景对我来说没有意义。当突发小于速率时,算法是如何工作的?如果你这样做了,你的利率限制不是实际上是你的爆破限制,因为你永远不能从桶里提取更多的代币?
例如:速率= 100,突发= 50。
T0:没有请求,所以桶被填充到50。
T1:提出100个请求,因此50个被接受,50个被删除。
这种理解是正确的吗?如果是这样的话,你为什么会设定速率>突发?换言之,为何API网关会将其预设率设定为10,000,而爆至5,000呢?
发布于 2021-12-14 23:18:32
在0到1之间有很多次。
例如,速率= 100,突发50:
T= 0: 25发出请求,桶空到25
T= 1/4:水桶已装满50 (加费率/4)。提出25项请求,将桶空到25项。
T= 1/2:水桶已装满50 (加费率/4)。提出25项请求,将桶空到25项。
T= 3/4:水桶已装满50 (加费率/4)。提出25项请求,将桶空到25项。
等等。
令牌不断地被添加,并不是全部都在一个大块中。
这是一个简化。我想他们并没有告诉我们真正的实现是做什么的,但是它将类似于在新的请求出现时仅仅添加令牌,添加的令牌数量= (current_time - last_request_time) * rate,直到突发限制。
https://stackoverflow.com/questions/70355188
复制相似问题