令牌桶算法原理

令牌桶算法原理token bucket 令牌桶算法原理讲在原理之前我们今天主要是分析令牌桶算法 分析之前我们先介绍一下使用该算法的背景 限流每个 API 接口都是有访问上限的 当访问频率或者并发量超过其承受范围时候 我们就必须考虑限流来保证接口的可用性或者降级可用性 即接口也需要安装上保险丝 以防止非预期的请求对系统压力过大而引起的系统瘫痪 通常的策略就是拒绝多余的访问 或者让多余的访问排队等待服务 或者引流 如果要准确的控制 QPS 简单的做法是维护一个单位时间内的 Counter 如判断单位时间已经过去 则将 Cou

token_bucket令牌桶算法原理

讲在原理之前

我们今天主要是分析令牌桶算法,分析之前我们先介绍一下使用该算法的背景。

限流

每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪.

通常的策略就是拒绝多余的访问,或者让多余的访问排队等待服务,或者引流.

令牌桶算法

算法简介

令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。

算法原理

  • 令牌将按照固定的速率被放入令牌桶中。比如每秒放10个。
  • 桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃或拒绝。
  • 当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上。
  • 如果桶中的令牌不足n个,则不会删除令牌,且该数据包将被限流(要么丢弃,要么缓冲区等待)。

如下示意图:

在这里插入图片描述
通俗的理解,令牌桶是一个水桶,而令牌是通过一根水管流到水桶中的水。
令牌桶的填满时间,是由桶的自身容量、令牌漏出速率(桶下面的水管)、超过平均速率的突发流量持续的时间三个方面共同决定的。如果突发流量的时间比较短,令牌桶不会溢出,在通信流上不会受到影响,如果突发流量比较大,时间比较长,那令牌桶就会溢出,多余的通信流就会被限制。
令牌桶的另外一个好处是可以方便的改变速度. 一旦需要提高速率,则按需提高放入桶中的令牌的速率. 一般会定时(比如100毫秒)往桶中增加一定数量的令牌, 有些变种算法则实时的计算应该增加的令牌的数量.


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176947.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:39
下一篇 2026年3月26日 下午8:40


相关推荐

  • 逻辑回归原理_逻辑回归代码

    逻辑回归原理_逻辑回归代码此文章为初学机器学习时,对AndrewNG《机器学习》课程整理所写,也参考了其他CSDN同学的笔记,写的较为粗糙,很多网友帮助我指正了问题,现在重新更新向量化部分,并加入实践篇。什么是逻辑回归?Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedli…

    2025年6月19日
    4
  • 51单片机控制步进电机课设

    51单片机控制步进电机课设步进电机正反转设计设计要求:设置开始、停止以及正反转键。转速以及转向由数码管显示。#include<reg52.h>/*步进电机正反转设计设计要求:设置开始、停止以及正反转键。转速以及转向由数码管显示。步距角=5.625°/64,其意思就是每64个脉冲步进电机就会转5.625度。转一圈的脉冲数为(360/5.625)*64=4096个脉冲计算发送4096/4个脉冲需要的时间t转速=1/t*4rad/s注意:这里由于实际开发板驱动能力不足及

    2022年5月6日
    56
  • Mac如何修改host文件「建议收藏」

    Mac如何修改host文件「建议收藏」首先开启一个文件夹,点击上方【前往】-&gt;【前往文件夹】。 输入“/private/etc/hosts”,点击【前往】。 自动开启“etc”文件夹,找到【hosts文件】,并将其拉到桌面上才能修改桌面上的hosts文件。 “右键”桌面上hosts文件,选择【打开文件的应用程序】,使用【文字编辑】开启。 开启编辑hosts文件。 编辑完后就把桌面上的…

    2022年10月12日
    4
  • linux 返回上一级目录 和 返回根目录

    linux 返回上一级目录 和 返回根目录linux 返回上一级目录和返回根目录

    2026年3月18日
    2
  • 【LangChain大模型应用与多智能体开发 ② 接入智谱AI】

    【LangChain大模型应用与多智能体开发 ② 接入智谱AI】

    2026年3月12日
    4
  • 月之暗面Kimi首个Agent开始灰度测试

    月之暗面Kimi首个Agent开始灰度测试

    2026年3月12日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号