spring-cloud-sentinel ---流控算法---review
计数器算法
- 计数器算法,限定每个固定时间能处理的请求总数,例如1分钟100,如果在第一个一分钟,总共请求60次,接着第二个一分钟,counter又会从0 开始技术,如果在1.5分钟的时候,达到了100个,那么后面半分钟的请求将会被拒绝。
- 这种固定时间窗口的限流算法可以用在短信发送频次限制上,例如,一个用户一分钟只能收到n次短信

- 计数器算法存在的问题,如果在第一分钟的0:58 ~ 第二分钟的1:02 这个时间段内,分别出现了100 次请求,安计数器逻辑里说是都能通过的,但是这一分钟内的总请求量是超过了100 的。

滑动窗口
- 滑动窗口算法是一种流量控制技术,在TCP网络通信协议中,采用了 滑动窗口解决网络拥塞的情况。
- 做法是,在固定窗口中分割出多个小窗口,分别在每一个小时间窗口中记录访问次数,然后根据时间将窗口向前滑动,并且删除过期的小时间窗口。最终我们自需要统计滑动窗口范围内的所有小的时间窗口计数即可。
- 如下图,将一个时间窗口分为4个小的窗口,每个小时间窗口分配25个请求量。并且通过虚线框来作为滑动窗口的大小,同时滑动窗口随着时间前移动,比如前面15s结束后,窗口滑动到15~45 这个区间,让后在新的窗口中需要重新统计数据,这种方式很好的解决了固定窗口算法的临界值问题。

令牌桶算法
-
令牌桶是对网络整体限制 + 速率限制的一个常用算法,对于每一个请求,都需要从令牌桶中获取一个令牌,如果没有获得令牌,则需要出发限流策略
-
下图是令牌桶案例,系统已一定速率(r token/sec)往固定容量的令牌桶中放入令牌,如果此时有客户端请求过来,则需要从令牌桶中拿到令牌以获得访问资格。

-
假设令牌生成速度是10 个/秒,也就等于QPS = 10 ,此时请求获取令牌的时候,存在三种情况:
- 请求速度大于令牌生成速度:持续一段时间桶中令牌消耗完,后续请求在进来会被限流
- 请求速度等于令牌生成速度:此时正好可以平稳运行
- 请求速度小于令牌生成速度:此时说明系统高并发不高,请求能被正常处理。
-
令牌桶算法中,有两个关键值,桶容量,令牌添加速率,两个值都必须低于系统能承载的最大QPS,
- 例如系统能承载的最大QPS是1000 QPS,当桶中是满的,此时突然有2000请求过来,也只能在一瞬间得到1000 的令牌数量,另外的1000 需要排队等待令牌的添加,也就是等到下一秒添加的1000令牌,这样就将2000 请求平均到了2秒内正好符合系统要求。
漏桶限流算法
- 漏桶算法主要作用是控制数据注入网络的速度,平滑网络上的突发流量。
- 漏桶算法如下图,在漏桶算法内容也需要维护一个容器,他会以很定的速率出水,不管添加水流的速度多快,漏桶流出的速度都是保持不变的,实际上消息中间件就使用了漏桶限流孙风,不管生产者请求量多大,消息的处理能力取决于消费者。

