漏桶算法: 通过nginx配置实现QPS限速。
#设置请求并发量 qps=1,不设置burst,会同时处理并发的请求,但是由于我们只设置了1个qps,所以同一时间内的请求,只有一个是正常的,其他都是失败的。
http配置limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s
在想限速的server字段中配置limit_req zone=one;
配置后,用压测工具进行压测请求,会发现基本上会严格要求我们在nginx中设置的并发量。
burst配置
请求以队列的形式依次进行处理,而不是5个请求同时处理。
会将前五个请求放到桶里面,后面的请求放在队列里面(不会放弃连接),延迟等待处理。
快速失败配置nodelay
在桶外面等待的延迟请求,直接失败返回。