Nginx動態負載均衡3---動態負載演算法設計
前面學習了一些動態負載均衡演算法,基本思想都是量化後端伺服器的效能指標,分配指標權重,計算實時權重,然後動態改變nginx的權重來實現請求轉發和處理,下面是一篇利用機器學習演算法來預測某一個請求在各個伺服器的請求響應時間,將該請求轉發至響應時間最小的機器上,依次實現nginx高併發處理。
論文三
[1]陳大才. 基於Nginx的高併發訪問伺服器的研究與應用[D].中國科學院大學(中國科學院瀋陽計算技術研究所),2018. |
影響高併發的因素分析:
單機效能 叢集架構 網路層面 作業系統層面 資料庫問題 中介軟體效能 擴充套件性問題 應用服務層面 負載均衡演算法
通過對歷史資料進行訓練得到響應時間預測模型,來預測新請求的響應時間,根據每個伺服器節點的預估響應時間將請求分配給具有最少
響應時間的伺服器節點,從而提高叢集中請求分配的均衡性,提高叢集的效率。
演算法流程圖如下:
每個後端伺服器的效能指標:
當前效能情況P 預估請求等待時間Tw 預估響應時間Rp
每個請求的衡量指標:
請求型別Action 請求開始時間Rstart 請求結束時間Rend 請求實際響應時間Rr = Rstart-Rend
響應時間預測模型:
效能P使用cpu,記憶體,磁碟,網路來衡量
機器學習演算法使用樸素貝葉斯,決策樹,支援向量機等
演算法目標是估計請求的預估響應時間,分析請求響應時間的響應因素,即構建特徵向量,然後利用機器學習演算法來進行預測
作者的結果:
樸素貝葉斯:
決策樹模型:
支援向量機:
動態均衡或者響應時間預測等一定要考慮演算法本身的開銷以及演算法時間複雜度,如果演算法執行太慢,那那就沒有意義了。
論文四
[1]王利萍. 基於Nginx伺服器叢集負載均衡技術的研究與改進[D].山東大學,2015. |
動態自適應負載均衡演算法
通過蒐集大量的後端伺服器叢集中各伺服器在最近一段時間處理請求的響應時間並進行數學分析,將各伺服器處理響應時間的動態變化應用到後端伺服器權值的動態計算當中,從而實現動態調整請求分配策略。
後端伺服器叢集:
初始權重為Wi
第i個伺服器在最近n次的響應時間:
整個叢集的響應時間:
伺服器叢集最後一次請求的平均處理時間
叢集負載的平均方差:
第i個伺服器的響應時間方差值,反映伺服器Si的負載穩定情況,越小越穩定
實時權重的調整:
演算法流程圖:
作者測試的結果: