固定窗口限流算法
Fixed Window Rate Limiting Algorithm固定窗口限流算法是在固定时间窗口(单位时间)内限制请求的数量。
将时间分成固定的窗口,并在每个窗口内限制请求的数量。
将请求按照时间顺序放入时间窗口,并计算该时间窗口内的请求数量,如果请求数量超出了限制,则拒绝该请求。
假设单位时间(固定时间窗口)是1秒,限流阀值为3。在单位时间1秒内,每来一个请求,计数器就加1,如果计数器累加的次数超过限流阀值3,后续的请求全部拒绝。等到1s结束后,计数器清0,重新开始计数。如下图:
优点: 固定窗口算法非常简单,易于实现和理解。
缺点: 存在明显的临界问题,比如: 假设限流阀值为3个请求,单位时间窗口是1s,如果我们在单位时间内的前0.9-1s和1-1.1s,分别并发3个请求。虽然都没有超过阀值,但是如果算0.9-1.1s,则并发数高达6,已经超过单位时间1s不超过3阀值的定义。
滑动窗口限流算法
滑动窗口限流算法是一种常用的限流算法,用于控制系统对外提供服务的速率,防止系统被过多的请求压垮。
它将单位时间周期分为n个小周期,分别记录每个小周期内接口的 ...