「算法」權重輪詢調度算法

點擊上方"java全棧技術"關注,每天學習一個java知識點,喜歡的也可以關注WX號"ITeye"

nginx不單可以作為強大的web服務器,也可以作為一個反向代理服務器。如果nginx是以反向代理的形式配置運行,那麼對請求的實際處理需要轉發到後端服務器運行,如果後端服務器有多臺,如何選擇一臺合適的後端服務器來處理當前請求,這就是負載均衡。

由於每臺服務器的配置、安裝的業務應用等不同,其處理能力會不一樣。所以,我們根據服務器的不同處理能力,給每個服務器分配不同的權值,使其能夠接受相應權值數的服務請求。

權重輪詢調度算法流程

假設有一組服務器S = {S0, S1, …, Sn-1},W(Si)表示服務器Si的權值,一個指示變量i表示上一次選擇的服務器,指示變量cw表示當前調度的權值,max(S)表示集合S中所有服務器的最大權值,gcd(S)表示集合S中所有服務器權值的最大公約數。變量i初始化為-1,cw初始化為零。其算法如下

「算法」權重輪詢調度算法

Java代碼實現

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法

「算法」權重輪詢調度算法


分享到:


相關文章: