高并发
士多碧莉
不要做程序猿,要做工程狮,吼吼
展开
-
【接口限流】Python实现滑动时间窗口限流
滑动时间窗口,又称rolling window。为了解决计数器法统计精度太低的问题,引入了滑动窗口算法。比如下图,第二个和第三个组成的时间窗口明显不满足限流要求(单位时间内100个请求数)。滑动时间窗口也不是绝对精准的,这取决于拆分的精度,窗口拆分得越精细,窗口也就越平滑,限流得统计也越精确,但是造成的计算量也越大。窗口往后滑动一个小格子(0.1s)后 ,触发限流,由此看出,滑动时间窗口可以很大程度的避免计数器统计法带来的精度问题。时间窗口拆分为更小粒度,再来看看,前1s仍然满足限流要求。原创 2023-03-21 18:30:10 · 1029 阅读 · 1 评论 -
【接口限流】简单计数器Python实现固定窗口限流
限流是保证系统可用的一个重要手段,和消息队列相似,都是防止超负荷的流量直接打在服务上造成故障,但又有所不同,消息队列其中一个作用是削峰,但是带来的副作用是异步,业务流程需要配合,而限流则是对请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。如下图,相同颜色的格子组成1s,假设单位时间(1s)内限流数是100,那么下图的结构是初步满足需求的。分析问题主要的要素有:当前时间窗口内累计请求数、单位时间窗口允许的最大请求数、单位时间大小。更新时间窗口:每单位时间移动一个时间窗口。原创 2023-03-21 17:11:50 · 864 阅读 · 0 评论