论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
物联网
›
物联网
›
6 分布式限流框架
6 分布式限流框架
曹旭辉
论坛元老
|
2025-1-10 14:47:33
|
显示全部楼层
|
阅读模式
楼主
主题
1762
|
帖子
1762
|
积分
5286
限流的作用
在API对外互联网开放的环境下,是无法控制调用方的行为的。当碰到请求激增或者黑客攻击的环境下,会导致接口占用大量的服务器资源,使得接口响应效率的降低或者超时,更或者导致服务器宕机。
限流是指对应用服务进行限制。例如对某一个接口限制为1秒100次请求,超过这个请求的就放弃
限流可以应对热门业务带来的突发环境、调用方的异常请求、恶意攻击等
为什么要使用分布式限流
我们先看下单节点的限流,如下图所示:
当我们对单个节点进行限流的时候,我们后面所带的资源服务得到了掩护。但是我们的应用大多是分布式的应用。如下图所示:
服务变为分布式的摆设的环境下,我们只对单个节点进行限流的时候,其他节点并未得到限流。后面依赖的资源照旧每得到掩护。我们再看下分布式限流的图:
基于中心件实现的分布式限流,我们可以方便的控礼服务集群的请求限制,如许整个集器依赖的资源也得到了掩护。
限流的算法
1.固定窗口计数器
这种算法最简单,就是把时间切割成多个窗口,好比一秒钟一个窗口。每次请求进来计数器+1.如果本窗口内计数器达到限制则进入到下一个时间窗口,并把计数器重置。
固定窗口计数器一样寻常会使实际通过的请求量为限制的2倍。好比说一个场景:如果设置1秒设置限制为5,如果在前一秒的后半秒通过了5,在下一秒的前半秒也通过了5,那么一秒内就通过了10次请求。
2.滑动窗口计数器
我们在固定窗口计数器的基础上对每一个时间窗口再进行时间上的切分,好比我们是按照1分钟100次请求的限制进行限流的,我们再将1分钟切成6份,就是10秒一个时间窗口,在每个细分的时间窗口中记载请求数量,时间从前一分钟的开始到前一分钟的结束为止,到了前一分钟的前10秒,我们的时间窗口从前一分钟的前10秒到下一分钟的前10秒结束。如下图所示:
这种算法减少了临界值带来的并发超过阈值的问题。Spring Cloud 中的熔断框架 Hystrix,以及 Spring Cloud Alibaba 中的Sentinel 都采用滑动窗口来做数据统计。
该算法时间区间划分的精度越高,算法必要的空间容量就越大。
3.漏桶
我们将每个请求视为一个水滴,然后有个桶装水,并且整个桶以固定的速率往外漏水,当进入请求(水滴)把桶装满,则请求不能再进入。
4.令牌桶算法
令牌桶算法的概念如下: 我们以固定的速率,生成令牌并放入桶中,如果令牌桶满了,生成的令牌将被抛弃。每次一个请求进来,试图从令牌桶中取令牌,取到令牌则请求通过,如果令牌桶空了取不到,则请求将被抛弃。
Google 的开源项目 guava 提供了 RateLimiter 类,实现了单点的令牌桶限流。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
曹旭辉
论坛元老
这个人很懒什么都没写!
楼主热帖
网络安全应急响应 - 03 - 日志分析与内 ...
Redis - 介绍与使用场景
Nmap抓包分析与绕过Windows防火墙 ...
Mysql 的Innodb引擎和Myisam数据结构和 ...
一招教你如何高效批量导入与更新数据 ...
【docker系列】docker API管理接口增加 ...
聊聊Spring事务控制策略以及@Transacti ...
用代码收集每天热点内容信息,并发送到 ...
微服务架构演进
Maven配置私有仓库
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
DevOps与敏捷开发
MES
数据仓库与分析
快速回复
返回顶部
返回列表