【微服务7】微服务业务相关-限流

58 阅读1分钟

为什么要做限流(为了保证接口的正常运行)

  • 并发的确大(突发流量)
  • 防止用户恶意刷接口

image.png

限流的实现方式:

  1. Tomcat:设置最大连接数
  2. Nginx,漏桶算法
  3. 网关,令牌桶算法
  4. 自定义拦截器

image.png

Nginx限流-控制速率(突发流量)

image.png

image.png

image.png

Nginx限流-控制并发连接数

image.png

网关限流

yml配置文件中,微服务路由设置添加局部过滤器RequestRateLimiter

image.png

image.png

image.png

你们项目中有没有做过限流?怎么做的?

  1. 先介绍业务,什么情况下做限流,需要锁门QPS具体多少?
  • 我们当时有个活动,到了假期就会抢优惠券,QPS最高可以达到2000,平时10-50之间,为了应对突发流量,需要做限流。
  • 常规限流,为了防止恶意攻击,保护系统正常运行,我们当时系统最大能够承受最大的qps是多少(压测结果1000)
  1. nginx限流
  • 控制速率(突发流量),使用的漏桶算法实现过滤,让请求以固定的速率处理请求,可以应对突发流量
  • 控制并发数,限制单个ip的连接数,和并发连接的总数
  1. 网关限流
  • springcloud gateway中支持局部过滤器(RequestRateLimiter)做限流。使用的是令牌桶算法
  • 可以根据ip或者路径进行限流,可以设置每秒填充平均速率和令牌桶总容量