色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么需要限流?常見的限流算法有哪些

jf_uPRfTJDa ? 來源:5G通信 ? 2023-08-18 11:35 ? 次閱讀

隨著系統服務的不斷擴展,越來越多的用戶訪問讓我們的系統“不堪重負”,為了防止某些用戶惡意高頻的訪問接口信息,限流(流量限速 Rate Limit)應運而生,這時候選擇一個合適的限流算法也就尤為重要。

作者:程造洋

單位:中國移動智慧家庭運營中心智慧互聯產品

Part 01為什么需要限流呢?

大量正常用戶高頻訪問導致服務器宕機

用戶惡意高頻訪問導致服務宕機

網頁爬蟲

對于這些情況我們需要對用戶的訪問進行限流訪問,限流的目的是保護服務節點或集群底層的存儲資源,防止調用方過度使用服務,引起系統崩潰,或者某個調用方過度的使用某個服務,導致其他服務的不可用,為了維持系統的穩定性和可用性,限流刻不容緩。

Part 02常見的限流算法介紹

2.1 計數器限流

計數器法是限流算法里最簡單也是最容易實現的一種算法,具體規則為:在指定周期內累加訪問次數,當訪問的次數達到我們設定的閾值時,觸發限流策略,當進入下一個時間周期時會將訪問次數重新清零。

優點:實現簡單;

缺點:突刺現象,如果設置每分鐘的并發限制數量為100,在單位時間1分鐘內的前1s,通過了100個請求,則后面的59s都無法接受任何請求,也就無法應對短時間高并發,存在一定的局限性。

舉例:假設有一個惡意用戶,他在0:59時,瞬間發送了100個請求,并且1:00又瞬間發送了100個請求,那么其實這個用戶在 1秒里面,瞬間發送了200個請求。

c9386af8-3ce1-11ee-ac96-dac502259ad0.png

我們剛才規定的是1分鐘最多100個請求(規劃的吞吐量),也就是每秒鐘最多1.7個請求,用戶通過在時間窗口的重置節點處突發請求, 可以瞬間突破我們的限流限制。用戶有可能通過算法的這個漏洞,瞬間壓垮我們的應用。

2.2 滑動窗口限流

在了解滑動窗口之前我們需要先了解一下固定窗口,規定:我們單位時間處理的請求數量比如我們規定我們的一個接口一分鐘只能訪問10次的話。使用固定窗口計數器算法的話可以這樣實現:給定一個變量counter來記錄處理的請求數量,當1分鐘之內處理一個請求之后counter+1,1分鐘之內的如果counter=100的話,后續的請求就會被全部拒絕。等到 1分鐘結束后,將counter回歸成0,重新開始計數。

滑動窗口算是固定窗口計數器算法的升級版。滑動窗口計數器算法相比于固定窗口計數器算法的優化在于:它把時間以一定比例分片。例如我們的借口限流每分鐘處理100個請求,我們可以把1 分鐘分為100個窗口。每隔1秒移動一次,每個窗口一秒只能處理 不大于100(請求數)/60(窗口數) 的請求, 如果當前窗口的請求計數總和超過了限制的數量的話就不再處理其他請求。滑動方式如下圖所示:

c9550c12-3ce1-11ee-ac96-dac502259ad0.png

很顯然,當滑動窗口的格子劃分的越多,滑動窗口的滾動就越平滑,限流的統計就會越精確。

2.3 漏桶算法限流

漏桶算法思路很簡單:水(請求)先進入到漏桶里,漏桶以一定的速度出水,當水流入速度過大,會在超過桶可接納的容量時直接溢出。漏桶算法其實很簡單,可以粗略的認為就是注水漏水過程,往桶中以任意速率流入水,以一定速率流出水,當水超過桶容量(capacity)則丟棄,因為桶容量是不變的,保證了整體的速率。

優點:削峰,有大量流量進入時,會發生溢出,從而限流保護服務可用;緩沖,不至于直接請求到服務器,緩沖壓力;

缺點:漏桶不能有效應對突發流量,但是能起到平滑突發流量(整流)的作用,同時不支持動態擴容。

2.4 令牌桶算法限流

