限流怎么做(战略)
限流怎么做
1 信号量
2 线程池
3 Redis 的 INCR 和 EXPIRE zset
4 redis 漏斗桶 reply
5 令牌桶
6 连接池
7 滑动窗口
原则:
假定:下游极限吞吐量qps,出现在最大并发数n,则
1)下游最大生产速度<=qps
2)上游同步生产的情况下,下游(限流池)并发请求数n2<=n <=等价=> 下游最大生产速度<=qps
3)上游异步生产的情况下,限流池并发数等价于无穷大,应主动根据qps限流,不能根据限流池并发数
注意,限流本身会导致溢出,比如说上游持续每秒生产1000个请求,db只能撑500,那么限流本身不能解决持续的业务输出,只能均匀化峰值的业务输出,使当时的下游服务安全,如果要解决持续的业务输出,db层用2个实例构建1000的qps才行