Navigation

    西南IT社区
    • Register
    • Login
    • Search
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    流量控制的常用方式

    极客生涯
    流量控制的常用方式
    1
    1
    34
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 此
      此恨绵绵 last edited by

        在解释什么是限流之前,我们先了解一个点,就是服务的请求上限,也可以理解为是服务承载量,即该服务支持一定时间内最多能够支持多少请求。只有将服务承载量进行量化,能够被测量,才能根据这个测量值,采取一定的对应措施。

        服务承载量,指的是单位时间内的处理量。北京地铁早高峰,地铁站都会做一件事情,就是限流了!想法很直接,就是想在一定时间内把请求限制在一定范围内,保证系统不被冲垮,同时尽可能提升系统的吞吐量。做到真正的限制,不是那么容易的。因为每一个方案实现原理都不同,也就意味着代码实现不同。

      限流常用的方式有:
        计数器:确定方法的最大访问量MAX,每次进入方法前计数器+1,将结果和最大并发量MAX比较,如果大于等于MAX,则直接返回;如果小于MAX,则继续执行。计数器的实现方式,简单粗暴。在一段时间内,进行计数,与阀值进行比较,到了时间临界点,将计数器清0
      a106afdf-a779-4f8f-a6c3-cad7aa18c06a-image.png
        滑动窗口:计数器滑动窗口算法是计数器固定窗口算法的改进,解决了固定窗口切换时可能会产生两倍于阈值流量请求的缺点。
      滑动窗口的意思是说把固定时间片,进行划分,并且随着时间的流逝,进行移动,这样就巧妙的避开了计数器的临界点问题。也就是说这些固定数量的可以移动的格子,将会进行计数判断阀值,因此格子的数量影响着滑动窗口算法的精度。
      1b3737cd-b7a0-4661-8261-941f7f3743f1-image.png
        漏桶:漏桶算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,可以看出漏桶算法能强行限制数据的传输速率。
      以固定速率从桶中流出水滴,以任意速率往桶中放入水滴,桶容量大小是不会发生改变的。
      9f78cbd7-9c2a-49a2-8dac-d5088dc10057-image.png
        令牌桶:令牌桶算法是对漏斗算法的一种改进,除了能够起到限流的作用外,还允许一定程度的流量突发。令牌桶算法是以恒定的速率将令牌放入桶中,这个时候如果来了突发流量,如果桶中有令牌,则可以直接获取令牌,并处理请求,基于该原理,就解决了漏桶算法中不能 处理突发流量 的问题。
      0f25514f-6013-4e95-ac8e-fdfa547a33f5-image.png

      1 Reply Last reply Reply Quote 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      此
      娇
      玩
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y
      C
      Z
      E
      Y
      U
      I
      A
      Z
      Y
      Y

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号