.NET 7 新增速率限制 (Rate Limiting) 功能,轻松限制请求数量

    .NET 7  内置了速率限制(Rate Limiting)功能,速率限制指的是限制可访问资源的请求数。例如数据库每分钟可以安全处理 1000 个请求,再多不确定会不会崩。这时就可以在应用程序中放一个速率限制器,规定每分钟只允许 1000 个请求,在达到这个数量后开始拒绝请求。这是一种保护资源的方法,可以避免应用在高浏览的情况下崩溃。

  有很多种不同的算法来控制请求流,下面介绍 .NET 7 中提供的 4 种方法:

  并发限制

  顾名思义,并发限制器就是限制有多少并发请求可以访问资源。如果限制是 10,那么只有 10 个请求可以同时访问一个资源,第 11 个请求将被拒绝。

  一旦前面的请求完成,则允许的请求数量会增加 1,当第二个请求完成时,数量增加到 2,依此类推。该算法是通过 释放 RateLimitLease 来完成的。

  令牌桶

  令牌桶是另一种算法,就像一个装满令牌的桶。每隔一段时间,桶内会新增固定数量的令牌,但令牌数不能超过桶可容纳的最大数量。当一个请求进来时,它会获取并保存一个令牌,如果存储桶为空,则新请求进入时没有令牌可获取,即将被拒绝访问资源。

  假设单个桶可以容纳 10 个令牌,且每分钟往里面加入 2 个令牌。现在有 3 个请求进来了,剩下 7 个令牌。一分钟后,桶自动补充到 9 个令牌,然后 9 个请求瞬间取走所有令牌。那么接下来在桶内添加令牌之前,所有请求都不允许访问资源。如果接下来没有请求,则桶会在 5 分钟内自动补到 10 个令牌,然后等待请求。

  固定窗口限制

  固定窗口算法使用 “窗口” 的概念,窗口采用时间计量,在固定的一段时间内限制最大请求,并在切换到下一个窗口的时候重置请求数。

  假设现在有一个最多只能容纳 100 人(最大请求数)的电影院(窗口),每场电影需要播放 2 个小时(窗口持续时间)。电影开始后,剩下的观众(请求)只能排队等待下一场窗口,排队的最大数量也是 100 ,超出的部分不允许继续排队,只能等待下一个窗口开始后才能继续排队。

  滑动窗口限制

  滑动窗口算法类似于固定窗口算法,但增加了 “段(segments)” 的概念。

  • 一个段是一个窗口的一部分,如果将前面 2 小时的窗口分成 4 个段,则会有 4 个 30 分钟的段。此外还有一个 “段索引”,它始终指向窗口中的最新段。

  • 30 分钟内的请求进入最新的段,且每 30 分钟窗口滑动一个段。如果在窗口滑过段期间出现了新的请求,则该请求会被刷新,且段的最大限制会增加。如果没有请求,则段的限制保持不变。

  例设现在有一个滑动窗口,它包含 3 个 10 分钟的段,最多只能接受 100 个请求。现在它的初始状态是 3 个段,计数均为 0,当前的段索引指向第 3 个段。

1207596d0691d8d406eb7d8743f0310f.png

  在前 10 分钟内,我们收到 50 个请求,所有请求都在第 3 段(段索引所在的位置)。10 分钟过去后,我们将窗口滑动 1 段,同时将当前段索引移动到第 4 段。

2543a098b515620c584b6c09a8b2815b.png

  接下来的 10 分钟内,我们又收到了 20 个请求,所以现在第 3 段有 50 个,第 4 段有 20 个。同样在 10 分钟过去后窗口开始滑动,因此当前的段索引指向了 5,而由于段 3 和段 4 都在窗口内,因此窗口只剩 20 个请求名额。

a2dedf4ad6ac558d28876e9d4908e6e8.png

  又过了 10 分钟后,再次滑动窗口,这一次窗口滑动后段索引为 6,但段 3(有 50 个请求的段)已位于窗口之外,因此窗口收回了 50 个请求限额。由于段 4 仍有 20 个请求,所以滑动窗口的请求限额变为 80 。

f8d1c2fd7464d917f73d60256202f393.png

  微软博客中有关于速率限制功能和相关 API 、中间件的详细介绍,对此功能感兴趣的朋友可在 Nuget 中进一步了解。

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

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

相关文章

天津到广州海运货柜船期

天津到广州海运,一般的集装箱运输路线是从天津新港走船到广州南沙港,有直达的船,运输时间一个星期,集装箱大柜或者小柜,每周从天津发出的船有4班左右。

GPT-4原论文详细解读(GPT-4 Technical Report)

GPT-4原论文详细解读(GPT-4 Technical Report) 返回论文和资料目录 1.导读 相比之前的GPT-3.5等大型语言模型(这里可以看我的InstructGPT解读,也方便理解本文内容),GPT-4最大的不同在于变成了多模态&…

IBM加入战局!任意大模型低成本变ChatGPT方法开源,个别任务超GPT-4

衡宇 发自 凹非寺量子位 | 公众号 QbitAI 科幻中有机器人三原则,IBM说不够,要十六原则。 最新大模型研究工作中,以十六原则为基础,IBM让AI自己完成对齐流程。 全程只需300行(或更少)人类标注数据&#xff0…

git获取ssh密钥

桌面右击,选择 “Git Bash” 切换到 .ssh 路径下,如果不存在,则直接创建一个(本人在家目录即用户目录下) 添加用户名和密码 使用下面的命令创建ssh密钥 ssh-keygen一路回车即可 此时.ssh文件夹下便会包含两个文件&…

