访问量一大服务器就挂?那是你不懂限流( 四 )

配置文件:
/*springmvc的配置文件中加入自定义拦截器*/<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.pptv.activityapi.controller.pointsmall.AccessLimitInterceptor"/> </mvc:interceptor></mvc:interceptors>访问效果如下,10s内访问接口超过4次以上就过滤请求,原理和计数器算法类似:

访问量一大服务器就挂?那是你不懂限流

文章插图
 
接入层限流
主要介绍nginx 限流,采用漏桶算法 。
限制原理:可一句话概括为:“根据客户端特征,限制其访问频率”,客户端特征主要指IP、UserAgent等 。使用IP比UserAgent更可靠,因为IP无法造假,UserAgent可随意伪造 。
用limitreq模块来限制基于IP请求的访问频率:http://nginx.org/en/docs/http/ngxhttplimitreqmodule.html也可以用tengine中的增强版:http://tengine.taobao.org/documentcn/httplimitreq_cn.html
1.并发数和连接数控制的配置:
访问量一大服务器就挂?那是你不懂限流

文章插图
 
2. ngxhttplimitconnmodule 可以用来限制单个IP的连接数:
ngxhttplimitconnmodule模块可以按照定义的键限定每个键值的连接数 。可以设定单一 IP 来源的连接数 。
并不是所有的连接都会被模块计数;只有那些正在被处理的请求(这些请求的头信息已被完全读入)所在的连接才会被计数 。
访问量一大服务器就挂?那是你不懂限流

文章插图
 




推荐阅读