0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分布式神器-限流器的四种限流方法

要长高 来源:网络整理 作者:网络整理 2024-02-06 14:17 次阅读

分布式系统中的限流器是一种重要的技术组件,用于控制和管理系统的流量,防止系统因流量过大而崩溃或性能下降。限流器的主要作用是在保证系统可用性的前提下,对流量进行合理的限制和调度,以保证系统的稳定性和可靠性。

在分布式系统中,限流器通常被部署在系统的入口或关键节点上,用于控制来自外部或内部的请求流量。通过限制流量的速度和数量,限流器可以有效地防止系统因流量过大而出现拥塞或崩溃的情况。同时,限流器还可以对流量进行调度和分配,以保证系统的负载均衡和资源利用率的最大化。

常见的限流算法包括计数器、固定窗口、滑动窗口、漏桶和令牌桶等。其中,计数器是最简单的限流算法,它通过统计请求的数量来进行限流,但缺乏时间概念,容易出现流量突增的情况。固定窗口和滑动窗口算法则引入了时间概念,通过对时间窗口内的请求数量进行限制来实现限流,但可能存在窗口边界的流量突变问题。漏桶和令牌桶算法则通过控制流量的速率来进行限流,可以更好地平滑流量波动。

在实际应用中,限流器还可以结合其他技术手段来提高系统的可用性和性能,如降级处理、请求排队、熔断机制等。当系统流量超过阈值时,可以通过降级处理来减少非关键业务的影响,保证核心业务的正常运行;请求排队则可以将超出阈值的请求放入队列中等待处理,避免直接拒绝请求导致用户体验下降;熔断机制则可以在系统出现异常情况时快速切断请求链路,防止故障扩散和影响整个系统。

限流方法

这里我们主要讨论后端基于请求量的限流,限流是一种非常广泛的应用技术,就比如你在登录系统时,经常会需要你输入手机验证、动态码或一些奇奇怪怪的验证方式, 来降低登录请求的频次。

计数限流

按数量进行控制,达到设置的阈值则进行限流,其中固定窗口,滑动窗口则是通过该方法实现。

固定窗口

通过控制时间单元内允许的请求数量,一旦达到阈值,则不会处理该请求后续相关的业务或者直接让请求快速失败并给予提示。

wKgaomXBz4CAAjufAABMxUltGuk761.png

比如我们配置10s内允许请求的流量为1000,在第1~9s内请求为0,在第9~10秒内的请求数为1000,这样一秒内的请求就达到了1000。当然我们可以时间单元划分成更小粒度, 但是应该多小才合适呢?

问题:只能对时间单元内的总请求数进行控制,当请求集中在较小时间范围内时,无法达到流量限制的效果,因此这是一种粗粒度的流量限制手段

滑动窗口

为了解决固定窗口算法中存在的问题,通过滑动窗口的方法,将上述时间单元划分成多个细粒度的时间窗口,每个窗口都有自己独立的请求计数器,这样就可以让时间单元内的流量控制均匀地 落在各个时间窗口上,同时滑动的时间窗口可以形成连续时间区间控制,并不像固定窗口那样只在两个时间刻度间。

wKgZomXBz4qAZDhtAAGEYCqeIjE274.png

比如时间单元为1s,每个时间窗口为100ms,在1秒内的10个时间窗口可以为09:01:01.000~09:01:02.000、09:01:01.200~09:01:02.800...

问题:滑动窗口的区间划分的越多,则滑动窗口的滚动就越平滑,限流的统计就会越精确,但也需要更多的资源为窗口时间片段保存计数器,从而耗费系统资源

漏桶算法

