配置文件:
/*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 来源的连接数 。
并不是所有的连接都会被模块计数;只有那些正在被处理的请求(这些请求的头信息已被完全读入)所在的连接才会被计数 。
文章插图
推荐阅读
- 非常有用的16个Linux 服务器监控命令
- 服务器被挖矿了?用这个思路可以彻底解决
- 云服务器中三种常用的Linux系统镜像
- lol出现无法连接服务器 英雄联盟无法连接服务器
- 如何计算存储和服务器的机械磁盘性能?
- ssh访问服务器和snap/apt的使用
- App与服务器的通信接口如何才能设计得更好?
- 梦见一大一小两头黄牛回家 梦见一大一小两头黄牛爬上山顶
- Mac完全免费的Apache服务器环境套件
- python实现客户端和服务器端传输图片的代码