計算CPU負載時使用滑動平均來下降CPU負載抖動帶來的不穩定,關於滑動平均見參考資料html
時間窗口機制,用滑動窗口機制來記錄以前時間窗口內的QPS和RT(response time)git
知足如下全部條件則拒絕該請求github
當前CPU負載超過預設閾值,或者上次拒絕時間到如今不超過1秒(冷卻期)。冷卻期是爲了避免能讓負載剛下來就立刻增長壓力致使立馬又上去的來回抖動緩存
averageFlying > max(1, QPS*minRT/1e3)
markdown
averageFlying = MovingAverage(flying)併發
在算MovingAverage(flying)的時候,超參beta默認取值爲0.9,表示計算前十次的平均flying值框架
取flying值的時候,有三種作法:oop
咱們使用的是第二種,這樣能夠更好的防止抖動,如圖: spa
QPS = maxPass * bucketsPerSecond設計
1e3表示1000毫秒,minRT單位也是毫秒,QPS*minRT/1e3獲得的就是平均每一個時間點有多少併發請求
dropreq
關鍵字若是以爲文章不錯,歡迎 github 點個 star 🤝