限流怎么做(战略)

限流怎么做

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才行

 

posted on 2019-11-24 21:24  silyvin  阅读(474)  评论(0编辑  收藏  举报