說一說負載均衡算法

    負載均衡算法能夠分爲兩類:靜態負載均衡算法,基於服務器的容量,就是高配置的服務器比低配置的服務器分配更多的請求;動態負載均衡算法根據服務器的情況,好比經過監控能夠獲得平均響應時間,或者CPU佔用率,內存佔用率按照某種方式進行計算,做爲權重值git

靜態負載均衡算法github

隨機(Random):利用隨機數生成算法選取一個服務器,而後把鏈接發送給他。雖然許多負載產品都支持該算法,可是它的有效性一直受到質疑,除非把服務器的可運行時間看的很重。算法

輪詢(Round Robin):按順序把每一個新的鏈接請求分配給下一個服務器,最終把全部請求平分給全部服務器。輪詢算法在大多數狀況下都工做不錯,可是若是負載均衡的設備在處理速度、鏈接速度和內存等方面不是徹底均等,那麼效果會打折扣服務器

加權輪詢(Weighted Round Robin):在該算法中每臺服務器的鏈接數量是按權重比例分配的。它是對普通輪詢算法的改進網絡

優先權(Priority):給全部的服務器分組,每組都定義優先權,把請求優先分配給優先級最高的服務器組(同一組內,採用輪詢或加權輪詢來分配請求);當最高優先級組中的全部服務器都出現故障時,才把請求發送給次優先級的服務器組。負載均衡

動態負載均衡算法dom

動態輪詢(Dynamic Round Robin):相似於加權輪詢,可是權重值是基於各個拂去其的持續監控,而且不斷更新的。根據服務器的實時性能分析來分配請求。性能

最少的鏈接(Least Connection):系統把新的請求分配給當前鏈接數目最少的服務器。該算法在各個服務器運算能力基本相似的環境中很是有效。blog

最快算法(Fastest):最快算法基於全部服務器中響應時間最快的給分配鏈接。該算法在服務器跨不一樣網絡的環境中特別有用。內存

觀察算法(Observed):該算法同時利用最小鏈接算法和最快鏈接算法來實施負載均衡。服務器根據當前的鏈接數和相應時間獲得一個分數,分數越高表明性能越好,分配的鏈接也就越多。

預判算法(Predictive):該算法使用觀察算法來計算分數,可是它會分析分數的變化趨勢來判斷某臺服務器的性能,是正在改善仍是下降,具備改善趨勢的服務器會獲得更多的鏈接。該算法適用於大多數環境。

說完上面的概念後,就要實踐了,在這裏實現一個加權輪詢負載均衡算法

image

最後,代碼下載

相關文章
相關標籤/搜索