限流方案



高并发的情况下难免会用到限流方案的,这里仅提供思路


1. 合法性限流

高级验证码 + IP黑名单(短时间的操作)



2. 容器限流

Tomcat:设置最大线程数maxThread,超过则会排队

Nginx:控制速率、控制并发连接数

# 控制同一IP的访问频率,下面的5作为一个缓存数,即超过1r/s的请求,放入5个进缓存池,后面的拒绝掉
limit_req_zone $binary_remote_addr zone=rateLimit:10m rate=1r/s;

server {
	limit_req zone=rateLimit burst=5 nodelay;
}
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    limit_conn perip 1;
    limit_conn perserver 2;
}


3. 服务端限流

限流算法:

  • 漏桶算法:用redis的cell模块可以实现
  • 令牌算法:Google 开源的 guava 包实现



原文地址:https://www.cnblogs.com/Howlet/p/13175827.html