在 2016年5月28日星期六 UTC+8上午6:04:57,agentzh写道:
Hello!
2016-05-20 2:04 GMT-07:00 Guanglin Lv:
>
> 值得说明的是,这两个都是对平均速率进行控制,并不适合电商防攻击防黄牛场景;
>
这种说法并不正确。lua-resty-limit-traffic 和 nginx 的 ngx_limit_xxx
模块并不是对平均速率进行控制,而是请求粒度的。瞬时速率提高也是不能通过的。这里使用的是 leaky bucket 算法。
的确,瞬时速率提高是不能通过,但问题是会被提前拦截。要知道电商的抢购时期,流量是陡增的,行为和我们用ab模拟类似,瞬时增长到一个峰值,然后持续几分钟;
比如:限制是每秒最多10W请求,用lua-resty-limit-traffic 和 nginx 的 ngx_limit_xxx都会被提前拦截;基本上从第二个请求就会被拦截;
这是不符合预期的,我有参与过电商抢购的LB流量分担业务,使用shared_dict实现了这种场景的限流;