2021-02-01 分類: 網(wǎng)站建設(shè)
百度詞條里的解釋是:負(fù)載均衡,英文叫Load Balance,意思就是將請(qǐng)求或者數(shù)據(jù)分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,共同完成工作任務(wù)。
它的目的就通過(guò)調(diào)度集群,達(dá)到好化資源使用,大化吞吐率,最小化響應(yīng)時(shí)間,避免單點(diǎn)過(guò)載的問(wèn)題。
負(fù)載均衡分類
負(fù)載均衡可以根據(jù)網(wǎng)絡(luò)協(xié)議的層數(shù)進(jìn)行分類,我們這里以ISO模型為準(zhǔn),從下到上分為:
物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,會(huì)話層,表示層,應(yīng)用層。
當(dāng)客戶端發(fā)起請(qǐng)求,會(huì)經(jīng)過(guò)層層的封裝,發(fā)給服務(wù)器,服務(wù)器收到請(qǐng)求后經(jīng)過(guò)層層的解析,獲取到對(duì)應(yīng)的內(nèi)容。
HTTP協(xié)議
二層負(fù)載均衡
二層負(fù)債均衡是基于數(shù)據(jù)鏈路層的負(fù)債均衡,即讓負(fù)債均衡服務(wù)器和業(yè)務(wù)服務(wù)器綁定同一個(gè)虛擬IP(即VIP),客戶端直接通過(guò)這個(gè)VIP進(jìn)行請(qǐng)求,那么如何區(qū)分相同IP下的不同機(jī)器呢?沒(méi)錯(cuò),通過(guò)MAC物理地址,每臺(tái)機(jī)器的MAC物理地址都不一樣,當(dāng)負(fù)載均衡服務(wù)器接收到請(qǐng)求之后,通過(guò)改寫(xiě)HTTP報(bào)文中以太網(wǎng)首部的MAC地址,按照某種算法將請(qǐng)求轉(zhuǎn)發(fā)到目標(biāo)機(jī)器上,實(shí)現(xiàn)負(fù)載均衡。
這種方式負(fù)載方式雖然控制粒度比較粗,但是優(yōu)點(diǎn)是負(fù)載均衡服務(wù)器的壓力會(huì)比較小,負(fù)載均衡服務(wù)器只負(fù)責(zé)請(qǐng)求的進(jìn)入,不負(fù)責(zé)請(qǐng)求的響應(yīng)(響應(yīng)是有后端業(yè)務(wù)服務(wù)器直接響應(yīng)給客戶端),吞吐量會(huì)比較高。
兩層負(fù)載
三層負(fù)載均衡
三層負(fù)載均衡是基于網(wǎng)絡(luò)層的負(fù)載均衡,通俗的說(shuō)就是按照不同機(jī)器不同IP地址進(jìn)行轉(zhuǎn)發(fā)請(qǐng)求到不同的機(jī)器上。
這種方式雖然比二層負(fù)載多了一層,但從控制的顆粒度上看,并沒(méi)有比二層負(fù)載均衡更有優(yōu)勢(shì),并且,由于請(qǐng)求的進(jìn)出都要經(jīng)過(guò)負(fù)載均衡服務(wù)器,會(huì)對(duì)其造成比較大的壓力,性能也比二層負(fù)載均衡要差。
三層負(fù)載
四層負(fù)載均衡
四層負(fù)載均衡是基于傳輸層的負(fù)載均衡,傳輸層的代表協(xié)議就是TCP/UDP協(xié)議,除了包含IP之外,還有區(qū)分了端口號(hào),通俗的說(shuō)就是基于IP+端口號(hào)進(jìn)行請(qǐng)求的轉(zhuǎn)發(fā)。相對(duì)于上面兩種,控制力度縮小到了端口,可以針對(duì)同一機(jī)器上的不用服務(wù)進(jìn)行負(fù)載。
這一層以LVS為代表。
無(wú)圖
七層負(fù)載均衡
七層負(fù)載均衡是基于應(yīng)用層的負(fù)載均衡,應(yīng)用層的代表協(xié)議有HTTP,DNS等,可以根據(jù)請(qǐng)求的url進(jìn)行轉(zhuǎn)發(fā)負(fù)載,比起四層負(fù)載,會(huì)更加的靈活,所控制到的粒度也是最細(xì)的,使得整個(gè)網(wǎng)絡(luò)更"智能化"。例如訪問(wèn)一個(gè)網(wǎng)站的用戶流量,可以通過(guò)七層的方式,將對(duì)圖片類的請(qǐng)求轉(zhuǎn)發(fā)到特定的圖片服務(wù)器并可以使用緩存技術(shù);將對(duì)文字類的請(qǐng)求可以轉(zhuǎn)發(fā)到特定的文字服務(wù)器并可以使用壓縮技術(shù)??梢哉f(shuō)功能是非常強(qiáng)大的負(fù)載。
獨(dú)自驕傲
這一層以Nginx為代表。
在普通的應(yīng)用架構(gòu)中,使用Nginx完全可以滿足需求,對(duì)于一些大型應(yīng)用,一般會(huì)采用DNS+LVS+Nginx的方式進(jìn)行多層次負(fù)債均衡,以上這些說(shuō)明都是基于軟件層面的負(fù)載均衡,在一些超大型的應(yīng)用中,還會(huì)在前面多加一層物理負(fù)載均衡,比如知名的F5。
負(fù)載均衡算法負(fù)載均衡算法分為兩類:
一種是靜態(tài)負(fù)載均衡,一種是動(dòng)態(tài)負(fù)載均衡。
靜態(tài)均衡算法:
1、輪詢法
將請(qǐng)求按順序輪流地分配到每個(gè)節(jié)點(diǎn)上,不關(guān)心每個(gè)節(jié)點(diǎn)實(shí)際的連接數(shù)和當(dāng)前的系統(tǒng)負(fù)載。
優(yōu)點(diǎn):簡(jiǎn)單高效,易于水平擴(kuò)展,每個(gè)節(jié)點(diǎn)滿足字面意義上的均衡;
缺點(diǎn):沒(méi)有考慮機(jī)器的性能問(wèn)題,根據(jù)木桶最短木板理論,集群性能瓶頸更多的會(huì)受性能差的服務(wù)器影響。
輪詢
2、隨機(jī)法
將請(qǐng)求隨機(jī)分配到各個(gè)節(jié)點(diǎn)。由概率統(tǒng)計(jì)理論得知,隨著客戶端調(diào)用服務(wù)端的次數(shù)增多,其實(shí)際效果越來(lái)越接近于平均分配,也就是輪詢的結(jié)果。
優(yōu)缺點(diǎn)和輪詢相似。
隨機(jī)
3、源地址哈希法
源地址哈希的思想是根據(jù)客戶端的IP地址,通過(guò)哈希函數(shù)計(jì)算得到一個(gè)數(shù)值,用該數(shù)值對(duì)服務(wù)器節(jié)點(diǎn)數(shù)進(jìn)行取模,得到的結(jié)果便是要訪問(wèn)節(jié)點(diǎn)序號(hào)。采用源地址哈希法進(jìn)行負(fù)載均衡,同一IP地址的客戶端,當(dāng)后端服務(wù)器列表不變時(shí),它每次都會(huì)落到到同一臺(tái)服務(wù)器進(jìn)行訪問(wèn)。
優(yōu)點(diǎn):相同的IP每次落在同一個(gè)節(jié)點(diǎn),可以人為干預(yù)客戶端請(qǐng)求方向,例如灰度發(fā)布;
缺點(diǎn):如果某個(gè)節(jié)點(diǎn)出現(xiàn)故障,會(huì)導(dǎo)致這個(gè)節(jié)點(diǎn)上的客戶端無(wú)法使用,無(wú)法保證高可用。當(dāng)某一用戶成為熱點(diǎn)用戶,那么會(huì)有巨大的流量涌向這個(gè)節(jié)點(diǎn),導(dǎo)致冷熱分布不均衡,無(wú)法有效利用起集群的性能。所以當(dāng)熱點(diǎn)事件出現(xiàn)時(shí),一般會(huì)將源地址哈希法切換成輪詢法。
哈希法
4、加權(quán)輪詢法
不同的后端服務(wù)器可能機(jī)器的配置和當(dāng)前系統(tǒng)的負(fù)載并不相同,因此它們的抗壓能力也不相同。給配置高、負(fù)載低的機(jī)器配置更高的權(quán)重,讓其處理更多的請(qǐng);而配置低、負(fù)載高的機(jī)器,給其分配較低的權(quán)重,降低其系統(tǒng)負(fù)載,加權(quán)輪詢能很好地處理這一問(wèn)題,并將請(qǐng)求順序且按照權(quán)重分配到后端。
加權(quán)輪詢算法要生成一個(gè)服務(wù)器序列,該序列中包含n個(gè)服務(wù)器。n是所有服務(wù)器的權(quán)重之和。在該序列中,每個(gè)服務(wù)器的出現(xiàn)的次數(shù),等于其權(quán)重值。并且,生成的序列中,服務(wù)器的分布應(yīng)該盡可能的均勻。比如序列{a, a, a, a, a, b, c}中,前五個(gè)請(qǐng)求都會(huì)分配給服務(wù)器a,這就是一種不均勻的分配方法,更好的序列應(yīng)該是:{a, a, b, a, c, a, a}。
優(yōu)點(diǎn):可以將不同機(jī)器的性能問(wèn)題納入到考量范圍,集群性能最優(yōu)大化;
缺點(diǎn):生產(chǎn)環(huán)境復(fù)雜多變,服務(wù)器抗壓能力也無(wú)法精確估算,靜態(tài)算法導(dǎo)致無(wú)法實(shí)時(shí)動(dòng)態(tài)調(diào)整節(jié)點(diǎn)權(quán)重,只能粗糙優(yōu)化。
加權(quán)輪詢
5、加權(quán)隨機(jī)法
與加權(quán)輪詢法一樣,加權(quán)隨機(jī)法也根據(jù)后端機(jī)器的配置,系統(tǒng)的負(fù)載分配不同的權(quán)重。不同的是,它是按照權(quán)重隨機(jī)請(qǐng)求后端服務(wù)器,而非順序。
6、鍵值范圍法
根據(jù)鍵的范圍進(jìn)行負(fù)債,比如0到10萬(wàn)的用戶請(qǐng)求走第一個(gè)節(jié)點(diǎn)服務(wù)器,10萬(wàn)到20萬(wàn)的用戶請(qǐng)求走第二個(gè)節(jié)點(diǎn)服務(wù)器……以此類推。
優(yōu)點(diǎn):容易水平擴(kuò)展,隨著用戶量增加,可以增加節(jié)點(diǎn)而不影響舊數(shù)據(jù);
缺點(diǎn):容易負(fù)債不均衡,比如新注冊(cè)的用戶活躍度高,舊用戶活躍度低,那么壓力就全在新增的服務(wù)節(jié)點(diǎn)上,舊服務(wù)節(jié)點(diǎn)性能浪費(fèi)。而且也容易單點(diǎn)故障,無(wú)法滿足高可用。
鍵值范圍法
(注:以上所提到的單點(diǎn)故障,都可以用主從方式來(lái)解決,從節(jié)點(diǎn)監(jiān)聽(tīng)主節(jié)點(diǎn)心跳,當(dāng)發(fā)現(xiàn)主節(jié)點(diǎn)死亡,從節(jié)點(diǎn)切換成主節(jié)點(diǎn)頂替上去。這里可以思考一個(gè)問(wèn)題,怎么設(shè)計(jì)集群主從可以大程度上降低成本)
動(dòng)態(tài)負(fù)債均衡算法:
1、最小連接數(shù)法
根據(jù)每個(gè)節(jié)點(diǎn)當(dāng)前的連接情況,動(dòng)態(tài)地選取其中當(dāng)前積壓連接數(shù)最少的一個(gè)節(jié)點(diǎn)處理當(dāng)前請(qǐng)求,盡可能地提高后端服務(wù)的利用效率,將請(qǐng)求合理地分流到每一臺(tái)服務(wù)器。俗稱閑的人不能閑著,大家一起動(dòng)起來(lái)。
優(yōu)點(diǎn):動(dòng)態(tài),根據(jù)節(jié)點(diǎn)狀況實(shí)時(shí)變化;
缺點(diǎn):提高了復(fù)雜度,每次連接斷開(kāi)需要進(jìn)行計(jì)數(shù);
實(shí)現(xiàn):將連接數(shù)的倒數(shù)當(dāng)權(quán)重值。
2、最快響應(yīng)速度法
根據(jù)請(qǐng)求的響應(yīng)時(shí)間,來(lái)動(dòng)態(tài)調(diào)整每個(gè)節(jié)點(diǎn)的權(quán)重,將響應(yīng)速度快的服務(wù)節(jié)點(diǎn)分配更多的請(qǐng)求,響應(yīng)速度慢的服務(wù)節(jié)點(diǎn)分配更少的請(qǐng)求,俗稱能者多勞,扶貧救弱。
優(yōu)點(diǎn):動(dòng)態(tài),實(shí)時(shí)變化,控制的粒度更細(xì),跟靈敏;
缺點(diǎn):復(fù)雜度更高,每次需要計(jì)算請(qǐng)求的響應(yīng)速度;
實(shí)現(xiàn):可以根據(jù)響應(yīng)時(shí)間進(jìn)行打分,計(jì)算權(quán)重。
3、觀察模式法
觀察者模式是綜合了最小連接數(shù)和最快響應(yīng)度,同時(shí)考量這兩個(gè)指標(biāo)數(shù),進(jìn)行一個(gè)權(quán)重的分配。
網(wǎng)頁(yè)題目:分布式架構(gòu)下的負(fù)載均衡簡(jiǎn)單易懂
鏈接分享:http://m.rwnh.cn/news29/98579.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信小程序、外貿(mào)建站、電子商務(wù)、響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容