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

限流算法与实现

费曼学习法学习限流算法

为什么要限流

mysql插入600次/秒

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

 

有哪些算法

固定窗口

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

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

优点:实现简单

滑动窗口

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

格子越多,越均匀

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

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

 

漏桶

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

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

适合请求稳定的场景

 

令牌桶

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

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

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

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

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

 

有哪些实现

guava

redis

lua

 sentinel

gate lway

http://www.dtcms.com/a/289610.html

相关文章:

  • MySQL锁(一) 概述与分类
  • CMSIS-RTOS线程创建osThreadNew
  • JAVA国际版任务悬赏+接单系统源码支持IOS+Android+H5
  • 代码随想录算法训练营二十一天|回溯part03
  • IDEA使用技巧
  • c/c++-memory-management
  • ansible awx自动化工具学习准备
  • 牛客-两个链表的第一个公共节点
  • 安全信息与事件管理(SIEM)系统架构设计
  • TypeScript 中替代 Interface 的方案
  • PLC(可编程逻辑控制器,Programmable Logic Controller)是什么?
  • 详解如何解决Mysql主从复制延迟
  • 脚本代码:网页限制解除(改)
  • 树同构(Tree Isomorphism)
  • 生成模型与判别模型
  • 虚拟机VMware安装国产桌面系统统信UOS
  • Nginx服务器基本搭建
  • 【性能测试】性能压测3个阶段+高频面试题回答(详细)
  • 大语言模型:人像摄影的“达芬奇转世”?——从算法解析到光影重塑的智能摄影革命
  • 机器学习基础:从数据到智能的入门指南
  • 【数据集】NOAA 全球监测实验室(GML)海洋边界层(MBL)参考简介
  • 渗透笔记(XSS跨站脚本攻击)
  • 【算法300】:栈02
  • Day25| 491.递增子序列、46.全排列、47.全排列 II、回溯总结
  • JAVA面试宝典 -《API设计:RESTful 与 GraphQL 对比实践》
  • Error: You don‘t have permission to access that port.当端口被莫名占用时,kill它!
  • G1回收器垃圾回收过程
  • 30天打牢数模基础-卷积神经网络讲解
  • 将来职业从事股票市场投资工作,应该做什么?
  • Python趣味算法:借书方案知多少 | 排列组合穷举法详解