成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘技術趣談 | 業務系統常用限流算法淺析

開發
日常生活中限流很常見,比如一些熱門景區會限制每天的參觀人數,游客需要提前預約才能游玩,超過限制游客就無法進入景區。那么在業務系統中限流是什么呢?一起看一下吧。

Part 01

什么是限流? 

業務系統限流是指系統在面臨高并發或者大流量請求的情況下,限制新的請求對系統的訪問,從而保證系統的穩定性和安全性。

Part 02

為什么要限流?  

系統資源和處理能力都是有限的,如果一個系統不限制流量,比如在秒殺活動、大促銷等場景下,瞬時間大量的流量訪問將超出系統的負載,最終會導致服務異常、機器宕機。

Part 03

常用的限流算法 

常用的限流算法有固定窗口算法、滑動窗口算法、漏桶算法和令牌桶算法,下面將對這幾種算法分別進行介紹,這也是所有限流框架實現限流的基礎。

Part 04

固定窗口算法 

固定窗口限流算法是最基礎的一種限流算法。原理是將一段固定時間當做一個窗口,通過計數器記錄這個窗口接收到的請求次數。當請求次數大于限流閾值,就拒絕訪問;反之就允許訪問,并將計數器加1。當時間窗口結束后將計數器重置為0。

該算法易于理解,實現也簡單。但是缺點也很明顯,會產生突刺現象和臨界問題:

  • 突刺現象是指窗口一段時間內服務不可用,導致流程曲線不夠平滑。假如窗口大小為1分鐘,限流閾值為10,然后窗口的第1秒恰好進來10個請求,導致以后59秒的請求都被拒絕。
  • 臨界問題是指窗口切換時產生兩倍閾值流量的請求。假如窗口大小還是1分鐘,限流閾值還是10,然后第一個窗口前期沒有請求,恰好在第59秒進來10個請求,此時這10個請求都會放行。下一個窗口的第1秒恰好又來了10個請求,也全部放行了,相當于2秒之內通過了20個請求,而系統設定的閾值是10。惡意用戶有可能通過算法的這個漏洞,在時間窗口的重置節點處突發請求,瞬間壓垮業務系統。

圖片

Part 05

滑動窗口算法 

為了解決固定窗口算法中的臨界問題,讓流量限制更加平滑,產生了滑動窗口算法。該算法將固定窗口中分割出多個小窗口,分別記錄每個小窗口內的訪問次數,然后根據時間將窗口往前滑動并刪除過期的小窗口。

圖片

假設窗口時間還是1分鐘,滑動窗口算法把它劃分為6個小周期,每個小周期是10秒,對應滑動窗口被劃分為6個小格子。每隔10秒時間窗口就會往右滑動一格,每個小窗口都有獨立的計數器,如果請求是43秒到達的,40秒到50秒小窗口對應的計數器就會加1。

我們看下滑動窗口是如何解決臨界問題的,假設1分鐘內的限流閥值還是10,50秒到60秒內(比如58秒的時候)來了10個請求,落在綠色格子里。時間過了60秒這個點之后又來10個請求,落在紅色格子里。滑動窗口過了60秒這個點后會右移一個小格,當前的窗口時間段是10秒到70秒,這個區域的請求已經超過限定的10了,所以紅色格子的請求都會被拒絕。

滑動窗口算法雖然解決了臨界問題,但是一旦到達限流閾值后,請求都會被直接拒絕。在實際應用中我們要的限流效果不是把流量一下子掐斷,而是讓流量平滑地進入系統當中。

Part 06

漏桶算法 

如何更加平滑的限流,我們來看看漏桶算法。漏桶算法的限流原理可以認為就是進水漏水的過程。請求像水一樣以任意速率注入漏桶,而漏桶會按照固定的速率將水漏掉;當進水速度超過漏水速度時,漏桶會裝滿,此后進入的水會溢出,也就是請求被丟棄。

圖片

