日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用的负载平衡算法

發布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用的负载平衡算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1? 負載平衡算法簡介 在負載平衡服務中如何選擇合適的算法進行成員選擇是至關重要的它決定了由哪一個副本對象處理到來的客戶請求,直接影響負載平衡服務的性能。平衡算法設計的好壞直接決定了集群在負載均衡上的表現,設計不好的算法,會導致集群的負載失衡。一般的平衡算法主要任務是決定如何選擇下一個集群結點,然后將新的服務請求轉發給它。有些簡單平衡方法可以獨立使用,有些必須和其它簡單或高級方法組合使用。而一個好的負載均衡算法也并不是萬能的,它一般只在某些特殊的應用環境下才能發揮最大效用。因此在考察負載均衡算法的同時,也要注意算法本身的適用面,并在采取集群部署的時候根據集群自身的特點進行綜合考慮,把不同的算法和技術結合起來使用。 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.1負載平衡算法的需求 如下所示,我們認為一個好的負載平衡算法應該滿足下列需求: l??????? 最小化客戶請求的派發時間,使客戶請求能夠迅速地被派發給相應的服務副本,而不會因為低效的副本選擇導致延遲; l??????? 最小化客戶請求響應時間和最大化系統的吞吐量,使系統能夠獲得最高的性能和最大的資源利用率,最小化資源的空閑時間; l??????? 客戶請求的響應時間具有可預期性; l??????? 保證副本間負載分配的平衡,從而降低發生過載的可能性,確保服務的可用性和系統的可靠性,同時能夠在一定程度上抵御負載峰值的沖擊; l??????? 具有好的可擴展性,不依賴于某種特定的資源或結構,也不對系統中結點或副本的數目做出任何假設; l??????? 最小化系統的通信開銷。 1.2非自適應的負載平衡算法 當使用此類算法時,服務不要求從成員獲得負載更新,每次客戶請求時采用隨機或輪轉的方式選擇成員,常見的非自適應負載平衡算法是隨機(random)和輪轉(round-robin)算法 隨機算法依賴于相應的隨機函數,在一個副本隊列里,隊列的每個成員(副本)都具有相同的地位,通過隨機函數在這組成員中進行隨機的選擇。但隨機算法在一定程度上具有盲目性,在某一時刻選中的恰好是重載結點,而其余輕載結點卻處于空閑中,從而造成系統整體性能和吞吐率地下降。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

輪轉算法是所有調度算法中最簡單也最容易實現的一種方法。在一個副本隊列里,隊列的每個成員(副本)都具有相同的地位,輪轉算法簡單的在這組成員中順序輪轉選擇。在負載平衡環境中,均衡器將新的請求輪流發給副本隊列中的下一副本,如此連續、周而復始,每個副本都在相等的地位下被輪流選擇。輪轉法的活動是可預知的,每個結點被選擇的機會均等,因此很容易計算出結點的負載分布。輪轉法比較適用于集群中所有結點的處理能力和性能均相同的情況,在實際應用中,一般將它與其他簡單方法聯合使用時比較有效。 隨機算法和輪轉算法雖然都隸屬于非自適應的負載平衡算法,但因為隨機算法副本選擇的盲目性,雖然各副本被選中的總體概率相等,但不能避免選擇的局部聚集性,因而在性能上遜色于輪轉算法。 隨機和輪轉算法算法實現簡單,不需要使用成員的負載信息,開銷較小,但缺點是只能在某些特定條件下恰當地平衡負載:

l??????? 專用主機

l??????? 同類主機

l??????? 客戶產生同樣的負載,連接同樣長的時間或客戶連接的時間很短 3.1.3自適應的負載平衡算法 使用此類算法時,負載平衡器通過感知副本的負載變化情況提高負載平衡的效果。負載平衡器周期性地收集各成員的負載信息,利用這些負載信息決定選擇哪一個成員對客戶的請求進行服務。自適應的策略適合大量的請求產生不同的負載又無法實現預測的情況,也可以實現負載重平衡(即在某個成員過載的情況下,將客戶請求重新綁定到一個負載較輕的成員上。常見的自適應負載平衡算法包括最小負載算法和平均負載算法最小負載(Least Load)算法根據副本負載的大小進行任務的分配,負載較輕的副本將處理更多的任務請求。最小負載算法的基本原理可描述為:假設有一組副本<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 表示副本 的負載,當副本初次投入系統中使用時,副本的負載值均為0。副本的負載根據負載度量方式的不同有不同的定義方式,CPU資源,內存資源,當前進程數,響應時間等信息都可以作為負載計算的因子。對于不同類型的系統應用,各個參數的重要程度也有所不同。如典型的Web應用環境下,可用內存資源和響應時間就非常重要;如果用戶以長的數據庫事務為主,則CPU使用率和可用內存就相對重要一些。負載平衡器的動態監測程序周期性地運行,查詢各副本負載參數,并計算出副本的動態負載值 。根據副本動態負載值的大小,選出負載值最小的副本響應客戶端請求。有的最小負載算法還引入了閥值機制如果副本的負載高于設定的閥值,則說明系統開始處于重載狀況,負載平衡器將會減少對該副本分配的任務。在實際使用中,若發現所有副本的權值都高于設定的閥值,則說明當前集群處于過載狀態,這時需要加入新的副本到集群中來處理部分負載。 平均負載(Min-dispersion)算法的目標是確保負載差異在一個設定的范圍內,從而確保每個副本之間的負載的差異能夠最小化。在這種按需自適應策略中使用了下面的步驟: 1.???????? 每一次發生了一個負載平衡決策,一個給定對象組之間的所有副本之間的平均負載將進行更新。 2.???????? 將每一個副本上的即時負載和平均負載進行比較。 3.???????? 如果平均負載和即時負載之間的差異大于設定的差異值,負載平衡器將嘗試降低差異使之小于設定值。要注意的是,通過本算法達到平衡的副本集合并不需要均具有相同的負載,但經過一定時間,副本之間的負載差異將變得最小,從而使整個系統趨向平衡。

轉載于:https://blog.51cto.com/sonofwind0109/46404

總結

以上是生活随笔為你收集整理的常用的负载平衡算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。