四种常用限流算法、固定窗口限流算法、滑动窗口限流算法、漏桶限流算法和令牌桶限流算法

什么是限流?

限流可以被视为服务降级的一种形式,其核心目标是通过控制输入和输出流量来保护系统。通常,一个系统的处理能力是可以预估的,为了确保系统的稳定运行,当流量达到预定的阈值时,必须采取措施限制进一步的流量。这些措施可能包括延迟请求的处理时间、直接拒绝请求,或者部分地拒绝请求等策略。

为什么要做限流?

限流是一种面对资源有限性安全威胁时采取的防御措施,旨在自我保护。通过限流,系统能够使用有限的资源来最大化服务能力,确保在预期的流量范围内提供服务。

当流量超出这一范围时,系统会采取诸如拒绝服务、排队等待、服务降级等应对措施。在实际业务场景中,如限时秒杀活动、微博热搜等,用户流量可能会急剧增加。在这种情况下,后端服务的处理能力是有限的,如果无法妥善处理这些突发流量,后端服务可能会崩溃,进而导致整个系统的瘫痪。

此外,对于潜在的恶意流量,例如爬虫或DoS攻击,我们的服务必须以最大的恶意来防范可能的调用者行为。由于我们无法预知调用者将如何使用我们的服务,假设有调用者开启多个线程,全天候地进行密集调用,如果我们的服务没有适当的防护措施,那么服务的稳定性将受到严重威胁。因此,限流策略对于维护系统稳定性和防止恶意攻击至关重要。

四种常用限流算法

固定窗口限流算法:这种算法将时间分成固定的单位窗口,并在每个窗口期内限制请求的数量。如果窗口内的请求量未超过设定的阈值,则允许请求;否则,请求将被拒绝。每个窗口期结束后,计数器会重置。

(图源腾讯云)

这种算法简单直观,但在窗口切换时可能会出现突发流量。

(图源腾讯云)

滑动窗口限流算法:不同于固定窗口算法,滑动窗口算法将时间分为多个小周期,每个小周期都可以视为一个固定窗口。这样,即使在某一小周期内请求量超过了阈值,也可以在后续的小周期中补充处理这些请求,从而提供更平滑的限流效果。

(图源腾讯云)

下面这个图片更加容易理解

漏桶限流算法:漏桶算法通过控制数据流入网络的速度来防止网络拥塞。它使用一个“漏桶”来接收请求,桶内的水代表待处理的请求。水的流出速度是恒定的,而流入速度则是不确定的。当桶满时,新来的请求会被丢弃。

令牌桶限流算法:令牌桶算法也是用于限制单位时间内的请求数量。它以固定的速率向桶中添加令牌,请求需要消耗令牌才能被处理。如果桶中没有足够的令牌,请求将被限制或拒绝。

(图源腾讯云)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/576014.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索数据库mysql--------------mysql主从复制和读写分离

目录 前言 为什么要主从复制? 主从复制谁复制谁? 数据放在什么地方? 一、mysql支持的复制类型 1.1STATEMENT:基于语句的复制 1.2ROW:基于行的复制 1.3MIXED:混合类型的复制 二、主从复制的工作过程 三个重…

八大技术趋势案例(云计算大数据)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

RegSeg 学习笔记(待完善)

论文阅读 解决的问题 引用别的论文的内容 可以用 controlf 寻找想要的内容 PPM 空间金字塔池化改进 SPP / SPPF / SimSPPF / ASPP / RFB / SPPCSPC / SPPFCSPC / SPPELAN  ASPP STDC:short-term dense concatenate module 和 DDRNet SE-ResNeXt …

Mudbox 2025新版中文---数字雕刻与纹理绘画新境界

Mudbox 2025是一款功能强大的3D建模软件,以其卓越的建模能力和高效的创作工具而备受瞩目。它支持纹理烘烤、三维层、多分辨率网格编辑等功能,为用户提供了直观且易于操作的用户界面。 Mudbox 2025新版中文下载 功能特色: 强大的建模与雕刻能…

macOS 13 Ventura (苹果最新系统) v13.6.6正式版

macOS 13 Ventura是苹果电脑的全新操作系统,它为用户带来了众多引人注目的新功能和改进。该系统加强了FaceTime和视频通话的体验,同时优化了邮件、Safari浏览器和日历等内置应用程序,使其更加流畅、快速和安全。特别值得一提的是,…

八大技术趋势案例(区块链量子计算)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

Windows系统搭建Oracle结合内网穿透实现公网访问本地数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

【图论】【割点】【C++算法】928. 尽量减少恶意软件的传播 II

作者推荐 视频算法专题 涉及知识点 图论 割点 LeetCode928. 尽量减少恶意软件的传播 II 给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示。在节点网络中,只有当 graph[i][j] 1 时,节点 i 能够直接连接到另一个节点 j。 …

硬件项目中的turn-key 是啥意思?案例应用

在硬件项目中,turn-key是指一种工程项目模式,即交钥匙工程。这种模式通常由独立的第三方软件厂商直接与芯片厂商合作,基于芯片厂商的硬件方案和协议,集成成熟的上层软件和应用,并整套提供给电子产品生产厂商。这种模式…

【算法刷题 | 二叉树 05】3.28(左叶子之和、找树 左下角的值)

文章目录 11.左叶子之和11.1问题11.2解法一:递归11.2.1递归思路11.2.2代码实现 11.3解法二:栈11.3.1栈思想11.3.2代码实现 12.找树左下角的值12.1问题12.2解法一:层序遍历 11.左叶子之和 11.1问题 给定二叉树的根节点 root ,返回…

Java八股文(数据结构)

Java八股文の数据结构 数据结构 数据结构 请解释以下数据结构的概念:链表、栈、队列和树。 链表是一种线性数据结构,由节点组成,每个节点包含了指向下一个节点的指针; 栈是一种后进先出(LIFO)的数据结构&a…

让机器理解语言,从字词开始,逐步发展到句子和文档理解:独热编码、word2vec、词义搜索、句意表示、暴力加算力

让机器理解语言,从字词开始,逐步发展到句子和文档理解:独热编码、词嵌入、word2vec、词义搜索、句意表示、暴力加算力 独热编码:分类 二进制特征Word2Vec 词嵌入: 用低维表示 用嵌入学习 用上下文信息Skip-gram 跳字…