当前位置: 首页 > news >正文

sentinel限流算法

限流算法:固定窗口算法、滑动时间窗口、令牌桶和漏桶这四种常见限流算法的原理:

限流算法原理

  1. 固定窗口

    • 固定窗口算法将时间划分为固定大小的窗口,并在每个窗口内限制请求的数量。在每个窗口开始时,计数器重置,如果在当前窗口内请求数超过限制,则拒绝新的请求。
    • 优点:简单易实现。
    • 缺点:但对于时间精度要求较高的场景可能不够精确。
  2. 滑动时间窗口

    • 在固定窗口的基础上,滑动窗口计数器算法会将一个窗口划分为n个更小的区间:(在窗口的基础上引入区间的概念)
    • 优点:实现简单,易于理解。比固定窗口更加精准。
    • 缺点:无法保证整体流量曲线的平滑。
  3. 令牌桶

    • 有一个固定大小的桶,桶中会按照一定的速率生成令牌。
    • 每个请求都需要消耗一个令牌才能通过,如果桶中没有足够的令牌,则请求会被拒绝。可以设置桶中令牌的上限来限制超时令牌累加问题。
    • 优点:可以应对流量的突增,实现灵活的限流策略。
    • 缺点:实现相对复杂,需要维护令牌的生成和消耗。
  4. 漏桶

    • 有一个固定大小的桶,请求可以进入桶中,然后按照固定的速率被处理。
    • 漏桶可以保证流量的平滑输出,因为所有请求都会按照固定速率被处理,无论请求的到达速率如何。
    • 优点:保证流量的平滑输出,实现严格的限流。
    • 缺点:无法应对流量的突增,可能会导致请求的延迟。

总结

对比项固定窗口算法滑动时间窗口令牌桶漏桶
能否保证流量曲线平滑不能,存在临界点问题,可能导致流量突增能,窗口内区间越小,流量控制越平滑基本能,在请求量持续高于令牌生成速度时,流量平滑能,所有请求进入桶内,以恒定速率放行,绝对平滑
能否应对突增流量不能,突增流量只要高出限流阈值都会被拒绝不能,徒增流量,只要高出限流阈值都会被拒绝能,桶内积累的令牌可以应对突增流量能,请求可以暂存在桶内
流量控制精确度低,窗口区间越大,精度越低低,窗口区间越小,精度越高
适用场景适用于对时间精度要求不高的简单API限流适用于大多数场景适用于需要灵活限流策略的场景适用于需要严格平滑流量输出的场景

这个表格总结了限流算法在保证流量曲线平滑、应对突增流量和流量控制精确度方面的特点,以及它们各自的适用场景。每种算法都有其优势和局限性,选择哪种算法取决于具体的业务需求和场景。

Sentinel 与 Gateway 限流算法区别

  1. Gateway

    • 主要采用基于 Redis 实现的令牌桶算法
    • 令牌桶算法能够应对流量的突增,因为它允许在短时间内消耗桶中积累的令牌。
  2. Sentinel

    • 提供了更复杂的限流策略,包括:
      • 默认限流模式:基于滑动时间窗口算法,适用于大多数场景,可以保证在窗口内流量的平滑,但无法保证整体流量曲线的平滑。
      • 排队等待的限流模式:基于漏桶算法,可以保证流量以固定速率被处理,适用于需要严格平滑流量输出的场景。
      • 热点参数限流:基于令牌桶算法,适用于对特定热点参数进行限流的场景,可以应对突增流量。

http://www.mrgr.cn/news/94514.html

相关文章:

  • Python教程(三):类对象、闭包、装饰器、类型注解、MRO
  • C++进阶——map和set的使用
  • 便捷搞定计算机名、IP 与 Mac 地址修改及网卡问题的软件
  • RxSwift 学习笔记第二篇之Observables
  • RxSwift 学习笔记之RxSwift的调试
  • 阿里巴巴发布 R1-Omni:首个基于 RLVR 的全模态大语言模型,用于情感识别
  • Linux内核实时机制18 - RT调度器1 - 数据结构
  • 【深度学习与大模型基础】第3章-张量
  • 探针泄露(WEB)
  • RTDETR融合[CVPR2025]ARConv中的自适应矩阵卷积
  • GolangTCP通信解决粘包问题
  • SQL Server查询优化
  • Android LeakCanary 使用 · 原理详解
  • 《TCP/IP网络编程》学习笔记 | Chapter 17:优于 select 的 epoll
  • Linux 安装 Oh My Zsh
  • Centos 7 安装达梦数据库
  • Odoo18 Http鉴权+调用后端接口
  • MySQL(事物上)
  • 学习15天:pytest
  • STM32配套程序接线图