限流的几种方案
nginx 限流
进行相关配置 语法:limit_req_zone key zone rate
1、key 定义限流对象 $binary_remote_addr 表示 根据客户端 ip 来限流
2、zone 定义共享内存来存储限访问信息,mylimit:10m 表示一个大小为 10M 的额名字为 mylimit 的内存区域。
3、rate 用于设置最大访问速率 ,rate、 =2r/s 表示每秒最多处理 10 个请求
限制访问频率(突发流量)ng 使用 burst=20 nodelay 表示这 20 个请求立马请求(也是说一定会立马处理),类似与缓存队列,
限制并发量 Nginx 的 ngx_http_limit_conn_module 模块提供了对资源连接数进行限制的功能,使用 limit_conn_zone 和 limit_conn 两个指令
limit_conn perip 20:对应的 key 是 $binary_remote_addr,表示限制单个 IP 同时最多能持有 20 个连接。
limit_conn perserver 100:对应的 key 是 $server_name,表示虚拟主机(server) 同时能处理并发连接的总数。注意,只有当 request header 被后端 server 处理后,这个连接才进行计数。
gateway 限流结合 Redis (要引入对应的包 spring-boot-starter-data-redis-reactive)实现限流(令牌桶算法):
配置 name 为 RequestRateLimiter 的 filter 设置参数
服务端限流利用 com.google.guava 实现限流
tomcat 限流配置 tomcat 的参数实现限流
评论