
服务限流的简单理解
服务限流
为什么要限流?
- 并发的确大(突发流量)
- 防止用户恶意刷接口
限流的实现方式
- Tomcat:可以设置最大连接数
- Nginx,漏桶算法
- SpringGateway网关,令牌桶算法
- 自定义拦截器

Nginx限流
控制流速
Nginx配置文件

语法:
limit_req_zone key zone rate
key
:定义限流对象,binary_remote_addr
就是一种key,表示使用客户端的IP地址作为限流键
zone
:service1RateLimit:10m
表示创建一个名为service1RateLimit
的限流区域,大小为10兆字节(代表限流区域可以存储的键值对数量)
rate
:最大访问速率,rate=10r/s
表示流速为每秒处理10个请求
burst=20
:相当于桶的大小
nodelay
:快速处理
控制并发连接数
Nginx配置文件

limit_conn perip 20
:对应的key是$binary_remote_addr
,表示限制单个IP同时最多能持有20个连接。
limit_conn perserver 100
:对应的key是$server_name
,表示虚拟主机(server) 同时能处理并发连接的总数。
Gateway限流
yml配置文件中,微服务路由设置添加局部过滤器RequestRateLimiter

key-resolver
:定义限流对象( ip 、路径、参数),需代码实现,使用spel表达式获取replenishRate
:令牌桶每秒填充平均速率。urstCapacity
:令牌桶总容量。

本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 千辰