13种负载均衡算法
目錄
- 前言
- (1)輪轉(zhuǎn)調(diào)度(Round-Robin Scheduling)算法
- (2)加權(quán)輪轉(zhuǎn)調(diào)度(Weighted Round-Robin Scheduling)算法
- (3)隨機(jī)均衡調(diào)度(Random Scheduling)算法
- (4)加權(quán)隨機(jī)均衡調(diào)度(Weighted Random Scheduling)算法
- (5)最小連接調(diào)度(Least-Connection Scheduling)算法
- (6)加權(quán)最小連接調(diào)度(Weighted Least-Connection Scheduling)算法
- (7)目標(biāo)地址散列調(diào)度(Destination Hashing Scheduling)算法
- (8)源地址散列調(diào)度(Source Hashing Scheduling)算法
- (9)基于局部性的最少鏈接調(diào)度(Locality-Based Least ConnectionsScheduling)算法
- (10)帶復(fù)制的基于局部性最少鏈接調(diào)度(Locality-Based Least Connectionswith Replication Scheduling)算法
- (11)響應(yīng)速度均衡調(diào)度(Response Time Scheduling)算法
- (12)處理能力均衡調(diào)度(Processing Capacity Scheduling)算法
- (13)DNS均衡調(diào)度(DNS Scheduling)算法
前言
所謂負(fù)載,一般指處理節(jié)點(diǎn)的CPU負(fù)載、MEM利用率、網(wǎng)絡(luò)負(fù)載、可用的緩沖區(qū)、應(yīng)用系統(tǒng)負(fù)載、用戶數(shù)量以及其他的各種系統(tǒng)資源的當(dāng)前狀態(tài)信息。所謂負(fù)載均衡,是指處理節(jié)點(diǎn)的負(fù)載信息通過某代理軟件傳遞給均衡器,由均衡器做出決策并對(duì)負(fù)載進(jìn)行動(dòng)態(tài)分配,從而使集群中各處理節(jié)點(diǎn)的負(fù)載相對(duì)趨于平衡。
要實(shí)現(xiàn)
(1)為用戶提供更好的訪問質(zhì)量。
(2)提高服務(wù)器響應(yīng)速度。
(3)提高服務(wù)器及其他資源的利用效率。
(4)避免了網(wǎng)絡(luò)關(guān)鍵部位出現(xiàn)單點(diǎn)失效。
(5)解決網(wǎng)絡(luò)擁塞問題,服務(wù)就近提供,實(shí)現(xiàn)地理位置無關(guān)性。
衡量服務(wù)器性能和當(dāng)前運(yùn)行情況的有效衡量指標(biāo)包括:
(1)CPU利用率。
(2)內(nèi)存使用率。
(3)帶寬利用率。
(4)硬盤IO吞吐率和網(wǎng)絡(luò)IO吞吐率。
(5)單位時(shí)間內(nèi)完成的服務(wù)次數(shù)。
(6)單位時(shí)間內(nèi)連接客戶數(shù)
(7)完成一個(gè)請(qǐng)求任務(wù)所用的響應(yīng)時(shí)間。
理想的負(fù)載指標(biāo)應(yīng)滿足以下條件:測(cè)量開銷低,能體現(xiàn)所有競(jìng)爭(zhēng)資源上的負(fù)載,各負(fù)載指標(biāo)在測(cè)量及控制上彼此獨(dú)立。
在引入負(fù)載均衡方案時(shí)不管是采用哪種方式都需要考慮以下問題:
(1)采用負(fù)載均衡方案后,服務(wù)器接收和轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的速度及負(fù)載均衡的整體檢測(cè)能力是首先要考慮的重點(diǎn)問題。
(2)負(fù)載均衡方案應(yīng)能滿足網(wǎng)絡(luò)流量不斷增長(zhǎng)的需求,能均衡不同操作系統(tǒng)和硬件平臺(tái)之間的負(fù)載,能均衡不同流量的負(fù)載。
(3)負(fù)載均衡設(shè)備自身出現(xiàn)故障時(shí)應(yīng)該有良好的冗余解決方案,保證可用性,避免系統(tǒng)遭受重大損失。
(4)采用靈活、直觀和安全的管理方式,這樣便于安裝、配置、維護(hù)和監(jiān)控,提高工作效率,避免差錯(cuò)
下面介紹幾種常見的負(fù)載均衡算法:
(1)輪轉(zhuǎn)調(diào)度(Round-Robin Scheduling)算法
假設(shè)所有服務(wù)器處理性能相同,將外部請(qǐng)求按順序輪流分配到集群中的服務(wù)器上。這種算法的優(yōu)點(diǎn)是其簡(jiǎn)潔性,無需記錄當(dāng)前所有連接的狀態(tài),是一種無狀態(tài)調(diào)度算法,但是不適用于服務(wù)器組中處理性能不一的情況,而且當(dāng)請(qǐng)求服務(wù)時(shí)間變化較大時(shí),容易導(dǎo)致服務(wù)器間的負(fù)載不平衡。
(2)加權(quán)輪轉(zhuǎn)調(diào)度(Weighted Round-Robin Scheduling)算法
為保證處理能力強(qiáng)的服務(wù)器處理更多的訪問流量,用相應(yīng)的權(quán)值表示服務(wù)器的處理性能,將請(qǐng)求數(shù)目按權(quán)值的比例分配給各服務(wù)器。調(diào)度器可以自動(dòng)詢問服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。這種均衡算法也是一種無狀態(tài)調(diào)度算法,但可以解決服務(wù)器間性能不一的情況,能確保高性能的服務(wù)器得到更多的使用率,避免低性能的服務(wù)器負(fù)載過重。
(3)隨機(jī)均衡調(diào)度(Random Scheduling)算法
把來自網(wǎng)絡(luò)的請(qǐng)求隨機(jī)分配給各個(gè)服務(wù)器。
(4)加權(quán)隨機(jī)均衡調(diào)度(Weighted Random Scheduling)算法
此種均衡算法類似于加權(quán)輪轉(zhuǎn)算法,不過在處理請(qǐng)求分擔(dān)時(shí)是個(gè)隨機(jī)選擇的過程。
(5)最小連接調(diào)度(Least-Connection Scheduling)算法
該算法是一種動(dòng)態(tài)調(diào)度算法,通過服務(wù)器中當(dāng)前所活躍的連接數(shù)來估計(jì)服務(wù)器的負(fù)載情況,把新的連接請(qǐng)求分配到當(dāng)前連接數(shù)最小的服務(wù)器。但是,當(dāng)各個(gè)服務(wù)器的處理能力不同時(shí),該算法并不理想。
(6)加權(quán)最小連接調(diào)度(Weighted Least-Connection Scheduling)算法
用相應(yīng)的權(quán)值表示各個(gè)服務(wù)器的處理性能,具有較高權(quán)值的服務(wù)器將承受較大比例的活動(dòng)連接負(fù)載。調(diào)度器可以自動(dòng)問詢服務(wù)器的負(fù)載情況,并動(dòng)態(tài)地調(diào)整其權(quán)值。
(7)目標(biāo)地址散列調(diào)度(Destination Hashing Scheduling)算法
根據(jù)請(qǐng)求的目標(biāo) IP地址,將其作為散列鍵(Hash Key),通過散列(Hash)函數(shù)將這個(gè)目標(biāo)IP地址映射到一臺(tái)可用且未超載的服務(wù)器,將請(qǐng)求發(fā)送到該服務(wù)器,屬于靜態(tài)映射算法。
(8)源地址散列調(diào)度(Source Hashing Scheduling)算法
與目標(biāo)地址散列調(diào)度算法相反,根據(jù)請(qǐng)求的源 IP地址,作為散列鍵(HashKey),通過散列函數(shù)將請(qǐng)求的源IP地址映射到一臺(tái)可用且未超的服務(wù)器,將請(qǐng)求發(fā)送到該服務(wù)器。除了將請(qǐng)求的目標(biāo)IP地址換成請(qǐng)求的源IP地址,該算法采用的散列函數(shù)與目標(biāo)地址散列調(diào)度算法相同,算法流程與目標(biāo)地址散列調(diào)度算法的基本相似。在實(shí)際應(yīng)用中,源地址散列調(diào)度和目標(biāo)地址散列調(diào)度可以結(jié)合使用在防火墻集群中,它們可以保證整個(gè)系統(tǒng)的唯一出入口。
(9)基于局部性的最少鏈接調(diào)度(Locality-Based Least ConnectionsScheduling)算法
找出請(qǐng)求的目標(biāo)IP地址最近使用的服務(wù)器,若該服務(wù)器是可用的且沒有超載,將請(qǐng)求發(fā)送到該服務(wù)器;否則用“最少鏈接”的原則選出一個(gè)可用的服務(wù)器。算法的設(shè)計(jì)目標(biāo)是在服務(wù)器的負(fù)載基本平衡情況下將相同目標(biāo)IP地址的請(qǐng)求調(diào)度到同一臺(tái)服務(wù)器,來提高各臺(tái)服務(wù)器的訪問局部性和主存Cache命中率。
(10)帶復(fù)制的基于局部性最少鏈接調(diào)度(Locality-Based Least Connectionswith Replication Scheduling)算法
與基于局部性的最少鏈接調(diào)度算法的不同之處在于,它要維護(hù)從一個(gè)目標(biāo)IP地址到一組服務(wù)器的映射,而不是從一個(gè)目標(biāo)IP地址到一臺(tái)服務(wù)器的映射。該算法找出請(qǐng)求的目標(biāo)IP地址對(duì)應(yīng)的服務(wù)器組,按“最少鏈接”原則從服務(wù)器組中選出一臺(tái)服務(wù)器,若服務(wù)器可用且沒有超載,將請(qǐng)求發(fā)送到該服務(wù)器;否則按“最少鏈接”原則從這個(gè)集群中選出一臺(tái)服務(wù)器,將該服務(wù)器加入到服務(wù)器組中,再將請(qǐng)求發(fā)送到該服務(wù)器。另外,若該服務(wù)器組有一段時(shí)間未被修改,則將最忙的服務(wù)器從服務(wù)器組中刪除,以降低復(fù)制的程度。
(11)響應(yīng)速度均衡調(diào)度(Response Time Scheduling)算法
負(fù)載均衡設(shè)備對(duì)內(nèi)部各服務(wù)器發(fā)出一個(gè)探測(cè)請(qǐng)求,然后由對(duì)探測(cè)請(qǐng)求響應(yīng)最快的一臺(tái)服務(wù)器來響應(yīng)客戶端的服務(wù)請(qǐng)求。
(12)處理能力均衡調(diào)度(Processing Capacity Scheduling)算法
負(fù)載均衡設(shè)備記錄集群內(nèi)部處理負(fù)荷(根據(jù)服務(wù)器CPU型號(hào)、CPU數(shù)量、內(nèi)存大小及當(dāng)前連接數(shù)等換算而成),將服務(wù)請(qǐng)求分配給負(fù)荷最輕的服務(wù)器。由于考慮到了內(nèi)部服務(wù)器的處理能力及當(dāng)前網(wǎng)絡(luò)運(yùn)行狀況等不同情形,因此這種均衡算法相對(duì)來說更加精確,尤其適合運(yùn)用到第7層(應(yīng)用層)負(fù)載均衡的情況,但附加開銷也較大。
(13)DNS均衡調(diào)度(DNS Scheduling)算法
分處在不同地理位置的負(fù)載均衡設(shè)備,收到同一個(gè)客戶端的域名解析請(qǐng)求,并在同一時(shí)間內(nèi),把此域名解析成各自相對(duì)應(yīng)服務(wù)器的IP地址,并返回給客戶端,客戶端將以最先收到的域名解析IP地址來繼續(xù)請(qǐng)求服務(wù),而忽略其他的IP地址響應(yīng)。
總結(jié)
- 上一篇: Paxos算法(Basic Paxos
- 下一篇: C++自动类型推导 : auto 与 d