作为一名开发工程师,我对 ChatGPT 的一些看法

ChatGPT 又又火了。 ChatGPT 第一次爆火是2022年12月的时候,我从一些球友的讨论中知道了这个 AI 程序。 今年2月,ChatGPT 的热火更加猛烈,这时我才意识到,原来上次的热火只是我们互联网圈子内部火了,这次是真真正正的破圈了,为大众所熟悉了。 这个 AI 程序是一个智能问…

新版Web of science 如何导出全记录与引用的参考文献到Hisecite

Question: 我导开“查”文献科研培训会的时候提到Hisecite文献引用分析软件,在看录频的时候顺便了解这个软件,遇到了一个问题:目前网上关于hisecite的参考资料很多都是关于旧版WOS(Web of Science),本人经过翻阅资料&…

利用Web of Science进行文献检索

官网链接 Web of Science 1 基本检索 若要执行文献检索,可选择要检索的字段,然后在检索字段中输入检索词 可以通过主题|摘要|标题|作者|出版物名称|出版年等进行检索 注意:一般默认是主题(其中包括标题、摘要和索引&#xff09…

如何检索外文文献

目录 一、知网就能搞定的外文文献 1、检索 2、下载 二、知网中查不到或者下载不了的外文文献 一般,我们要查找中文文献很方便,知网就能下载,但是对于一些外文文献(最常见就是英文),如果知网里面找不到或…

如何搜索得到综述文献?

我们应该要怎样才能了解到这个研究方向究竟有什么成果,现如今的研究现状如何呢?这就需要我们对综述文献进行研读了。可是综述文献并不是随便可以找得到的,那我们要怎么样才能搜索到综述文献呢? 今天我从以下几点和大家分享&#…

如何进行文献检索?

文献检索可以看作是贯穿于论文写作全过程的一种“术”,当你学会文献检索的实践操作后,一定程度上你的互联网搜索能力也会有所提升,这种能给你带来双重作用的工具,还不赶紧来学会它! 文献检索主要包括5个步骤&#xff1…

Python编程基础

前言 前面基础知识部分的知识点较为杂乱,后面有总结好的知识点和例题,可以直接在目录里跳转。如果忘记了可以再跳转回去看详解的知识点。还有一些看起来不大聪明的问题,都是博主在学习过程中的疑问,如果知道的话可以直接跳过。 对…

Android自定义控件 - 彩虹表盘

说实话写代码久了,本能的会避免一些不熟悉的领域,而去做一些擅长的领域,这样使工作显得得心应手,但殊不知这是一种逃避行为,只有不断的面临问题甚至主动制造问题,好比说我偏偏不用setVisible这种老旧的显影…

半个月时间把MySQL重新巩固了一遍,梳理了一篇几万字 “超硬核” 文章!

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一 MySQL实战文章目录 MySQL必会知识点梳理 (必看)【介绍】什么是数据库MySQL数据库RDBMS 术语数据库…

为什么只有涨价才能救小米?

作者:仙人JUMP 来源:https://www.xttblog.com/?p4777 01 小米10发布了,虽然各项参数都已经早就被剧透完了,那个充电器淘宝各路品牌都卖了大半年了,不过价格还是香的。 产品本身没什么惊喜,吊打友商几个月前…

不一样的母爱

文/爱笑的王阿哥(ISmileLi) 每个人都有自己的母亲 每位母亲都爱自己的孩子 我们也爱自己的母亲 但却和母亲爱我们不一样 我们对母亲的爱 像小桥流水 母亲对我们的爱 像江河湖海 每位母亲不同 表达爱的方式也不同 她们的爱 或平静 或深沉 或直白 每位母亲不同 表达爱的思想…

想要艺术气质高逼格,不吹牛真的有捷径可走

文中呈现出的经典西方作品,足以让你大脑空缺的西方美术史部分得以补充,想要艺术气质高逼格,读完是关键,你懂得! 达芬奇蒙娜丽莎 达芬奇的《蒙娜丽莎》成功地塑造了资本主义上升时期一位城市有产阶级妇女形象。据记载…

【码歌】代码歌颂人生----怎样给Swagger换皮肤?

上文我们讲到在Spring Boot中集成Swagger2的组件,那今天我们就来聊聊怎样给Swagger换个皮肤呢?环境搭建:使用Spring Boot依赖swagger-spring-boot-starter进行快速构建。具体swagger-spring-boot-starter可以参考:https://github.…

Spring中的Aop简单实例讲解

注重版权,转载请注明原作者和原文链接 作者:码农BookSea 原文链接:https://editor.csdn.net/md?articleId107092569 Aop,即面向切面编程,面向切面编程的目标就是分离关注点 比如:一个骑士只需要关注守护…

七夕我们在歌颂什么

“七夕节”是我国最具有浪漫色彩的节日,也是古代少女、闺妇最看重的节日。因主要的参与者是少女,活动以乞巧为主,也被称为“乞巧节”或“少女节”、“女儿节”。 农历七月初七,正值夏秋,晴朗夜空,明亮的牵牛…

细微之处见真章之JSON格式美化

一、背景 今天 段段 在技术群里提出一个问题:”如何实现JSON的格式美化“。 具体含义是,通过后端代码实现将紧凑的JSON字符串变为更美观的形式。 如下面的JSON字符串 {\"age\":0,\"name\":\"张三\",\"sex\":…