Nginx限速算法简介

2024-11-14 14:02 By "Powerless" 1711 0 0

【核心算法】

在探究Nginx限速模块之前,我们先来看看网络传输中常用两个的流量控制算法:漏桶算法和令牌桶算法。这两只“桶”到底有什么异同呢?


【漏桶算法】

漏桶算法(leaky bucket)算法思想如图所示

1731564444958.jpg

一个形象的解释是:

    水(请求)从上方倒入水桶,从水桶下方流出(被处理);

    来不及流出的水存在水桶中(缓冲),以固定速率流出;

    水桶满后水溢出(丢弃)。

这个算法的核心是:

    缓存请求、匀速处理、多余的请求直接丢弃。


【令牌桶算法】

令牌桶(token bucket)算法思想如图所示

1731564566979.jpg

算法思想是:

    令牌以固定速率产生,并缓存到令牌桶中;

    令牌桶放满时,多余的令牌被丢弃;

    请求要消耗等比例的令牌才能被处理;

    令牌不够时,请求被缓存。

相比漏桶算法,令牌桶算法不同之处在于它不但有一只“桶”,还有个队列,这个桶是用来存放令牌的,队列才是用来存放请求的。

从作用上来说,漏桶和令牌桶算法最明显的区别就是是否允许突发流量(burst)的处理,漏桶算法能够强行限制数据的实时传输(处理)速率,对突发流量不做额外处理;而令牌桶算法能够在限制数据的平均传输速率的同时允许某种程度的突发传输。

Nginx按请求速率限速模块使用的是漏桶算法,即能够强行保证请求的实时处理速度不会超过设置的阈值。


评 论

View in WeChat

Others Discussion

  • 初识七层、五层、四层网络协议
    Posted on 2021-04-09 16:52
  • Redis各种数据类型的使用场景举例分析【二】
    Posted on 2018-11-22 10:30
  • QPS、TPS、RT、吞吐量到底是什么
    Posted on 2020-02-02 01:15
  • 2018年云计算热词
    Posted on 2019-06-12 18:19
  • Linux工具 - NM目标文件格式分析
    Posted on 2019-04-24 10:29
  • ACID原则
    Posted on 2020-12-17 16:36
  • 前端知识体系精简-Css
    Posted on 2018-03-28 18:34
  • 浏览器访问网站经历的步骤-Html
    Posted on 2018-11-28 18:48