前端限流: (比如按钮置灰,验证码回答问题等)
接入层限流: 大型微服务系统需要有接入层LVS,通过IP维度,地理维度限流,因为接入层无法解析HTTP协议
代理层限流: Nginx,根据IP,用户,访问设备(比如手机的设备号),连接数限流
服务层限流: Tomcat(Http连接数限流,线程数限流或者做一个Redis限流,就是设置1s内访问最大为1000,每次访问都计数器减1,当减到0的时候,就认为超过了QPS1000了
接口层限流: 线程数,计数器,Hystrix限流
业务方法限流: 具体业务方法设置限流
高并发限流-视频
请求先进入到漏桶里
漏桶以固定速度出水
当水流入速度过大会直接溢出,漏桶算法能强行限制数据的传输速率
使用场景: 消费能力不由漏桶服务方决定时
系统会以一个恒定的速度往桶里放入令牌
若请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,拒绝服务
他有处理突发请求量的特点: 因为桶内可以积攒令牌
使用场景: 消费能力由令牌桶服务方决定时
信号量是一个计数器,信号量维护了一个许可集,线程每次调用acquire()消耗一个许可,每次调用release()归还一个许可
Semaphore的内部维护了一个字段state,用来限制同一时间对共同资源的访问次数