令牌桶算法以一個設定的速率產生令牌并放入令牌桶中,每次請求都得申請令牌,如果令牌數量不足,則拒絕請求。令牌桶算法中新請求到來時會從桶里拿走一個令牌,如果桶內沒有令牌可拿,就拒絕服務。當然,令牌的數量也是有上限的。令牌的數量與時間和發放速率強相關,時間流逝的時間越長,會不斷往桶里加入越多的令牌,如果令牌發放的速度比申請速度快,令牌桶會放滿令牌,直到令牌占滿整個令牌桶,如下圖所示。

c973d804-3ce1-11ee-ac96-dac502259ad0.png

令牌桶限流大致的規則如下:

1)進水口按照某個速度,向桶中放入令牌。

2)令牌的容量是固定的,但是放行的速度不是固定的,只要桶中還有剩余令牌,一旦請求過來就能申請成功,然后放行。

3)如果令牌的發放速度,慢于請求到來速度,桶內就無牌可領,請求就會被拒絕。

優點:可以改變令牌的發放速度,方便應對突發出口流量,是選擇較多的限流算法;

缺點:實現復雜,相對于其他限流算法,令牌桶算法的實現較為復雜,對短時請求難以處理,這種情況下,可以考慮使用漏桶算法。

Part 03常見的限流器,算法庫包以及實現方案

滴滴的 tollbooth

Guava RateLimiter限流

輕量級流量控制組件sentinel

redis+lua分布式限流組件

redission分布式限流采用令牌桶思想和固定時間窗口

spring cloud gateway集成redis限流,但屬于網關層限流

編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4629

    瀏覽量

    93193
  • 計數器
    +關注

    關注

    32

    文章

    2261

    瀏覽量

    94875

原文標題:聊一聊系統限流算法

