六類負載均衡算法概述
相信學過C語言的朋友,或者是IT工作者們都會對算法一次不陌生。那么,針對不同的領域,對算法的簡易度也是不一樣的。在語言類,編程類,網(wǎng)絡類等,算法的使用基本上就是整個結(jié)構(gòu)的基礎。那么我們現(xiàn)在就來介紹一下負載均衡算法的種類。看一看它都有些什么類型。
基本的網(wǎng)絡負載均衡算法
均衡算法設計的好壞直接決定了集群在負載均衡上的表現(xiàn),設計不好的算法,會導致集群的負載失衡。一般的均衡算法主要任務是決定如何選擇下一個集群節(jié)點,然后將新的服務請求轉(zhuǎn)發(fā)給他。有些簡單均衡方法可以獨立使用,有些必須和其他簡單或高級方法組合使用。而一個好的負載均衡算法也并不是萬能的,他一般只在某些特殊的應用環(huán)境下才能發(fā)揮最大效用。因此在考察負載均衡算法的同時,也要注意算法本身的適用面,并在采取集群部署的時候根據(jù)集群自身的特點進行綜合考慮,把不同的算法和技術結(jié)合起來使用。
負載均衡算法1 輪轉(zhuǎn)法
輪轉(zhuǎn)算法是所有調(diào)度算法中最簡單也最容易實現(xiàn)的一種方法。在一個任務隊列里,隊列的每個成員(節(jié)點)都具有相同的地位,輪轉(zhuǎn)法簡單的在這組成員中順序輪轉(zhuǎn)選擇。在負載均衡環(huán)境中,均衡器將新的請求輪流發(fā)給節(jié)點隊列中的下一節(jié)點,如此連續(xù)、周而復始,每個集群的節(jié)點都在相等的地位下被輪流選擇。這個算法在DNS域名輪詢中被廣泛使用。
輪轉(zhuǎn)法的活動是可預知的,每個節(jié)點被選擇的機會是1/N,因此很容易計算出節(jié)點的負載分布。輪轉(zhuǎn)法典型的適用于集群中所有節(jié)點的處理能力和性能均相同的情況,在實際應用中,一般將他與其他簡單方法聯(lián)合使用時比較有效。
負載均衡算法2 散列法
散列法也叫哈希法(HASH),通過單射不可逆的HASH函數(shù),按照某種規(guī)則將網(wǎng)絡請求發(fā)往集群節(jié)點。哈希法在其他幾類均衡算法不是很有效時會顯示出特別的威力。例如,在前面提到的UDP會話的情況下,由于輪轉(zhuǎn)法和其他幾類基于連接信息的算法,無法識別出會話的起止標記,會引起應用混亂。
而采取基于數(shù)據(jù)包源地址的哈希映射可以在一定程度上解決這個問題:將具有相同源地址的數(shù)據(jù)包發(fā)給同一服務器節(jié)點,這使得基于高層會話的事務可以以適當?shù)姆绞竭\行。相對稱的是,基于目的地址的哈希調(diào)度算法可以用在Web Cache集群中,指向同一個目標站點的訪問請求都被負載均衡器發(fā)送到同一個Cache服務節(jié)點上,以避免頁面缺失而帶來的更新Cache問題。
負載均衡算法3 最少連接法
在最少連接法中,均衡器紀錄目前所有活躍連接,把下一個新的請求發(fā)給當前含有最少連接數(shù)的節(jié)點。這種算法針對TCP連接進行,但由于不同應用對系統(tǒng)資源的消耗可能差異很大,而連接數(shù)無法反映出真實的應用負載,因此在使用重型Web服務器作為集群節(jié)點服務時(例如Apache服務器),該算法在均衡負載的效果上要打個折扣。為了減少這個不利的影響,可以對每個節(jié)點設置最大的連接數(shù)上限(通過閾值設定體現(xiàn))。
負載均衡算法4 最低缺失法
在最低缺失法中,均衡器長期紀錄到各節(jié)點的請求情況,把下個請求發(fā)給歷史上處理請求最少的節(jié)點。與最少連接法不同的是,最低缺失記錄過去的連接數(shù)而不是當前的連接數(shù)。
負載均衡算法5 最快響應法
均衡器記錄自身到每一個集群節(jié)點的網(wǎng)絡響應時間,并將下一個到達的連接請求分配給響應時間最短的節(jié)點,這種方法要求使用ICMP包或基于UDP包的專用技術來主動探測各節(jié)點。
在大多數(shù)基于LAN的集群中,最快響應算法工作的并不是很好,因為LAN中的ICMP包基本上都在10 ms內(nèi)完成回應,體現(xiàn)不出節(jié)點之間的差異;如果在WAN上進行均衡的話,響應時間對于用戶就近選擇服務器而言還是具有現(xiàn)實意義的;而且集群的拓撲越分散,這種方法越能體現(xiàn)出效果來。這種方法是高級均衡基于拓撲結(jié)構(gòu)重定向用到的主要方法。
負載均衡算法6 加權(quán)法
加權(quán)方法只能與其他方法合用,是他們的一個很好的補充。加權(quán)算法根據(jù)節(jié)點的優(yōu)先級或當前的負載狀況(即權(quán)值)來構(gòu)成負載均衡的多優(yōu)先級隊列,隊列中的每個等待處理的連接都具有相同處理等級,這樣在同一個隊列里可以按照前面的輪轉(zhuǎn)法或者最少連接法進行均衡,而隊列之間按照優(yōu)先級的先后順序進行均衡處理。在這里權(quán)值是基于各節(jié)點能力的一個估計值。























