RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

要長高 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2024-02-06 14:17 ? 次閱讀

分布式系統(tǒng)中的限流器是一種重要的技術(shù)組件,用于控制和管理系統(tǒng)的流量,防止系統(tǒng)因流量過大而崩潰或性能下降。限流器的主要作用是在保證系統(tǒng)可用性的前提下,對流量進行合理的限制和調(diào)度,以保證系統(tǒng)的穩(wěn)定性和可靠性。

在分布式系統(tǒng)中,限流器通常被部署在系統(tǒng)的入口或關(guān)鍵節(jié)點上,用于控制來自外部或內(nèi)部的請求流量。通過限制流量的速度和數(shù)量,限流器可以有效地防止系統(tǒng)因流量過大而出現(xiàn)擁塞或崩潰的情況。同時,限流器還可以對流量進行調(diào)度和分配,以保證系統(tǒng)的負(fù)載均衡和資源利用率的最大化。

常見的限流算法包括計數(shù)器、固定窗口、滑動窗口、漏桶和令牌桶等。其中,計數(shù)器是最簡單的限流算法,它通過統(tǒng)計請求的數(shù)量來進行限流,但缺乏時間概念,容易出現(xiàn)流量突增的情況。固定窗口和滑動窗口算法則引入了時間概念,通過對時間窗口內(nèi)的請求數(shù)量進行限制來實現(xiàn)限流,但可能存在窗口邊界的流量突變問題。漏桶和令牌桶算法則通過控制流量的速率來進行限流,可以更好地平滑流量波動。

在實際應(yīng)用中,限流器還可以結(jié)合其他技術(shù)手段來提高系統(tǒng)的可用性和性能,如降級處理、請求排隊、熔斷機制等。當(dāng)系統(tǒng)流量超過閾值時,可以通過降級處理來減少非關(guān)鍵業(yè)務(wù)的影響,保證核心業(yè)務(wù)的正常運行;請求排隊則可以將超出閾值的請求放入隊列中等待處理,避免直接拒絕請求導(dǎo)致用戶體驗下降;熔斷機制則可以在系統(tǒng)出現(xiàn)異常情況時快速切斷請求鏈路,防止故障擴散和影響整個系統(tǒng)。

限流方法

這里我們主要討論后端基于請求量的限流,限流是一種非常廣泛的應(yīng)用技術(shù),就比如你在登錄系統(tǒng)時,經(jīng)常會需要你輸入手機驗證、動態(tài)碼或一些奇奇怪怪的驗證方式, 來降低登錄請求的頻次。

計數(shù)限流

按數(shù)量進行控制,達到設(shè)置的閾值則進行限流,其中固定窗口,滑動窗口則是通過該方法實現(xiàn)。

固定窗口

通過控制時間單元內(nèi)允許的請求數(shù)量,一旦達到閾值,則不會處理該請求后續(xù)相關(guān)的業(yè)務(wù)或者直接讓請求快速失敗并給予提示。

wKgaomXBz4CAAjufAABMxUltGuk761.png

比如我們配置10s內(nèi)允許請求的流量為1000,在第1~9s內(nèi)請求為0,在第9~10秒內(nèi)的請求數(shù)為1000,這樣一秒內(nèi)的請求就達到了1000。當(dāng)然我們可以時間單元劃分成更小粒度, 但是應(yīng)該多小才合適呢?

問題:只能對時間單元內(nèi)的總請求數(shù)進行控制,當(dāng)請求集中在較小時間范圍內(nèi)時,無法達到流量限制的效果,因此這是一種粗粒度的流量限制手段

滑動窗口

為了解決固定窗口算法中存在的問題,通過滑動窗口的方法,將上述時間單元劃分成多個細(xì)粒度的時間窗口,每個窗口都有自己獨立的請求計數(shù)器,這樣就可以讓時間單元內(nèi)的流量控制均勻地 落在各個時間窗口上,同時滑動的時間窗口可以形成連續(xù)時間區(qū)間控制,并不像固定窗口那樣只在兩個時間刻度間。

wKgZomXBz4qAZDhtAAGEYCqeIjE274.png

比如時間單元為1s,每個時間窗口為100ms,在1秒內(nèi)的10個時間窗口可以為09:01:01.000~09:01:02.000、09:01:01.200~09:01:02.800...

問題:滑動窗口的區(qū)間劃分的越多,則滑動窗口的滾動就越平滑,限流的統(tǒng)計就會越精確,但也需要更多的資源為窗口時間片段保存計數(shù)器,從而耗費系統(tǒng)資源

漏桶算法

如果將請求看成水滴,限流器看成一個下面開口的桶(漏桶)。漏桶算法其實就是當(dāng)水滴(請求)先進入到漏桶里,漏桶以一定的速度出水,當(dāng)水流入速度過大時則會超過桶的可接納容量, 這時水將直接溢出,漏桶算法能強行限制數(shù)據(jù)的傳輸速率。使用漏桶算法,可以保證接口會以一個常速速率來處理請求,所以漏桶算法必定不會出現(xiàn)臨界問題。

wKgZomXBz5WACnaKAAEFmqNBGBo461.png

問題:當(dāng)短時間內(nèi)如果有大量的突發(fā)請求時,即使服務(wù)器負(fù)載不高,每個請求也需要等待一段時間(水滴間隔)才能被響應(yīng)。

