自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探尋負(fù)載均衡器的算法和原理

網(wǎng)絡(luò) 網(wǎng)絡(luò)優(yōu)化 網(wǎng)絡(luò)運(yùn)維 算法
基于加權(quán)算法的負(fù)載均衡,在應(yīng)用上面有什么特別之處呢?那么我們通過對實(shí)力中的負(fù)載均衡器來進(jìn)行一個(gè)分析吧。那么還是一起來看文章。

在分析了負(fù)載均衡的算法種類之后,我們現(xiàn)在來介紹一下動(dòng)態(tài)負(fù)載均衡。主要是通過對負(fù)載均衡器的介紹,來理解這個(gè)概念。基于加權(quán)輪詢的算法,我們可以擴(kuò)展負(fù)載均衡的動(dòng)態(tài)性能,那么,更加具體詳細(xì)的解釋,還是讓我們?yōu)g覽文章吧。

動(dòng)態(tài)反饋負(fù)載均衡

當(dāng)客戶訪問集群資源時(shí),提交的任務(wù)所需的時(shí)間和所要消耗的計(jì)算資源是千差萬別的,他依賴于很多因素。例如:任務(wù)請求的服務(wù)類型、當(dāng)前網(wǎng)絡(luò)帶寬的情況、以及當(dāng)前服務(wù)器資源利用的情況等等。一些負(fù)載比較重的任務(wù)需要進(jìn)行計(jì)算密集的查詢、數(shù)據(jù)庫訪問、很長響應(yīng)數(shù)據(jù)流;而負(fù)載比較輕的任務(wù)請求往往只需要讀一個(gè)小文件或者進(jìn)行很簡單的計(jì)算。

對任務(wù)請求處理時(shí)間的不同可能會(huì)導(dǎo)致處理結(jié)點(diǎn)利用率的傾斜(Skew),即處理結(jié)點(diǎn)的負(fù)載不均衡。有可能存在這樣的情況,有些結(jié)點(diǎn)已經(jīng)超負(fù)荷運(yùn)行,而其他結(jié)點(diǎn)基本是閑置著。同時(shí),有些結(jié)點(diǎn)已經(jīng)忙不過28來,有很長的請求隊(duì)列,還不斷地收到新的請求。反過來說,這會(huì)導(dǎo)致客戶長時(shí)間的等待,而集群整體的服務(wù)質(zhì)量下降。因此,有必要采用一種機(jī)制,使得負(fù)載均衡器能夠?qū)崟r(shí)地了解各個(gè)結(jié)點(diǎn)的負(fù)載狀況,并能根據(jù)負(fù)載的變化做出調(diào)整。

具體的做法上采用了基于負(fù)反饋機(jī)制的動(dòng)態(tài)負(fù)載均衡算法,該算法考慮每一個(gè)結(jié)點(diǎn)的實(shí)時(shí)負(fù)載和響應(yīng)能力,不斷調(diào)整任務(wù)分布的比例,來避免有些結(jié)點(diǎn)超載時(shí)依然收到大量請求,從而提高單一集群的整體吞吐率。

在集群內(nèi),負(fù)載均衡器上運(yùn)行服務(wù)端監(jiān)控進(jìn)程,監(jiān)控進(jìn)程負(fù)責(zé)監(jiān)視和收集集群內(nèi)各個(gè)結(jié)點(diǎn)的負(fù)載信息;而每個(gè)結(jié)點(diǎn)上運(yùn)行客戶端進(jìn)程,負(fù)責(zé)定時(shí)向負(fù)載均衡器報(bào)告自身的負(fù)載狀況。監(jiān)控進(jìn)程根據(jù)收到的全部結(jié)點(diǎn)的負(fù)載信息來進(jìn)行同步操作,既對將要分配的任務(wù)按照權(quán)值的比例重新進(jìn)行分布。權(quán)值的計(jì)算主要根據(jù)各個(gè)結(jié)點(diǎn)的 CPU利用率、可用內(nèi)存以及磁盤I/O狀況計(jì)算出新的權(quán)值,若新權(quán)值和當(dāng)前權(quán)值的差值大于設(shè)定的閥值,監(jiān)控器采用新的權(quán)值對集群范圍內(nèi)的任務(wù)重新進(jìn)行分布,直到下一次的負(fù)載信息同步到來之前。負(fù)載均衡器可以配合動(dòng)態(tài)權(quán)值,采用加權(quán)輪詢算法來對接受的網(wǎng)絡(luò)服務(wù)請求進(jìn)行調(diào)度。

加權(quán)輪詢調(diào)度

加權(quán)輪詢調(diào)度(Weighted Round-Robin Scheduling)算法用相應(yīng)的權(quán)值表示結(jié)點(diǎn)的處理性能。該算法根據(jù)權(quán)值的高低順序并按照輪詢的方式將任務(wù)請求分配到各結(jié)點(diǎn)。權(quán)值高的結(jié)點(diǎn)比權(quán)值低的結(jié)點(diǎn)處理更多的任務(wù)請求,相同權(quán)值的結(jié)點(diǎn)處理相同份額的請求。加權(quán)輪詢的基本原理可描述為:

