1. 程式人生 > 其它 >springcloud -- sentinel 滑動時間視窗計數

springcloud -- sentinel 滑動時間視窗計數

針對固定時間演算法會在臨界點存在瞬間大流量衝擊的場景,滑動時間視窗計數器演算法應運而生。它將時間視窗劃分為更小的時間片段,每過一個時間片段,我們的時間視窗就會往右滑動一格,每個時間片段都有獨立的計數器

sentinel的滑動視窗統計機制就是根據當前時間,獲取對應的時間視窗,並更新該時間視窗中的各項統計指標(pass/block/rt等),
這些指標被用來進行後續判斷,比如限流、降級等;隨著時間的推移,當前時間點對應的時間視窗是變化的,這時會涉及到時間視窗的初始化、複用等。
可以說,sentinel上的功能所用到的資料幾乎都是滑動視窗統計機制來維護和更新的。

  

滑動視窗可以先拆為滑動跟視窗兩個詞,先介紹下視窗,你可以這麼理解,一段是時間就是視窗,比如說我們可以把這個1s認為是1個視窗。 這個樣子我們就能將1分鐘就可以劃分成60個視窗了,這個沒毛病吧。如下圖我們就分成了60個視窗

比如現在處於第1秒上,那1s那個視窗就是當前視窗,就如下圖中紅框表示。

現在在來看下滑動,滑動很簡單,比如說現在時間由第1秒變成了第2秒,就是從當前這個視窗---->下一個視窗就可以了,

這個時候下一個視窗就變成了當前視窗,之前那個當前視窗就變成了上一個視窗,這個過程其實就是滑動。

滑動時間視窗

以bucket (小的時間視窗)來統計,預設值=500ms