文章出處:【微信號:5G通信,微信公眾號:5G通信】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    利用三極管的限流電路設計

      在一些電流波動的場合總需要用到限流,然而限流電路多種,有些地方對成本敏感又需要有一定控制精度,推薦用下面介紹的三極管做簡單
    發表于 02-21 11:22 ?6354次閱讀
    利用三極管的<b class='flag-5'>限流</b>電路設計

    標準限流電路

    標準限流電路 圖 標準限流電路 在簡單串聯穩
    發表于 07-20 15:50 ?1.1w次閱讀
    標準<b class='flag-5'>限流</b>電路

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

    本文首先介紹了限流器的作用和特征,然后分析了限流器的優缺點,最后粗略說明了限流器的工作原理并且從限流方式方面對限流器進行了分類。
    的頭像 發表于 08-02 14:56 ?2.4w次閱讀

    LED內部不直接集成限流電阻的原因

    簡 介: 使用LED的過程中,需要在電路中設計有限流電路(可以是限流電阻,或者恒流電路)以保證LED流過的電流不要超過LED最大工作電流。使用限流電阻是在普通的LED應用中的最
    的頭像 發表于 02-11 08:05 ?4168次閱讀
    LED內部不直接集成<b class='flag-5'>限流</b>電阻的原因

    一文詳解限流算法的實現方式

    不依賴外部庫的情況下,限流算法什么實現的思路?本文介紹了3種實現限流的方式。
    的頭像 發表于 05-25 12:00 ?1440次閱讀

    常用限流方式分析 怎么設計出高并發限流方案

    來源:樓仔 常用限流方式 計數器 滑動窗口 漏桶 令牌桶 Redis + Lua 分布式限流 聊聊其它 限流對比 什么是限流呢?限流是限制到
    的頭像 發表于 10-09 17:53 ?1725次閱讀

    什么是限流,怎樣使用限流

    所有輸出電流都會流經限流電阻,它是一個放置在運算放大器反饋回路內的低歐姆值電阻。將限流電阻放置在反饋回路內十分必要,這樣電壓下降就不會在輸出中顯示為錯誤。
    的頭像 發表于 11-30 11:06 ?4353次閱讀

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

    需要注意的是借助Redis實現的限流方案可用于分布式系統,而guava實現的限流只能應用于單機環境。如果你覺得服務器端限流麻煩,可以在不改任何代碼的情況下直接使用容器
    發表于 04-08 10:50 ?444次閱讀

    分布式限流簡介

    限流是生產中經常遇到的一個場景, 目前現有的一個工具大部分是提供單機限流的能力, 例如 google 的 guava 中提供的 RateLimiter. 但是生產環境大部分是分布式環境, 在多臺機器的環境下, 需要的是能對多臺機
    的頭像 發表于 05-16 16:40 ?1095次閱讀
    分布式<b class='flag-5'>限流</b>簡介

    電阻如何限流不降壓

    電阻還需要同時不降壓,這就需要對電路中的各個參數進行精密計算和詳細設計,以確保電路的穩定性和效率。 電阻是如何起到限流作用的? 在電路中,電阻的主要作用是限制電流的流動。當電流通過電阻時,它會遇到電阻的阻力,這會
    的頭像 發表于 09-02 10:13 ?4019次閱讀

    電阻常見作用:分壓、分流和限流

    在電子線路中電阻的作用哪些,電阻主要起阻礙電流流過的作用,也是電路中使用最多的元器件,不同類型的電阻所起的作用不同,但電阻最常見的作用是分壓、分流和限流
    的頭像 發表于 09-14 15:38 ?4360次閱讀
    電阻<b class='flag-5'>常見</b>作用:分壓、分流和<b class='flag-5'>限流</b>

    限流器是啥 常見限流

    限流器通常會根據特定條件對電流進行調整。當電流超過設定的閾值時,限流器將引入額外的電阻或其他形式的阻抗,以限制電流的流動。
    的頭像 發表于 02-06 13:51 ?3933次閱讀

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

    常見限流算法包括計數器、固定窗口、滑動窗口、漏桶和令牌桶等。其中,計數器是最簡單的限流算法,它通過統計請求的數量來進行
    的頭像 發表于 02-06 14:17 ?1860次閱讀
    分布式神器-<b class='flag-5'>限流</b>器的四種<b class='flag-5'>限流</b>方法

    限流電阻什么作用_限流電阻選擇原則

    限流電阻在電路中起到了至關重要的作用,其主要功能包括:   限制電流:   限流電阻通過串聯在電路中,增加負載的總電阻,從而減小電流的大小。這一功能在保護電路元件免受過大電流損害方面至關重要。當電流過大時,限流電阻能
    的頭像 發表于 10-24 17:00 ?1503次閱讀

    限流電阻怎么接入電路_限流電阻正負極嗎

    限流電阻的接入電路方式主要取決于具體的應用場景和電路要求。以下是一些常見的接入方法:   一、串聯接入電路   基本串聯方式:   將限流電阻直接串聯在需要
    的頭像 發表于 10-24 17:03 ?1543次閱讀
    主站蜘蛛池模板: 少妇伦子伦精品无码 | 国产久久亚洲美女久久 | 亚洲精品无夜久久久久久久久 | 亚洲性爱城 | 国产高清亚洲日韩字幕一区 | 麻豆精品2021最新 | 激情床戏视频片段有叫声 | 超碰97av 在线人人操 | 久久才是精品亚洲国产 | 久久水蜜桃亚洲AV无码精品偷窥 | 国精产品砖一区二区三区糖心 | 丝袜诱惑qvod | 久久精品国产免费中文 | 久久国产精品无码视欧美 | 97成人碰碰在线人妻少妇 | 韩国hd高清xxx | 国产色综合色产在线视频 | 日本人奶水中文影片 | 国产AV天堂一区二区三区 | MD传媒MD0021在线观看 | 野花社区视频WWW高清 | 亚洲欧美日韩在线码不卡 | 亚洲中文字幕日产乱码2020 | 清冷受被CAO的合不拢 | 日日操天天操夜夜操 | 男污女XO猛烈的动态图 | 国产日韩成人内射视频 | 强开少妇嫩苞又嫩又紧九色 | 在线免费观看成年人视频 | 99久久久无码国产精品AAA | 大胸女晃奶动态图 | 精品 在线 视频 亚洲 | 色AV色婷婷97人妻久久久 | 九色PORNY真实丨首页 | 日韩精品一区二区三区色欲AV | 超碰免费碰免费视频 | 午夜福利08550 | 品色堂主页| 亚洲在线视频自拍精品 | 美女强奷到抽搐在线播放 | 97人妻AV天天澡夜夜爽 |