日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

五分鐘技術(shù)趣談 | 業(yè)務(wù)系統(tǒng)常用限流算法淺析

來源: 責(zé)編: 時間:2023-09-18 21:40:32 339觀看
導(dǎo)讀Part 01什么是限流? 業(yè)務(wù)系統(tǒng)限流是指系統(tǒng)在面臨高并發(fā)或者大流量請求的情況下,限制新的請求對系統(tǒng)的訪問,從而保證系統(tǒng)的穩(wěn)定性和安全性。Part 02為什么要限流? 系統(tǒng)資源和處理能力都是有限的,如果一個系統(tǒng)不限制流量,比

圖片kaN28資訊網(wǎng)——每日最新資訊28at.com

Part 05

滑動窗口算法 

為了解決固定窗口算法中的臨界問題,讓流量限制更加平滑,產(chǎn)生了滑動窗口算法。該算法將固定窗口中分割出多個小窗口,分別記錄每個小窗口內(nèi)的訪問次數(shù),然后根據(jù)時間將窗口往前滑動并刪除過期的小窗口。kaN28資訊網(wǎng)——每日最新資訊28at.com

圖片kaN28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)窗口時間還是1分鐘,滑動窗口算法把它劃分為6個小周期,每個小周期是10秒,對應(yīng)滑動窗口被劃分為6個小格子。每隔10秒時間窗口就會往右滑動一格,每個小窗口都有獨(dú)立的計數(shù)器,如果請求是43秒到達(dá)的,40秒到50秒小窗口對應(yīng)的計數(shù)器就會加1。kaN28資訊網(wǎng)——每日最新資訊28at.com

我們看下滑動窗口是如何解決臨界問題的,假設(shè)1分鐘內(nèi)的限流閥值還是10,50秒到60秒內(nèi)(比如58秒的時候)來了10個請求,落在綠色格子里。時間過了60秒這個點之后又來10個請求,落在紅色格子里。滑動窗口過了60秒這個點后會右移一個小格,當(dāng)前的窗口時間段是10秒到70秒,這個區(qū)域的請求已經(jīng)超過限定的10了,所以紅色格子的請求都會被拒絕。kaN28資訊網(wǎng)——每日最新資訊28at.com

滑動窗口算法雖然解決了臨界問題,但是一旦到達(dá)限流閾值后,請求都會被直接拒絕。在實際應(yīng)用中我們要的限流效果不是把流量一下子掐斷,而是讓流量平滑地進(jìn)入系統(tǒng)當(dāng)中。kaN28資訊網(wǎng)——每日最新資訊28at.com

Part 06

漏桶算法 

如何更加平滑的限流,我們來看看漏桶算法。漏桶算法的限流原理可以認(rèn)為就是進(jìn)水漏水的過程。請求像水一樣以任意速率注入漏桶,而漏桶會按照固定的速率將水漏掉;當(dāng)進(jìn)水速度超過漏水速度時,漏桶會裝滿,此后進(jìn)入的水會溢出,也就是請求被丟棄。kaN28資訊網(wǎng)——每日最新資訊28at.com

圖片kaN28資訊網(wǎng)——每日最新資訊28at.com

漏桶算法主要目的是將網(wǎng)絡(luò)中的突發(fā)流量整合成平滑穩(wěn)定的流量,不過由于漏桶對流量的控制過于嚴(yán)格,導(dǎo)致部分場景下不能充分利用系統(tǒng)資源。因為漏桶的漏水速率是固定的,即使在某一時刻下游系統(tǒng)處理能力富余,漏桶也不會允許突發(fā)流量通過。流量突發(fā)時我們希望系統(tǒng)在穩(wěn)定的同時,能盡可能快的處理用戶請求,接下來介紹的令牌桶算法能夠在一定程度上解決流量突發(fā)的問題。kaN28資訊網(wǎng)——每日最新資訊28at.com

Part 07

令牌桶算法 

令牌桶算法是對漏桶算法的一種改進(jìn),除了能夠限流外,還允許一定程度的流量突發(fā)。其原理是設(shè)置一個令牌桶,以恒定速率向令牌桶放入令牌,請求到達(dá)時嘗試從令牌桶中拿令牌,只有拿到令牌才能夠放行,否則請求將會被拒絕。kaN28資訊網(wǎng)——每日最新資訊28at.com

令牌桶具有以下特點:kaN28資訊網(wǎng)——每日最新資訊28at.com

  • 根據(jù)限流大小定速往令牌桶里放令牌。
  • 如果令牌數(shù)量超過令牌桶容量的限制就丟棄令牌。
  • 每一個請求首先去令牌桶拿令牌,拿到令牌就處理請求,拿不到令牌就直接拒絕。

圖片kaN28資訊網(wǎng)——每日最新資訊28at.com

Part 08

 小結(jié)  

最后我們對上述四種限流算法進(jìn)行一下簡單的總結(jié)。kaN28資訊網(wǎng)——每日最新資訊28at.com

固定窗口算法實現(xiàn)簡單,但是流量曲線不夠平滑有突刺現(xiàn)象,在窗口切換時可能會產(chǎn)生兩倍閾值流量的臨界問題。滑動窗口算法作為固定窗口算法的一種改進(jìn),有效解決了窗口切換時的臨界問題。阿里開源的流量控制框架Sentinel就是基于滑動窗口實現(xiàn)的。kaN28資訊網(wǎng)——每日最新資訊28at.com

漏桶算法能夠?qū)α髁科鸬狡交鞯淖饔茫岆S機(jī)不確定的流量以固定的速率流出,但是不能解決流量突發(fā)問題。令牌桶算法能夠在限制數(shù)據(jù)的平均傳輸速率的同時還允許某種程度的突發(fā)傳輸。Guava的RateLimiter限流組件,就是基于令牌桶算法實現(xiàn)的。kaN28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-10423-0.html五分鐘技術(shù)趣談 | 業(yè)務(wù)系統(tǒng)常用限流算法淺析

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: T·Club技術(shù)開放日杭州站精彩回顧:音視頻技術(shù)創(chuàng)新探索與應(yīng)用實踐 T·Club

下一篇: Python中30個常見的內(nèi)置函數(shù)使用講解(一)

標(biāo)簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 汶川县| 盖州市| 和硕县| 普兰县| 成武县| 巨野县| 黄骅市| 祥云县| 涡阳县| 泾源县| 沂水县| 乃东县| 庐江县| 永福县| 阿克苏市| 七台河市| 永修县| 增城市| 东方市| 新化县| 白玉县| 信宜市| 驻马店市| 达日县| 吉木萨尔县| 祁东县| 南漳县| 思南县| 珠海市| 宁武县| 吉木萨尔县| 昌宁县| 安阳市| 卓资县| 陇川县| 大安市| 昭通市| 临城县| 云梦县| 桃源县| 河西区|