1、使用Openresty进行限流, 使用漏桶原理进行设计

和路由系统设计类似。

LUA脚本去通过变量去redis取值,从redis中得到队列的大小、漏和桶的大小。

然后通过比较,队列大小与漏和桶进行比较,确定是否对此请求进行放行。

1、如果队列大小大于桶直接返回错误。

2、如果队列大于漏需要进行等待。

3、请求的等待时间取决于队列的大小和漏的大小。

例如队列是20,漏是5, 等待时间是 20 / 5 = 4s

这样就可以做到先进入的请求先完成。