漏桶算法主要目的是將網絡中的突發流量整合成平滑穩定的流量,不過由于漏桶對流量的控制過于嚴格,導致部分場景下不能充分利用系統資源。因為漏桶的漏水速率是固定的,即使在某一時刻下游系統處理能力富余,漏桶也不會允許突發流量通過。流量突發時我們希望系統在穩定的同時,能盡可能快的處理用戶請求,接下來介紹的令牌桶算法能夠在一定程度上解決流量突發的問題。

Part 07

令牌桶算法 

令牌桶算法是對漏桶算法的一種改進,除了能夠限流外,還允許一定程度的流量突發。其原理是設置一個令牌桶,以恒定速率向令牌桶放入令牌,請求到達時嘗試從令牌桶中拿令牌,只有拿到令牌才能夠放行,否則請求將會被拒絕。

令牌桶具有以下特點:

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

圖片

Part 08

 小結  

最后我們對上述四種限流算法進行一下簡單的總結。

固定窗口算法實現簡單,但是流量曲線不夠平滑有突刺現象,在窗口切換時可能會產生兩倍閾值流量的臨界問題。滑動窗口算法作為固定窗口算法的一種改進,有效解決了窗口切換時的臨界問題。阿里開源的流量控制框架Sentinel就是基于滑動窗口實現的。

漏桶算法能夠對流量起到平滑整流的作用,讓隨機不確定的流量以固定的速率流出,但是不能解決流量突發問題。令牌桶算法能夠在限制數據的平均傳輸速率的同時還允許某種程度的突發傳輸。Guava的RateLimiter限流組件,就是基于令牌桶算法實現的。

責任編輯:龐桂玉 來源: 移動Labs
相關推薦

2023-08-07 06:35:07

系統限流

2023-09-12 07:10:13

Nacos架構

2023-09-17 17:51:43

Android 14

2023-08-06 06:55:29

數字可視化物聯網

2023-07-23 18:47:59

Docker開源

2023-07-12 16:03:37

Android開發架構

2023-07-16 18:49:42

HTTP網絡

2023-08-29 07:02:09

3D

2023-04-15 20:25:23

微前端

2023-07-02 16:09:57

人工智能人臉識別

2023-07-02 16:34:06

GPU虛擬化深度學習

2023-07-31 08:55:15

AI技術網絡暴力

2024-12-18 14:10:33

2023-07-12 15:50:29

機器學習人工智能

2023-08-29 06:50:01

Javamaven

2023-08-15 14:46:03

2023-08-06 07:00:59

Openstack網絡

2023-09-03 19:21:07

大數據架構

2023-07-12 16:13:01

2023-09-02 20:22:42

自動化測試軟件開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av在线一区 | 99国产精品久久久久久久 | 日韩欧美中文字幕在线观看 | 一区二区免费 | 波多野吉衣久久 | 中文字幕福利视频 | 亚洲欧美精品国产一级在线 | 人人干免费| 欧美亚洲国产一区 | 欧美三区| 欧美 日韩 国产 成人 在线 | 中文字幕在线观看精品 | 男人天堂免费在线 | 天天看天天操 | 91久久国产综合久久 | 九九热在线免费视频 | 色婷婷久久久亚洲一区二区三区 | 国产亚洲成av人片在线观看桃 | 日日天天 | 欧美色综合 | 日本 欧美 国产 | 在线午夜 | 精品视频免费 | 中文字幕欧美一区二区 | 中文字幕日韩欧美 | 成人免费大片黄在线播放 | 久久成人免费观看 | 天天躁人人躁人人躁狂躁 | av中文字幕在线播放 | 在线观看av网站永久 | 欧美日韩精品一区二区三区视频 | 欧美一区二| 日韩在线小视频 | 久久久久久国产 | 成人在线网址 | 欧美一区二区在线播放 | 99re99| 久久成人免费 | 国产日韩久久 | 国产亚洲精品成人av久久ww | 99在线视频观看 |