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