常见限流算法与Hystrix源码.pdfVIP

  • 1
  • 0
  • 约2.94万字
  • 约 20页
  • 2026-05-20 发布于北京
  • 举报

常见限流算法

1计数器

全局唯一的一个计数器,请求进来计数器1,请求结束计数器-1,当计数器的数量超过限制的最大值,计数器不再1,也会超出的全部请求。

优点就是:简单,单机在Java中可用Atomic等原子类、分布式就Redisincr。

缺点就是:假设我们允许的阈值是1万,此时计数器的值为0,当1万个请求1秒内一股脑儿的都涌进来,这的流量可是顶不住的。缓缓地增加处理和一下子涌入对于程序来说是不一样的。

2固定窗口限流

假设单位时间是1秒,限流阀值为3。在单位时间1秒内,每来一个请求,计数器就加1,如果计数器累加的次数超过限流阀值3,后续的请求全部。等到1s结束后,计数器清0,重新开始计数。

一段时间内(不超过时间窗口)系统服务不可用。

比如窗口大小为1秒,限流大小为100,然后恰好在某个窗口的第1ms来了100个请求,然后第2ms-999ms的请求就都会被,这段时间用户会感觉系统服务不可用。

窗口切换时可能会产生两倍于阈值流量的请求。

假设限流阀值为5个请求,单位时间窗口是1s,如果我们在单位时间内的前0.8-1s和1-1.2s,分别并发5个请求。虽然都没有超过阀值,但是如果算0.8‑1.2s,则并发数高达10,已经超过单位时间1s不

超过5阀值的定义啦,通过的请求达

文档评论(0)

1亿VIP精品文档

相关文档