假設(shè)某集群內(nèi)有一組結(jié)點(diǎn)N={N0,N1,…,Nn-1},W(Ni)表示結(jié)點(diǎn)Ni的權(quán)值,一個(gè)指示變量i表示上一次選擇的服務(wù)器,T(Ni)表示結(jié)點(diǎn)Ni當(dāng)前所分配的任務(wù)量。

∑T(Ni)表示當(dāng)前同步周期需要處理的任務(wù)總量。

∑W(Ni)表示結(jié)點(diǎn)的權(quán)值總和。

則: W(Ni)/∑W(Ni)=T(Ni)/∑T(Ni)

表示任務(wù)的分配是按照各個(gè)結(jié)點(diǎn)權(quán)值占權(quán)值總數(shù)的比例來進(jìn)行分配。

權(quán)值計(jì)算

當(dāng)集群的結(jié)點(diǎn)初次投入系統(tǒng)中使用時(shí),系統(tǒng)管理員根據(jù)結(jié)點(diǎn)的硬件配置情況對每個(gè)結(jié)點(diǎn)都設(shè)定一個(gè)初始權(quán)值DW(Ni)(通常根據(jù)結(jié)點(diǎn)的硬件配置來定義,硬件配置越高的結(jié)點(diǎn)默認(rèn)值越高),在負(fù)載均衡器上也先使用這個(gè)權(quán)值。然后,隨著結(jié)點(diǎn)負(fù)載的變化,負(fù)載均衡器對權(quán)值進(jìn)行調(diào)整。

動(dòng)態(tài)權(quán)值是由結(jié)點(diǎn)運(yùn)行時(shí)各方面的參數(shù)計(jì)算出來的。我們在實(shí)驗(yàn)中選取了最重要的幾項(xiàng),包括:CPU資源、內(nèi)存資源、當(dāng)前進(jìn)程數(shù)、響應(yīng)時(shí)間等信息作為計(jì)算公式的因子。結(jié)合每個(gè)結(jié)點(diǎn)當(dāng)前的權(quán)值,可以計(jì)算出新的權(quán)值的大小。動(dòng)態(tài)權(quán)值的目的是要正確反映結(jié)點(diǎn)負(fù)載的狀況,以預(yù)測結(jié)點(diǎn)將來可能的負(fù)載變化。對于不同類型的系統(tǒng)應(yīng)用,各個(gè)參數(shù)的重要程度也有所不同。典型的Web應(yīng)用環(huán)境下,可用內(nèi)存資源和響應(yīng)時(shí)間就非常重要;如果用戶以長的數(shù)據(jù)庫事務(wù)為主,則CPU使用率和可用內(nèi)存就相對重要一些。為了方便在系統(tǒng)運(yùn)行過程中針對不同的應(yīng)用對各個(gè)參數(shù)的比例進(jìn)行適當(dāng)調(diào)整,我們?yōu)槊恳粋€(gè)參數(shù)設(shè)定一個(gè)常量系數(shù)Ri,用來表示各個(gè)負(fù)載參數(shù)的重要程度,其中∑Ri=1。因此,任何一個(gè)結(jié)點(diǎn)Ni的權(quán)值公式就可以描述為:

LOAD(Ni)=R1*Lcpu(Ni)+R2*Lmemory(Ni)+R3*Lio(Ni)+R4*Lprocess(Ni)+R5*Lresponse(Ni)

其中:Lf(Ni)表示結(jié)點(diǎn)Ni當(dāng)前某一項(xiàng)參數(shù)的負(fù)載值。上述公式中依次表示為:CPU使用率、內(nèi)存使用率、磁盤I/O訪問率、進(jìn)程總數(shù)以及響應(yīng)時(shí)間。

例如,在Web服務(wù)器集群中,我們采用以系數(shù){0.1,0.4,0.1,0.1,0.3},這里認(rèn)為服務(wù)器的內(nèi)存和請求響應(yīng)時(shí)間較其他參數(shù)重要一些。若當(dāng)前的系數(shù)Ri不能很好地反映應(yīng)用的負(fù)載,系統(tǒng)管理員可以對系數(shù)不斷地修正,直到找到貼近當(dāng)前應(yīng)用的一組系數(shù)。

