当前位置:   article > 正文

5种常用限流模型的介绍_限流类型 ops

限流类型 ops

在后端服务的开发中,经常要解决限流的问题,下面详细介绍5种比较常用的限流模型,前4种是来自于一篇他人的好文章,我对它们有所改动。

算法的介绍和优缺点分析

1. 固定窗口限流算法

1.1 定义

固定窗口限流算法(Fixed Window Rate Limiting
Algorithm)是一种最简单的限流算法,其原理是在固定时间窗口(单位时间)内限制请求的数量。该算法将时间分成固定的窗口,并在每个窗口内限制请求的数量。具体来说,算法将请求按照时间顺序放入时间窗口中,并计算该时间窗口内的请求数量,如果请求数量超出了限制,则拒绝该请求。

假设单位时间(固定时间窗口)是1秒,限流阀值为3。在单位时间1s内,每来一个请求,计数器就加1,如果计数器累加的次数超过限流阀值3,后续的请求全部拒绝。等到1s结束后,计数器清0,重新开始计数。如下图:
在这里插入图片描述

1.2 优缺点

优点:

  • 算法非常简单,易于实现和理解。
  • 允许突发量。

缺点:

  • 自欺欺人,存在明显的double-peek漏洞,比如: 假设限流阀值为5个请求,单位时间窗口是1s,如果我们在单位时间内的前0.8-1s和1-1.2s,分别并发5个请求。虽然都没有超过阀值,但是如果算0.8-1.2s,则并发数高达10,已经超过单位时间1s不超过5个请求阀值的定义啦。这个漏洞是程序员能料想到的,但是它在实现上的简单性诱惑力巨大且能基本满足绝大多数的限流需求,以至于它是最为广泛使用的限流算法(是要追求技术上的完美实现还是要平衡需求成本和收益,这是每个程序员都会遇到的选择)。
    在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号