如果将请求看成水滴,限流器看成一个下面开口的桶(漏桶)。漏桶算法其实就是当水滴(请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大时则会超过桶的可接纳容量, 这时水将直接溢出,漏桶算法能强行限制数据的传输速率。使用漏桶算法,可以保证接口会以一个常速速率来处理请求,所以漏桶算法必定不会出现临界问题。

wKgZomXBz5WACnaKAAEFmqNBGBo461.png

问题:当短时间内如果有大量的突发请求时,即使服务器负载不高,每个请求也需要等待一段时间(水滴间隔)才能被响应。

总之,分布式系统中的限流器是一种重要的技术组件,它可以帮助系统更好地应对流量压力,保证系统的稳定性和可靠性。在实际应用中,需要根据系统的特点和需求选择合适的限流算法和技术手段,以实现最佳的限流效果。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计数器
    +关注

    关注

    32

    文章

    2253

    浏览量

    94346
  • 限流器
    +关注

    关注

    0

    文章

    41

    浏览量

    14475
  • 分布式系统
    +关注

    关注

    0

    文章

    146

    浏览量

    19202
收藏 人收藏

    评论

    相关推荐

    分布式软件系统

    计算机硬件的配置方式和相应的功能配置方式。它是一多处理的计算机系统,各处理通过互连网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理
    发表于 07-22 14:53

    限流熔断怎么分类?

    限流熔断是高压熔断的一限流熔断分为电阻限流
    发表于 11-01 09:00

    分布式数据采集系统同步的方法

    本文介绍了基于SAR ADC的系统和基于sigma-delta (∑-Δ) ADC的分布式数据采集系统同步的传统方法,且探讨了这两架构之间的区别。我们还将讨论同步多个Σ-Δ ADC时遇到的典型不便
    发表于 11-23 10:33

    多路输出隔离驱动电路及其在短路限流中的应用

    多路输出隔离驱动电路及其在短路限流中的应用   摘要:给出了一新颖的多路输出隔离驱动电路,它利用分布式
    发表于 07-06 13:58 708次阅读
    多路输出隔离驱动电路及其在短路<b class='flag-5'>限流</b><b class='flag-5'>器</b>中的应用

    设计出四种场景分析分布式能源系统潜在趋势,并制定相应的行动方针

    罗兰贝格对此进行了研究,邀请了50位专家来预测至2035年的欧洲能源市场,通过分析最有可能影响分布式能源系统转型的关键政治与市场变量,设计出四种场景,政策制定者与市场参与者可以据此分析潜在趋势,并制定相应的行动方针。
    的头像 发表于 01-13 09:18 4381次阅读

    饱和铁心桥故障限流

    为解决系统短路电流过大、传统饱和铁心型故障限流限流效果和经济性不理想等问题,提出一饱和铁心桥故障
    发表于 01-29 11:23 0次下载
    一<b class='flag-5'>种</b>饱和铁心桥<b class='flag-5'>式</b>故障<b class='flag-5'>限流</b><b class='flag-5'>器</b>

    限流的作用_限流的工作原理

    本文首先介绍了限流的作用和特征,然后分析了限流的优缺点,最后粗略说明了限流的工作原理并且从
    的头像 发表于 08-02 14:56 2.4w次阅读

    常用限流方式分析 怎么设计出高并发限流方案

    ,而对于超过限制的流量,则通过拒绝服务的方式保证整体系统的可用性。 根据限流作用范围,可以分为 单机限流分布式限流 ;根据限流方式,又分为
    的头像 发表于 10-09 17:53 1619次阅读

    限流方案常用算法 常用的限流方案

    需要注意的是借助Redis实现的限流方案可用于分布式系统,而guava实现的限流只能应用于单机环境。如果你觉得服务限流麻烦,可以在不改任
    发表于 04-08 10:50 404次阅读

    分布式限流简介

    限流是生产中经常遇到的一个场景, 目前现有的一个工具大部分是提供单机限流的能力, 例如 google 的 guava 中提供的 RateLimiter. 但是生产环境大部分是分布式环境, 在多台机器的环境下, 需要的是能对多台机
    的头像 发表于 05-16 16:40 1043次阅读
    <b class='flag-5'>分布式</b><b class='flag-5'>限流</b>简介

    如何判断限流断路能保护到微断?能否从限流曲线判断?

    如何判断限流断路能保护到微断?能否从限流曲线判断? 限流断路(也称为过载保护)是一
    的头像 发表于 02-05 15:23 536次阅读

    限流”型熔断和“非限流”型熔断有何区别?

    限流”型熔断和“非限流”型熔断有何区别? 熔断是一
    的头像 发表于 02-05 15:23 2246次阅读

    限流是啥 常见的限流

    限流通常会根据特定条件对电流进行调整。当电流超过设定的阈值时,限流将引入额外的电阻或其他形式的阻抗,以限制电流的流动。
    的头像 发表于 02-06 13:51 3447次阅读

    限流的使用方法和原理

    限流可用于控制充电设备的输出电流。在手机、平板电脑、电动车等充电器中使用限流装置可以控制充电电流,以防止过电流损坏充电设备或充电电池。
    发表于 02-06 14:24 1505次阅读

    Redis实现分布式多规则限流的方式介绍

    市面上很多介绍 Redis 如何实现限流的,但是大部分都有一个缺点,就是只能实现单一的限流,比如 1 分钟访问 1 次或者 60 分钟访问 10 次这种,但是如果想一个接口两规则都需要满足呢,我们的项目又是
    的头像 发表于 02-26 10:07 441次阅读
    Redis实现<b class='flag-5'>分布式</b>多规则<b class='flag-5'>限流</b>的方式介绍