概述
一般情况下,首页的并发量是比较大的,即使 有了多级缓存,当用户不停的刷新页面的时候,也是没有必要的,另外如果有恶意的请求 大量达到,也会对系统造成影响。而限流就是保护措施之一。
生活中限流对比
+ 水坝泄洪,通过闸口限制洪水流量(控制流量速度)。
+ 办理银行业务:所有人先领号,各窗口叫号处理。每个窗口处理速度根据客户具体业务而定,所有人排队等待叫号即可。若快下班时,告知客户明日再来(拒绝流量)
+ 火车站排队买票安检,通过排队 的方式依次放入。(缓存带处理任务)
nginx提供两种限流的方式:
- 一是控制速率
-
控制速率的方式之一就是采用漏桶算法。
-
漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率
-
请求到达以后接口以一定的速率响应,当访问频率超过接口响应速率就拒绝请求
-
-
- 二控制并发量(连接数)
-
配置限制固定连接数
-
利用连接数限制 某一个用户的ip连接的数量来控制流量。
-
同时限制与虚拟服务器的连接总数。