負(fù)載均衡方案的三種實(shí)現(xiàn)策略
一、多臺(tái)服務(wù)器是如何去均衡流量、如何組成高性能的集群的呢?
負(fù)載均衡(Load Balancer)是指把用戶(hù)訪問(wèn)的流量,通過(guò)「負(fù)載均衡器」,根據(jù)某種轉(zhuǎn)發(fā)的策略,均勻的分發(fā)到后端多臺(tái)服務(wù)器上,后端的服務(wù)器可以獨(dú)立的響應(yīng)和處理請(qǐng)求,從而實(shí)現(xiàn)分散負(fù)載的效果。負(fù)載均衡技術(shù)提高了系統(tǒng)的服務(wù)能力,增強(qiáng)了應(yīng)用的可用性。
二、負(fù)載均衡方案有幾種?
目前市面上最常見(jiàn)的負(fù)載均衡技術(shù)方案主要有三種:
1、基于DNS負(fù)載均衡
2、基于硬件負(fù)載均衡
3、基于軟件負(fù)載均衡
三種方案各有優(yōu)劣,DNS負(fù)載均衡可以實(shí)現(xiàn)在地域上的流量均衡,硬件負(fù)載均衡主要用于大型服務(wù)器集群中的負(fù)載需求,而軟件負(fù)載均衡大多是基于機(jī)器層面的流量均衡。在實(shí)際場(chǎng)景中,這三種是可以組合在一起使用。下面來(lái)詳細(xì)講講:
三、基于DNS負(fù)載均衡
1、基于DNS來(lái)做負(fù)載均衡其實(shí)是一種最簡(jiǎn)單的實(shí)現(xiàn)方案,通過(guò)在DNS服務(wù)器上做一個(gè)簡(jiǎn)單配置即可
其原理就是當(dāng)用戶(hù)訪問(wèn)域名的時(shí)候,會(huì)先向DNS服務(wù)器去解析域名對(duì)應(yīng)的IP地址,這個(gè)時(shí)候我們可以讓DNS服務(wù)器根據(jù)不同地理位置的用戶(hù)返回不同的IP。比如南方的用戶(hù)就返回我們?cè)趶V州業(yè)務(wù)服務(wù)器的IP,北方的用戶(hù)來(lái)訪問(wèn)的話,我就返回北京業(yè)務(wù)服務(wù)器所在的IP。
在這個(gè)模式下,用戶(hù)就相當(dāng)于實(shí)現(xiàn)了按照「就近原則」將請(qǐng)求分流了,既減輕了單個(gè)集群的負(fù)載壓力,也提升了用戶(hù)的訪問(wèn)速度。
使用DNS做負(fù)載均衡的方案,天然的優(yōu)勢(shì)就是配置簡(jiǎn)單,實(shí)現(xiàn)成本非常低,無(wú)需額外的開(kāi)發(fā)和維護(hù)工作。
但是也有一個(gè)明顯的缺點(diǎn)是:當(dāng)配置修改后,生效不及時(shí)。這個(gè)是由于DNS的特性導(dǎo)致的,DNS一般會(huì)有多級(jí)緩存,所以當(dāng)我們修改了DNS配置之后,由于緩存的原因,會(huì)導(dǎo)致IP變更不及時(shí),從而影響負(fù)載均衡的效果。
另外,使用DNS做負(fù)載均衡的話,大多是基于地域或者干脆直接做IP輪詢(xún),沒(méi)有更高級(jí)的路由策略,所以這也是DNS方案的局限所在。
2、基于硬件負(fù)載均衡
硬件的負(fù)載均衡那就比較牛逼了,比如大名鼎鼎的F5 Network Big-IP,也就是我們常說(shuō)的F5,它是一個(gè)網(wǎng)絡(luò)設(shè)備,你可以簡(jiǎn)單的理解成類(lèi)似于網(wǎng)絡(luò)交換機(jī)的東西,完全通過(guò)硬件來(lái)抗壓力,性能是非常的好,每秒能處理的請(qǐng)求數(shù)達(dá)到百萬(wàn)級(jí),即 幾百萬(wàn)/秒 的負(fù)載,當(dāng)然價(jià)格也就非常非常貴了,十幾萬(wàn)到上百萬(wàn)人民幣都有。
因?yàn)檫@類(lèi)設(shè)備一般用在大型互聯(lián)網(wǎng)公司的流量入口最前端,以及政府、國(guó)企等不缺錢(qián)企業(yè)會(huì)去使用。一般的中小公司是不舍得用的。
采用F5這類(lèi)硬件做負(fù)載均衡的話,主要就是省心省事,買(mǎi)一臺(tái)就搞定,性能強(qiáng)大,一般的業(yè)務(wù)不在話下。而且在負(fù)載均衡的算法方面還支持很多靈活的策略,同時(shí)還具有一些防火墻等安全功能。但是缺點(diǎn)也很明顯,一個(gè)字:貴。
3.基于軟件負(fù)載均衡
軟件負(fù)載均衡是指使用軟件的方式來(lái)分發(fā)和均衡流量。軟件負(fù)載均衡,分為7層協(xié)議 和 4層協(xié)議。
網(wǎng)絡(luò)協(xié)議有七層,基于第四層傳輸層來(lái)做流量分發(fā)的方案稱(chēng)為4層負(fù)載均衡,例如LVS,而基于第七層應(yīng)用層來(lái)做流量分發(fā)的稱(chēng)為7層負(fù)載均衡,例如Nginx。這兩種在性能和靈活性上是有些區(qū)別的。
基于4層的負(fù)載均衡性能要高一些,一般能達(dá)到 幾十萬(wàn)/秒 的處理量,而基于7層的負(fù)載均衡處理量一般只在 幾萬(wàn)/秒 。
基于軟件的負(fù)載均衡的特點(diǎn)也很明顯,便宜。在正常的服務(wù)器上部署即可,無(wú)需額外采購(gòu),就是投入一點(diǎn)技術(shù)去優(yōu)化優(yōu)化即可,因此這種方式是互聯(lián)網(wǎng)公司中用得最多的一種方式。
四、常用的均衡算法有哪些?
上面講完了常見(jiàn)的負(fù)載均衡技術(shù)方案,那么接下來(lái)咱們看一下,在實(shí)際方案應(yīng)用中,一般可以使用哪些均衡算法?
1、輪詢(xún)策略
2、負(fù)載度策略
3、響應(yīng)策略
4、哈希策略
下面來(lái)分別介紹一下這幾種均衡算法/策略的特點(diǎn):
1、輪詢(xún)策略
輪詢(xún)策略其實(shí)很好理解,就是當(dāng)用戶(hù)請(qǐng)求來(lái)了之后,「負(fù)載均衡器」將請(qǐng)求輪流的轉(zhuǎn)發(fā)到后端不同的業(yè)務(wù)服務(wù)器上。這個(gè)策略在DNS方案中用的比較多,無(wú)需關(guān)注后端服務(wù)的狀態(tài),只藥有請(qǐng)求,就往后端輪流轉(zhuǎn)發(fā),非常的簡(jiǎn)單、實(shí)用。
在實(shí)際應(yīng)用中,輪詢(xún)也會(huì)有多種方式,有按順序輪詢(xún)的、有隨機(jī)輪詢(xún)的、還有按照權(quán)重來(lái)輪詢(xún)的。前兩種比較好理解,第三種按照權(quán)重來(lái)輪詢(xún),是指給每臺(tái)后端服務(wù)設(shè)定一個(gè)權(quán)重值,比如性能高的服務(wù)器權(quán)重高一些,性能低的服務(wù)器給的權(quán)重低一些,這樣設(shè)置的話,分配流量的時(shí)候,給權(quán)重高的更多流量,可以充分的發(fā)揮出后端機(jī)器的性能。
2、負(fù)載度策略
負(fù)載度策略是指當(dāng)「負(fù)載均衡器」往后端轉(zhuǎn)發(fā)流量的時(shí)候,會(huì)先去評(píng)估后端每臺(tái)服務(wù)器的負(fù)載壓力情況,對(duì)于壓力比較大的后端服務(wù)器轉(zhuǎn)發(fā)的請(qǐng)求就少一些,對(duì)于壓力比較小的后端服務(wù)器可以多轉(zhuǎn)發(fā)一些請(qǐng)求給它。
這種方式就充分的結(jié)合了后端服務(wù)器的運(yùn)行狀態(tài),來(lái)動(dòng)態(tài)的分配流量了,比輪詢(xún)的方式更為科學(xué)一些。
但是這種方式也帶來(lái)了一些弊端,因?yàn)樾枰獎(jiǎng)討B(tài)的評(píng)估后端服務(wù)器的負(fù)載壓力,那這個(gè)「負(fù)載均衡器」除了轉(zhuǎn)發(fā)請(qǐng)求以外,還要做很多額外的工作,比如采集 連接數(shù)、請(qǐng)求數(shù)、CPU負(fù)載指標(biāo)、IO負(fù)載指標(biāo)等等,通過(guò)對(duì)這些指標(biāo)進(jìn)行計(jì)算和對(duì)比,判斷出哪一臺(tái)后端服務(wù)器的負(fù)載壓力較大。
因此這種方式帶來(lái)了效果優(yōu)勢(shì)的同時(shí),也增加了「負(fù)載均衡器」的實(shí)現(xiàn)難度和維護(hù)成本。
3、響應(yīng)策略
響應(yīng)策略是指,當(dāng)用戶(hù)請(qǐng)求過(guò)來(lái)的時(shí)候,「負(fù)載均衡器」會(huì)優(yōu)先將請(qǐng)求轉(zhuǎn)發(fā)給當(dāng)前時(shí)刻響應(yīng)最快的后端服務(wù)器。
也就是說(shuō),不管后端服務(wù)器負(fù)載高不高,也不管配置如何,只要覺(jué)得這個(gè)服務(wù)器在當(dāng)前時(shí)刻能最快的響應(yīng)用戶(hù)的請(qǐng)求,那么就優(yōu)先把請(qǐng)求轉(zhuǎn)發(fā)給它,這樣的話,對(duì)于用戶(hù)而言,體驗(yàn)也最好。
那「負(fù)載均衡器」是怎么知道哪一臺(tái)后端服務(wù)在當(dāng)前時(shí)刻響應(yīng)能力最佳呢?
這就需要「負(fù)載均衡器」不停的去統(tǒng)計(jì)每一臺(tái)后端服務(wù)器對(duì)請(qǐng)求的處理速度了,比如一分鐘統(tǒng)計(jì)一次,生成一個(gè)后端服務(wù)器處理速度的排行榜。然后「負(fù)載均衡器」根據(jù)這個(gè)排行榜去轉(zhuǎn)發(fā)服務(wù)。
那么這里的問(wèn)題就是統(tǒng)計(jì)的成本了,不停的做這些統(tǒng)計(jì)運(yùn)算本身也會(huì)消耗一些性能,同時(shí)也會(huì)增加「負(fù)載均衡器」的實(shí)現(xiàn)難度和維護(hù)成本。
4、哈希策略
Hash策略也比較好理解,就是將請(qǐng)求中的某個(gè)信息進(jìn)行hash計(jì)算,然后根據(jù)后端服務(wù)器臺(tái)數(shù)取模,得到一個(gè)值,算出相同值的請(qǐng)求就被轉(zhuǎn)發(fā)到同一臺(tái)后端服務(wù)器中。
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科