深圳企業(yè)網(wǎng)站制作公司美國(guó)今天剛剛發(fā)生的新聞
一、什么是負(fù)載均衡
負(fù)載均衡是一種在計(jì)算機(jī)網(wǎng)絡(luò)和系統(tǒng)架構(gòu)中使用的技術(shù),用于均衡分發(fā)工作負(fù)載到多個(gè)資源,比如:服務(wù)器、計(jì)算節(jié)點(diǎn)或存儲(chǔ)設(shè)備上,以提高系統(tǒng)的性能、可伸縮性。
在傳統(tǒng)的單個(gè)服務(wù)器架構(gòu)中,當(dāng)請(qǐng)求量增加時(shí),單個(gè)服務(wù)器可能無(wú)法處理所有的請(qǐng)求,導(dǎo)致性能下降或系統(tǒng)崩潰。
負(fù)載均衡技術(shù)通過(guò)將負(fù)載(請(qǐng)求)分發(fā)到多個(gè)服務(wù)器上,實(shí)現(xiàn)資源的合理利用,從而平衡服務(wù)器的負(fù)載。
這樣可以提高系統(tǒng)的處理能力,增加并發(fā)處理能力,并減少單點(diǎn)故障的風(fēng)險(xiǎn)。
二、負(fù)載均衡作用
負(fù)載均衡的作用,主要包含如下幾點(diǎn):
1.提高系統(tǒng)性能
負(fù)載均衡技術(shù)將負(fù)載(請(qǐng)求或任務(wù))分發(fā)到多個(gè)資源上,使得系統(tǒng)能夠處理更多的并發(fā)請(qǐng)求,從而提高整體的處理能力和性能。
2.實(shí)現(xiàn)高可用性
負(fù)載均衡可以將負(fù)載分發(fā)到多個(gè)資源上,當(dāng)其中一個(gè)資源發(fā)生故障或不可用時(shí),負(fù)載均衡可以自動(dòng)將請(qǐng)求轉(zhuǎn)發(fā)到其他可用的資源。
這樣可以降低單點(diǎn)故障的風(fēng)險(xiǎn),提高系統(tǒng)的可靠性和容錯(cuò)性。
3.提高系統(tǒng)可伸縮性
隨著業(yè)務(wù)的增長(zhǎng),負(fù)載均衡技術(shù)可以動(dòng)態(tài)地增加或減少資源的數(shù)量,根據(jù)實(shí)際負(fù)載情況進(jìn)行擴(kuò)展或收縮。
通過(guò)自動(dòng)分配負(fù)載到新增的資源上,系統(tǒng)可以實(shí)現(xiàn)水平擴(kuò)展,滿足不斷增長(zhǎng)的需求,提高系統(tǒng)的可伸縮性。
4.優(yōu)化資源利用
負(fù)載均衡技術(shù)可以根據(jù)資源的性能、可用性和負(fù)載情況,合理地分配請(qǐng)求或任務(wù)。
這樣可以最大限度地利用資源,避免資源的空閑或過(guò)載,提高資源的利用率和效率。
三、負(fù)載均衡的原理
系統(tǒng)的擴(kuò)展可分為縱向(垂直)擴(kuò)展和橫向(水平)擴(kuò)展。
比如:縱向擴(kuò)展,是從單機(jī)的角度通過(guò)增加硬件處理能力,比如CPU處理能力,內(nèi)存容量,磁盤等方面,實(shí)現(xiàn)服務(wù)器處理能力的提升。這種情況,不能滿足大型分布式系統(tǒng)(網(wǎng)站),大流量,高并發(fā),海量數(shù)據(jù)的問(wèn)題。
因此需要采用橫向擴(kuò)展的方式,通過(guò)添加機(jī)器來(lái)滿足大型網(wǎng)站服務(wù)的處理能力,比如:一臺(tái)機(jī)器不能滿足,則增加兩臺(tái)或者多臺(tái)機(jī)器,共同承擔(dān)訪問(wèn)壓力。
負(fù)載均衡器作為一個(gè)中間層,接收來(lái)自客戶端的請(qǐng)求,并根據(jù)特定的算法和策略將請(qǐng)求分發(fā)給后端的多個(gè)資源(如服務(wù)器、計(jì)算節(jié)點(diǎn)或存儲(chǔ)設(shè)備)??蛻舳丝梢灾苯訉⒄?qǐng)求發(fā)送給負(fù)載均衡器,或通過(guò)域名解析、DNS等方式間接連接到負(fù)載均衡器。
四、負(fù)載均衡算法
負(fù)載均衡算法,主要分為如下5類:
1.Round Robin-輪詢
輪詢,顧名思義,把請(qǐng)求按順序分配給每個(gè)服務(wù)器,然后重復(fù)執(zhí)行這個(gè)順序,進(jìn)行請(qǐng)求分配。
假設(shè)有3臺(tái)服務(wù)器,分別為A,B,C,當(dāng)客戶端有請(qǐng)求過(guò)來(lái)時(shí),請(qǐng)求會(huì)按照A——>B——>C——>A——>B——>C...這種輪訓(xùn)的順序分配給各個(gè)服務(wù)器。
原理:
服務(wù)器列表:維護(hù)一個(gè)服務(wù)器列表,有服務(wù)器加入/剔除時(shí),相應(yīng)的更新服務(wù)器列表;
服務(wù)器游標(biāo):記錄需要處理下一個(gè)請(qǐng)求的服務(wù)器;
請(qǐng)求分發(fā):新的請(qǐng)求到達(dá),選擇當(dāng)前服務(wù)器來(lái)處理該請(qǐng)求,然后服務(wù)器游標(biāo)+1;
循環(huán):不斷重復(fù)步驟三,以確保每個(gè)服務(wù)器都有機(jī)會(huì)處理請(qǐng)求;
2.Weighted Round Robin - 加權(quán)輪詢
在輪詢的基礎(chǔ)上根據(jù)硬件配置不同,按權(quán)重分發(fā)到不同的服務(wù)器,適合場(chǎng)景:跟配置高、負(fù)載低的機(jī)器分配更高的權(quán)重,使其能處理更多的請(qǐng)求。
3.最少連接數(shù)
記錄每個(gè)服務(wù)器正在處理的請(qǐng)求數(shù),把新的請(qǐng)求分發(fā)到最少連接的服務(wù)器上,因?yàn)橐S護(hù)內(nèi)部狀態(tài)不推薦。
原理
維護(hù)一個(gè)所有服務(wù)器和連接數(shù)的字典(Map);
當(dāng)新的請(qǐng)求到達(dá)時(shí),負(fù)載均衡器會(huì)檢查服務(wù)器列表中當(dāng)前連接數(shù)最少的服務(wù)器;
請(qǐng)求將被分配給具有最少連接數(shù)的服務(wù)器,處理請(qǐng)求后該服務(wù)器的連接數(shù)+1;
如果有多臺(tái)服務(wù)器具有相同的最小連接數(shù),算法可以使用其他標(biāo)準(zhǔn)來(lái)選擇其中一臺(tái),如加權(quán)等
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
動(dòng)態(tài)負(fù)載均衡:它根據(jù)服務(wù)器的當(dāng)前負(fù)載情況來(lái)做出決策,這使得它能夠有效地分配請(qǐng)求給當(dāng)前連接數(shù)最少的服務(wù)器,從而確保了服務(wù)器資源的最佳利用。
適應(yīng)性強(qiáng):這個(gè)算法適用于服務(wù)器性能不均勻的情況,因?yàn)樗P(guān)注的是連接數(shù),而不是服務(wù)器的硬件配置或性能評(píng)估。
避免過(guò)載:通過(guò)將新請(qǐng)求分配給連接數(shù)最少的服務(wù)器,”最小連接數(shù)”算法有助于防止某些服務(wù)器被過(guò)度加載,從而提高了系統(tǒng)的穩(wěn)定性和性能。
自動(dòng)恢復(fù):如果某臺(tái)服務(wù)器由于故障或重啟而導(dǎo)致連接數(shù)清零,該算法會(huì)自動(dòng)開(kāi)始將新請(qǐng)求分配給該服務(wù)器,以實(shí)現(xiàn)自動(dòng)恢復(fù)。
缺點(diǎn):
連接數(shù)不一定代表負(fù)載:”最小連接數(shù)”算法假設(shè)連接數(shù)與服務(wù)器的負(fù)載成正比,但這并不總是準(zhǔn)確。有時(shí)候,某臺(tái)服務(wù)器的連接數(shù)可能很高,但仍然能夠處理更多的請(qǐng)求,而另一臺(tái)連接數(shù)較低的服務(wù)器可能已經(jīng)達(dá)到了其性能極限。
不適用于長(zhǎng)連接:如果服務(wù)器上有大量長(zhǎng)期活躍的連接,例如WebSocket連接,該算法可能不太適用,因?yàn)殚L(zhǎng)連接不同于短暫的HTTP請(qǐng)求,連接數(shù)的統(tǒng)計(jì)可能會(huì)產(chǎn)生誤導(dǎo)。
無(wú)法解決服務(wù)器性能差異:雖然”最小連接數(shù)”算法可以平衡連接數(shù),但它無(wú)法解決服務(wù)器硬件性能差異的問(wèn)題。在這種情況下,可能需要其他負(fù)載均衡算法,如加權(quán)輪詢,來(lái)更好地適應(yīng)性能差異。
4.IP/URL Hash-IP/URL散列
IP/URL 散列算法是一種根據(jù)客戶端 IP 地址或 URL 來(lái)分配請(qǐng)求的負(fù)載均衡算法,這樣相同的IP或者URL就會(huì)負(fù)載到相同的服務(wù)器上。
原理
將客戶端 IP 地址或 URL 散列到服務(wù)器列表中,
然后將請(qǐng)求分配給散列值對(duì)應(yīng)的服務(wù)器。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
穩(wěn)定性:IP/URL Hash 算法可以確保相同的客戶端請(qǐng)求總是被分發(fā)到相同的服務(wù)器上。這可以提高應(yīng)用程序的穩(wěn)定性,因?yàn)榭蛻舳说臅?huì)話數(shù)據(jù)在同一服務(wù)器上保持一致。
適用于會(huì)話保持:當(dāng)應(yīng)用程序需要在多次請(qǐng)求之間保持會(huì)話狀態(tài)時(shí),IP/URL Hash 算法非常有用??蛻舳嗽谝淮握?qǐng)求中選擇的服務(wù)器會(huì)在后續(xù)請(qǐng)求中保持一致,確保會(huì)話數(shù)據(jù)不會(huì)丟失。
負(fù)載均衡:IP/URL Hash 算法可以將特定的客戶端請(qǐng)求均勻地分配到多個(gè)服務(wù)器上,從而實(shí)現(xiàn)基本的負(fù)載均衡,避免了某些服務(wù)器被過(guò)度請(qǐng)求。
缺點(diǎn):
不適用于動(dòng)態(tài)環(huán)境:IP/URL Hash 算法基于客戶端的 IP 地址或 URL,一旦客戶端 IP 或請(qǐng)求的 URL 發(fā)生變化,請(qǐng)求可能會(huì)被分配到不同的服務(wù)器上,導(dǎo)致會(huì)話數(shù)據(jù)丟失或不一致。
不考慮服務(wù)器負(fù)載:IP/URL Hash 算法不考慮服務(wù)器的當(dāng)前負(fù)載情況。如果某個(gè)服務(wù)器的負(fù)載過(guò)高,IP/URL Hash 無(wú)法動(dòng)態(tài)地將請(qǐng)求分發(fā)到負(fù)載較低的服務(wù)器上。
適用場(chǎng)景
靜態(tài)環(huán)境:在靜態(tài)環(huán)境中,即客戶端的 IP 地址或請(qǐng)求的 URL 不經(jīng)常變化的情況下,IP/URL Hash 算法可以提供穩(wěn)定的負(fù)載均衡。
少數(shù)服務(wù)器的負(fù)載均衡:當(dāng)服務(wù)器數(shù)量相對(duì)較少且不太容易動(dòng)態(tài)擴(kuò)展時(shí),IP/URL Hash 算法可以用于基本的負(fù)載均衡。
5.Least Response Time - 最短響應(yīng)時(shí)間
最短響應(yīng)時(shí)間就是指:處理請(qǐng)求的響應(yīng)時(shí)間最少的服務(wù)器,獲取的請(qǐng)求就越多。直白講就是速度快,就干的多。
適用場(chǎng)景
負(fù)載均衡的所有服務(wù)器,處理能力相差比較大。比如:有3臺(tái)服務(wù)器,服務(wù)器A(4C8G,4個(gè)CPU,8G內(nèi)存),服務(wù)器B(2C4G,2個(gè)CPU,4G內(nèi)存),服務(wù)器C(1C2G,1個(gè)CPU,2G內(nèi)存), 那么就可以采用這種算法,這樣可以根據(jù)服務(wù)器的處理來(lái)實(shí)現(xiàn)動(dòng)態(tài)負(fù)載。
交通控制系統(tǒng):在城市交通控制系統(tǒng)中,需要及時(shí)響應(yīng)交通信號(hào)、路況和車輛檢測(cè)等信息。最短響應(yīng)時(shí)間算法可以幫助確保交通信號(hào)及時(shí)適應(yīng)交通流量的變化。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn):可以充分發(fā)揮各個(gè)服務(wù)器的性能,提高服務(wù)器的利用率。
缺點(diǎn):饑餓問(wèn)題。比如,服務(wù)器A的性能最好,處理速度最快,那么所有的請(qǐng)求都會(huì)被分配到服務(wù)器A,這樣服務(wù)器B和服務(wù)器C就會(huì)一直處于饑餓狀態(tài),無(wú)法處理請(qǐng)求。這樣也就會(huì)產(chǎn)生不公平。