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

限流算法与实现

费曼学习法学习限流算法

为什么要限流

mysql插入600次/秒

超过这个阈值,要么使用mysql集群、要么限流,防止宕机

 

有哪些算法

固定窗口

就是个计数器,一秒内超过阈值,不允许访问

缺点:不均匀,跨越临界点的一秒内,阈值会翻倍,导致宕机

优点:实现简单

滑动窗口

一秒代表一个窗口,同时一秒又划分多个格子

格子越多,越均匀

窗口记录每个格子的请求量,每次滑动一下,新增一个格子,原本窗口第一个格子被划出,释放格子占用的请求量,给新格子。

缺点:复杂,需要记录每个格子的请求数量

 

漏桶

相当于一个消息队列,有一定的缓冲作用

请求放入桶里,另一个线程允许提取

适合请求稳定的场景

 

令牌桶

一个线程匀速往桶内放令牌

另一个线程,拿到令牌才能处理请求

可以一次拿一个或者多个,应多突发秒杀活动等流量

使用场景:tcp协议 滑动窗口,保证速度,还要保证可靠性。

客户端速度大于服务器,就会出现丢包重发,随意客户端根据服务器返回的滑动窗口的格子内请求书,来调整速度

 

有哪些实现

guava

redis

lua

 sentinel

gate lway

http://www.lryc.cn/news/594379.html

相关文章:

  • Shell脚本-tee工具
  • Kafka 在分布式系统中的关键特性与机制深度解析
  • kotlin Flow快速学习2025
  • PostgreSQL实战:高效SQL技巧
  • 【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表
  • 基于单片机无线防丢/儿童防丢报警器
  • 数据结构 | 栈:构建高效数据处理的基石
  • 【2025最新版】PDFelement全能PDF编辑器
  • [硬件电路-58]:根据电子元器件的控制信号的类型分为:电平控制型和脉冲控制型两大类。
  • LockFile简要分析
  • 《镜语者》
  • RocketMQ学习系列之——MQ入门概念
  • 【基础】——股票市场基础知识宏观
  • 无 sudo 权限的环境下将 nvcc (CUDA Toolkit) 安装到个人目录 linux
  • 【c++】200*200 01灰度矩阵求所有的连通区域坐标集合
  • Numpy库,矩阵形状与维度操作
  • 本地部署 Claude 大语言模型的完整实践指南
  • 数据治理,治的是什么?
  • 建筑墙壁损伤缺陷分割数据集labelme格式7820张20类别
  • 【华为机试】169. 多数元素
  • Spring Cloud Gateway 电商系统实战指南:架构设计与深度优化
  • 最大子数组和问题-详解Kadane算法
  • 数学建模--matplot.pyplot(结尾附线条样式表格)
  • 力扣 hot100 Day50
  • 10-day07文本分类
  • Node.js:常用工具、GET/POST请求的写法、工具模块
  • 《剥开洋葱看中间件:Node.js请求处理效率与错误控制的深层逻辑》
  • Node.js worker_threads 性能提升
  • 最新轻量美化表白墙系统源码v2.0 带后台版 附搭建教程
  • RxSwift-事件属性