另外,關(guān)于采集權(quán)值的周期值,雖然很短的周期可以更確切地反映各個(gè)結(jié)點(diǎn)的負(fù)載,但是很頻繁地采集(如1 s 1次或者多次)會(huì)給負(fù)載均衡器和結(jié)點(diǎn)帶來負(fù)擔(dān),也可能增加不必要的網(wǎng)絡(luò)負(fù)荷。另外,由于采集器是在采集時(shí)刻進(jìn)行負(fù)載計(jì)算的,經(jīng)實(shí)驗(yàn)證明,負(fù)載均衡器反映出來各個(gè)結(jié)點(diǎn)的負(fù)載信息會(huì)出現(xiàn)劇烈的抖動(dòng),負(fù)載均衡器無法準(zhǔn)確捕捉結(jié)點(diǎn)真實(shí)的負(fù)載變化趨勢。因此解決這些問題,一方面要適當(dāng)?shù)卣{(diào)整采集負(fù)載信息的周期,一般在5~10 s;另一方面,可以使用移動(dòng)均均線或者是滑動(dòng)窗口來避免抖動(dòng),使得負(fù)載均衡器收集到的負(fù)載信息表現(xiàn)為均滑曲線,這樣在負(fù)反饋機(jī)制的調(diào)整效果上就會(huì)比較好。

負(fù)載均衡器的動(dòng)態(tài)權(quán)值采集程序周期性地運(yùn)行,若缺省權(quán)值不為0,則查詢該結(jié)點(diǎn)的各負(fù)載參數(shù),并計(jì)算出動(dòng)態(tài)權(quán)值LOAD(Ni)。我們引入以下權(quán)值計(jì)算公式,結(jié)合結(jié)點(diǎn)的初始權(quán)值和采集的動(dòng)態(tài)權(quán)值來計(jì)算最終的權(quán)值結(jié)果。

Wi=A*DW(Ni)+B*(LOAD(Ni)-DW(Ni))1/3

在公式中,如果動(dòng)態(tài)權(quán)值恰好等于初始權(quán)值,最終權(quán)值不變,則說明系統(tǒng)的負(fù)載狀況剛好達(dá)到理想狀況,等于初始權(quán)值DW(Ni)。如果動(dòng)態(tài)權(quán)值計(jì)算結(jié)果高于初始權(quán)值,最終權(quán)值變高,則說明系統(tǒng)負(fù)載很輕,負(fù)載均衡器將會(huì)增加分配給該結(jié)點(diǎn)的任務(wù)比率。如果動(dòng)態(tài)權(quán)值低于初始權(quán)值,最終權(quán)值變低,說明系統(tǒng)開始處于重載狀況,負(fù)載均衡器將會(huì)減少對該結(jié)點(diǎn)分配的任務(wù)。在實(shí)際使用中,若發(fā)現(xiàn)所有結(jié)點(diǎn)的權(quán)值都小于他們的DW(Ni),則說明當(dāng)前個(gè)集群處于超載狀態(tài),這時(shí)需要加入新的結(jié)點(diǎn)到集群中來處理部分負(fù)載;反之,若所有結(jié)點(diǎn)的權(quán)值大大高于DW(Ni),則說明當(dāng)前系統(tǒng)的負(fù)載都比較輕。

結(jié)語

網(wǎng)絡(luò)負(fù)載均衡是集群作業(yè)調(diào)度系統(tǒng)的具體實(shí)現(xiàn)。由于其處理的作業(yè)單元是TCP/IP協(xié)議下的網(wǎng)絡(luò)連接,因此可以采用面向網(wǎng)絡(luò)連接的集中基本調(diào)度算法。考慮集群負(fù)載不均衡的可能,采取了動(dòng)態(tài)獲取服務(wù)節(jié)點(diǎn)的權(quán)值并使用負(fù)反饋機(jī)制調(diào)整負(fù)載均衡器對網(wǎng)絡(luò)服務(wù)請求的分布,以適應(yīng)服務(wù)節(jié)點(diǎn)在運(yùn)行過程中資源的變化。實(shí)踐證明,采用動(dòng)態(tài)均衡在集群系統(tǒng)的整體吞吐量方面有所提高,特別是在集群各個(gè)節(jié)點(diǎn)性能不一,集群提供的網(wǎng)絡(luò)服務(wù)程序所訪問的資源多樣化的情況下,負(fù)反饋機(jī)制的效果尤其明顯。在其他類型的集群中,負(fù)反饋機(jī)制的動(dòng)態(tài)負(fù)載均衡也能夠得到很好的應(yīng)用,只是負(fù)載均衡器所處理的作業(yè)單元不同于網(wǎng)絡(luò)連接,而具體的負(fù)載算法上也將有所不同。

責(zé)任編輯:佟健 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2024-06-18 08:14:21

2011-08-24 13:45:49

HAProxy負(fù)載均衡負(fù)載均衡器

2010-05-06 10:14:31

負(fù)載均衡器

2017-05-19 14:45:01

OVN負(fù)載均衡器路由器

2022-07-14 08:53:48

MetalLBkubernetes

2023-03-30 13:32:51

負(fù)載均衡器HDFS

2023-02-13 16:39:45

Kubernetes容器負(fù)載均衡器

2024-02-22 10:11:00

負(fù)載均衡器反向代理

2010-05-10 14:13:26

2010-04-22 10:46:40

Lvs負(fù)載均衡故障負(fù)載均衡器

2010-04-21 18:21:36

負(fù)載均衡器配置

2010-05-05 19:05:03

負(fù)載均衡器會(huì)話保持

2010-04-28 17:01:30

Apusic負(fù)載均衡器

2010-05-10 18:22:51

負(fù)載均衡器

2010-04-22 10:36:06

負(fù)載均衡器

2010-05-10 14:05:31

負(fù)載均衡器

2010-05-04 13:32:37

nginx負(fù)載均衡器

2011-03-17 09:27:07

HAProxy負(fù)載均衡

2010-04-20 10:46:59

什么是負(fù)載均衡器

2010-07-15 11:16:04

負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號