- 漏桶算法存在以下几种情况:
- 请求速度大于漏桶流水速度:也就是请求数超过服务端处理能力,将会触发限流策略
- 请求速度小于或者等于流水速度,也就是服务器处理能力正好满足客户的的请求量,将正常执行。
- 漏桶和令牌桶原理差不多,最大区别是漏桶无法处理短时间内的突发流量,漏桶限留算法是一种恒定速度的限流算法。
相关文章:
spring-cloud-sentinel ---流控算法---review
计数器算法 计数器算法,限定每个固定时间能处理的请求总数,例如1分钟100,如果在第一个一分钟,总共请求60次,接着第二个一分钟,counter又会从0 开始技术,如果在1.5分钟的时候,达到了…...
1.浅析NIO 多路复用器selector
一:IO基本介绍 Java共支持3种网络编程IO模式:BIO,NIO,AIO 0.Java对BIO、NIO、AIO的支持: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端…...
Day920.结构化日志业务审计日志 -SpringBoot与K8s云原生微服务实践
结构化日志&业务审计日志 Hi,我是阿昌,今天学习记录的是关于结构化日志&业务审计日志的内容。 1、什么是结构化日志 结构化日志(Structured Logging)是一种将日志信息组织为结构化数据的技术。 传统的日志通常是一些文…...
前端代码复用学习笔记:整洁架构与清晰架构
基础代码的复用往往比较简单,但是业务代码的复用通常是困难的,如果没有特殊的手段去治理项目会逐渐发展为难以维护的巨石应用,按照维基百科记载,代码的复用形式主要有三种,程序库,应用框架,设计…...
【python刷题】leecode官方提示“->“,“:“这些符号是什么意思?什么是Type Hints?
作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…...
【华为OD机试真题2023 JAVA】最佳对手
华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 最佳对手 知识点排序DFS搜索回溯 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 游戏里面,队伍通过匹配实力相近的对手进行对战。 但是如果匹配的队伍实例相差太大,对于双方游戏体验都不会太好。 给定n个…...
css实现文字大小自适应
在页面编写中经常会碰到页面自适应的问题,也就是页面内部的元素会随着窗口的放大缩小而放大缩小,box可以通过calc 百分比的形式做到页面自适应,但是box内的字体却无法做到这点,往往box自适应大小了,内部的字体还是原来…...
【Redis】搭建哨兵集群
目录 集群结构 准备实例和配置 启动 测试 集群结构 这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图: 三个sentinel实例信息如下: 节点IPPORTs1192.168.150.10127001s2192.168.150.10127002s3192.168.150.…...
CTFHub | .htaccess
0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…...
微机原理 || 8253 芯片 (详细讲解 + 经典例题)
一点点看!一定可以看懂!考试没有问题的!加油💪 前面知识写的详细,看不懂可以先看典例,回头来梳理就明白了【典例就是常考的题】 目录 Part 1: 芯片知识总结 (一)8253 芯片特点 …...
python Django高级操作-分页-定义CVS-发送邮件
分页 分页是指在web页面有大量数据需要显示,为了阅读方便在每个页页中只显示部分数据。优点: 1.方便阅读2.减少数据提取量,减轻服务器压力。Paginator对像 负责分页数据整体的管理对象的构造方法Paginator属性 Paginator方法 Paginator异常exception pag…...
React 用一个简单案例体验一遍 React-dom React-router React-redux 全家桶
一、准备工作 本文略长,建议耐心读完,每一节的内容与上一节的内容存在关联,最好跟着案例过一遍,加深记忆。 1.1 创建项目 第一步,执行下面的命令来创建一个 React 项目。 npx create-react-app react-example cd rea…...
9. C#面向对象基础
一、C# 类 在 C# 中,类是引用类型的。类由成员属性和成员方法构成。我们可以动态创建类的实例(instance),这个实例也被称为对象(object),我们可以通过类和对象来设计程序。 1、类的定义 类的定…...
【MIT 6.S081】Lab2: system calls
本Lab包括两个简单系统调用的实现,进一步熟悉系统调用接口。 笔者用时约1.5h 概述 根据文档说明,当我们添加一个系统调用时,比如第一个任务是添加一个trace,需要进行以下操作: 首先将系统调用的原型添加到user/user…...
设计模式之单例模式~
设计模式包含很多,但与面试相关的设计模式是单例模式,单例模式的写法有好几种,我们主要学习这三种—饿汉式单例,懒汉式单例、登记式单例,这篇文章我们主要学习饿汉式单例 单例模式: 满足要点: 私有构造 …...
top终端详解
1.top命令行使用 2.top每行意义 3.补充 1.top命令行使用 top命令是一个常用的Linux系统命令,用于实时查看系统的运行状态和进程信息。下面是top命令的几个常用参数的含义: -d seconds:设置top命令的更新间隔时间,单位是秒。默认是…...
解决一个偶现的503 bug,花了俺不少时间
概述 在3月2日晚上,大概8点左右,本想打道回府,回家休息,突然被人在bug群了一下,说是管理后台,访问不了,界面上出现了: 503 service temporarily unavailable我赶紧尝试访问了一下,确…...
什么是栈,如何实现?
欢迎来到 Claffic 的博客 💞💞💞 “但有一枝堪比玉,何须九畹始征兰?” 前言: 栈是一种特殊的线性表,就像开盖的桶一样,从底部开始放数据,从顶部开始取数据,那么栈具体是…...
在我的MacBook上捣鼓ESP8266
周三是我们的篮球日,打篮球后总是会有些兴奋,然后就容易睡不着,额,睡不着就拿我的ESP8266开发板出来捣鼓一下。先下载编译工具链https://github.com/espressif/ESP8266_RTOS_SDK下载sdkgit clone https://github.com/espressif/ES…...
【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码
大家好,今天和各位分享一下多智能体深度强化学习算法 ippo,并基于 gym 环境完成一个小案例。完整代码可以从我的 GitHub 中获得:https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1. 算法原理 多智能体的情形相比于单智…...
CLIP图文匹配测试工具:5分钟本地部署,零基础验证AI识图能力
CLIP图文匹配测试工具:5分钟本地部署,零基础验证AI识图能力 1. 工具简介与核心价值 你是否遇到过这样的场景:手头有一批产品图片,需要快速判断它们与哪些文字描述最匹配?或者想验证AI模型是否能准确理解图片内容&…...
从理论到面包板:手把手搭建Series-Shunt反馈放大器(含阻抗匹配避坑指南)
从理论到面包板:手把手搭建Series-Shunt反馈放大器(含阻抗匹配避坑指南) 在电子工程实践中,反馈放大器设计是模拟电路领域的核心技能之一。Series-Shunt结构因其出色的电压放大特性和相对简单的实现方式,成为初学者入门…...
Jmeter接口测试项目实战
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、什么是jmeter?JMeter是100%完全由Java语言编写的,免费的开源软件,是非常优秀的性能测试和接口测试工具,支持主流…...
避坑指南:YOLOv8+PaddleOCR车牌识别中,那些让你识别率暴跌的细节
避坑指南:YOLOv8PaddleOCR车牌识别中那些让你识别率暴跌的细节 车牌识别系统在智慧交通、安防监控等领域的应用越来越广泛,但很多工程师在部署YOLOv8PaddleOCR方案时,明明按照教程一步步操作,实际识别效果却远不如预期。本文将揭…...
经验值|React 实时数据图表性能为什么会越来越卡?
在使用 React 和 Highcharts 创建实时图表时,性能下降通常与以下几个因素有关:频繁更新状态:如果你频繁更新图表的数据状态,React 可能会进行多次重渲染,导致性能下降。建议使用 useRef 来引用图表实例,避免…...
Java应用内存泄漏排查实战:MAT工具从入门到精通(附常见问题解析)
Java应用内存泄漏排查实战:MAT工具从入门到精通 引言:为什么我们需要关注内存泄漏? 记得去年我们团队接手的一个电商项目吗?上线三个月后,系统开始频繁出现OOM(OutOfMemoryError)错误。每次重启…...
告别滑动窗口!用FastFlow+Vision Transformer实现工业缺陷检测的端到端定位
FastFlow与Vision Transformer:工业缺陷检测的端到端革命 在工业质检领域,传统异常检测方法正面临前所未有的效率瓶颈。想象一下:一条每分钟处理200件产品的生产线,每件产品需要扫描3000个关键点位,而传统滑动窗口算法…...
PingFangSC字体工程化:从跨平台渲染挑战到企业级解决方案
PingFangSC字体工程化:从跨平台渲染挑战到企业级解决方案 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 一、问题诊断:揭开字体渲…...
SAP Analysis for Office 2.8 SP6 升级与常见问题解决指南
1. SAP Analysis for Office 2.8 SP6升级前的准备工作 升级软件就像给房子做装修,准备工作做得好,后续问题少一半。对于SAP Analysis for Office(简称AFO)2.8 SP6版本升级,我建议先做好这三件事: 第一&…...
智慧农业 水稻害虫检测数据集 基于深度学习结合 深度学习模型(YOLOv11) 和 图形用户界面(GUI) 两部分来实现。 PyQt5
智慧化农业-水稻害虫目标检测数据集,3156张,yolo和voc两种标注方式 10类,标注数量: Asiatic Rice Borer: 亚洲稻螟 (716) Brown Plant Hopper: 褐飞虱 (577) Paddy Stem Maggot: 稻茎虫 (104) Rice Gall Midge: 稻瘿蚊 (223) Rice…...