總之,分布式系統(tǒng)中的限流器是一種重要的技術(shù)組件,它可以幫助系統(tǒng)更好地應(yīng)對流量壓力,保證系統(tǒng)的穩(wěn)定性和可靠性。在實際應(yīng)用中,需要根據(jù)系統(tǒng)的特點和需求選擇合適的限流算法和技術(shù)手段,以實現(xiàn)最佳的限流效果。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94476
  • 限流器
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    14481
  • 分布式系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    19219
收藏 人收藏

    評論

    相關(guān)推薦

    分布式軟件系統(tǒng)

    計算機硬件的配置方式和相應(yīng)的功能配置方式。它是一多處理的計算機系統(tǒng),各處理通過互連網(wǎng)絡(luò)構(gòu)成統(tǒng)一的系統(tǒng)。系統(tǒng)采用分布式計算結(jié)構(gòu),即把原來系統(tǒng)內(nèi)中央處理
    發(fā)表于 07-22 14:53

    限流熔斷怎么分類?

    限流熔斷是高壓熔斷的一。限流熔斷分為電阻限流
    發(fā)表于 11-01 09:00

    分布式數(shù)據(jù)采集系統(tǒng)同步的方法

    本文介紹了基于SAR ADC的系統(tǒng)和基于sigma-delta (∑-Δ) ADC的分布式數(shù)據(jù)采集系統(tǒng)同步的傳統(tǒng)方法,且探討了這兩架構(gòu)之間的區(qū)別。我們還將討論同步多個Σ-Δ ADC時遇到的典型不便
    發(fā)表于 11-23 10:33

    多路輸出隔離驅(qū)動電路及其在短路限流中的應(yīng)用

    多路輸出隔離驅(qū)動電路及其在短路限流中的應(yīng)用   摘要:給出了一新穎的多路輸出隔離驅(qū)動電路,它利用分布式
    發(fā)表于 07-06 13:58 ?725次閱讀
    多路輸出隔離驅(qū)動電路及其在短路<b class='flag-5'>限流</b><b class='flag-5'>器</b>中的應(yīng)用

    設(shè)計出四種場景分析分布式能源系統(tǒng)潛在趨勢,并制定相應(yīng)的行動方針

    羅蘭貝格對此進行了研究,邀請了50位專家來預(yù)測至2035年的歐洲能源市場,通過分析最有可能影響分布式能源系統(tǒng)轉(zhuǎn)型的關(guān)鍵政治與市場變量,設(shè)計出四種場景,政策制定者與市場參與者可以據(jù)此分析潛在趨勢,并制定相應(yīng)的行動方針。
    的頭像 發(fā)表于 01-13 09:18 ?4400次閱讀

    飽和鐵心橋故障限流

    為解決系統(tǒng)短路電流過大、傳統(tǒng)飽和鐵心型故障限流限流效果和經(jīng)濟性不理想等問題,提出一飽和鐵心橋故障
    發(fā)表于 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>

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

    本文首先介紹了限流的作用和特征,然后分析了限流的優(yōu)缺點,最后粗略說明了限流的工作原理并且從
    的頭像 發(fā)表于 08-02 14:56 ?2.4w次閱讀

    常用限流方式分析 怎么設(shè)計出高并發(fā)限流方案

    ,而對于超過限制的流量,則通過拒絕服務(wù)的方式保證整體系統(tǒng)的可用性。 根據(jù)限流作用范圍,可以分為 單機限流分布式限流 ;根據(jù)限流方式,又分為
    的頭像 發(fā)表于 10-09 17:53 ?1673次閱讀

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

    需要注意的是借助Redis實現(xiàn)的限流方案可用于分布式系統(tǒng),而guava實現(xiàn)的限流只能應(yīng)用于單機環(huán)境。如果你覺得服務(wù)限流麻煩,可以在不改任
    發(fā)表于 04-08 10:50 ?419次閱讀

    分布式限流簡介

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

    如何判斷限流斷路能保護到微斷?能否從限流曲線判斷?

    如何判斷限流斷路能保護到微斷?能否從限流曲線判斷? 限流斷路(也稱為過載保護)是一
    的頭像 發(fā)表于 02-05 15:23 ?583次閱讀

    限流”型熔斷和“非限流”型熔斷有何區(qū)別?

    限流”型熔斷和“非限流”型熔斷有何區(qū)別? 熔斷是一
    的頭像 發(fā)表于 02-05 15:23 ?2563次閱讀

    限流是啥 常見的限流

    限流通常會根據(jù)特定條件對電流進行調(diào)整。當(dāng)電流超過設(shè)定的閾值時,限流將引入額外的電阻或其他形式的阻抗,以限制電流的流動。
    的頭像 發(fā)表于 02-06 13:51 ?3655次閱讀

    限流的使用方法和原理

    限流可用于控制充電設(shè)備的輸出電流。在手機、平板電腦、電動車等充電器中使用限流裝置可以控制充電電流,以防止過電流損壞充電設(shè)備或充電電池。
    發(fā)表于 02-06 14:24 ?1647次閱讀

    Redis實現(xiàn)分布式多規(guī)則限流的方式介紹

    市面上很多介紹 Redis 如何實現(xiàn)限流的,但是大部分都有一個缺點,就是只能實現(xiàn)單一的限流,比如 1 分鐘訪問 1 次或者 60 分鐘訪問 10 次這種,但是如果想一個接口兩規(guī)則都需要滿足呢,我們的項目又是
    的頭像 發(fā)表于 02-26 10:07 ?489次閱讀
    Redis實現(xiàn)<b class='flag-5'>分布式</b>多規(guī)則<b class='flag-5'>限流</b>的方式介紹
    RM新时代网站-首页