一個(gè)網(wǎng)站或應(yīng)用能否在用戶點(diǎn)擊的瞬間迅速響應(yīng),直接決定了用戶體驗(yàn)和業(yè)務(wù)成敗。當(dāng)一位用戶訪問(wèn)一個(gè)熱門網(wǎng)站時(shí),他可能不會(huì)想到,為他提供服務(wù)的并不是一臺(tái)單一的服務(wù)器,而是一個(gè)由眾多服務(wù)器組成的“軍團(tuán)”。而指揮這個(gè)軍團(tuán)高效、有序工作的“大腦”或“交通總指揮”,就是負(fù)載均衡。
要理解負(fù)載均衡,我們可以想象一個(gè)繁忙的餐廳:
沒(méi)有負(fù)載均衡的場(chǎng)景: 餐廳只有一個(gè)服務(wù)員和一個(gè)廚師。當(dāng)顧客蜂擁而至?xí)r,這個(gè)服務(wù)員要記錄所有訂單,并排隊(duì)交給唯一的廚師。廚師忙得焦頭爛額,顧客等待時(shí)間極長(zhǎng),一旦服務(wù)員或廚師累倒了,整個(gè)餐廳就癱瘓了。
引入負(fù)載均衡的場(chǎng)景: 餐廳設(shè)置了一位領(lǐng)班(負(fù)載均衡器) 和多個(gè)服務(wù)員與廚師。顧客首先接觸到領(lǐng)班。領(lǐng)班會(huì)根據(jù)當(dāng)前每個(gè)服務(wù)員的忙碌程度,將新來(lái)的顧客引導(dǎo)到最空閑的服務(wù)員那里。服務(wù)員們?cè)賹⒂唵畏职l(fā)給后廚多個(gè)廚師進(jìn)行烹飪。這樣,工作被平均分配,效率極大提升。即使某個(gè)服務(wù)員或廚師臨時(shí)請(qǐng)假,領(lǐng)班也不會(huì)將新任務(wù)分配給他,整個(gè)餐廳依然能正常運(yùn)轉(zhuǎn)。
在這個(gè)比喻中:
顧客的請(qǐng)求 = 用戶訪問(wèn)網(wǎng)站、APP的請(qǐng)求。
服務(wù)員和后廚 = 后臺(tái)的多臺(tái)網(wǎng)絡(luò)服務(wù)器、應(yīng)用服務(wù)器或數(shù)據(jù)庫(kù)服務(wù)器。
領(lǐng)班 = 負(fù)載均衡器。
因此,負(fù)載均衡的核心定義是:一種將網(wǎng)絡(luò)流量或計(jì)算任務(wù)動(dòng)態(tài)、智能地分發(fā)到多個(gè)后端服務(wù)器(或稱為服務(wù)器集群)的技術(shù),旨在優(yōu)化資源使用、最大化吞吐量、減少響應(yīng)時(shí)間,并避免任何單一組件的過(guò)載。
負(fù)載均衡器作為客戶端與服務(wù)器集群之間的“中間人”,其工作流程通常如下:
接收請(qǐng)求:客戶端(如用戶的瀏覽器)向負(fù)載均衡器的虛擬IP地址發(fā)起請(qǐng)求。
決策:負(fù)載均衡器根據(jù)預(yù)設(shè)的分發(fā)算法,從后臺(tái)服務(wù)器池中選擇一臺(tái)最合適的服務(wù)器。
轉(zhuǎn)發(fā)請(qǐng)求:負(fù)載均衡器將客戶端的請(qǐng)求轉(zhuǎn)發(fā)給選定的服務(wù)器。
返回響應(yīng):被選中的服務(wù)器處理請(qǐng)求并將結(jié)果返回給負(fù)載均衡器。
交付響應(yīng):負(fù)載均衡器最終將響應(yīng)返回給原始的客戶端。
對(duì)客戶端而言,它仿佛只與一臺(tái)服務(wù)器在通信,完全感覺(jué)不到后臺(tái)復(fù)雜的集群結(jié)構(gòu)。
負(fù)載均衡是實(shí)現(xiàn)橫向擴(kuò)展 的關(guān)鍵。
縱向擴(kuò)展 vs. 橫向擴(kuò)展:
縱向擴(kuò)展:提升單臺(tái)服務(wù)器的性能(如升級(jí)CPU、內(nèi)存)。這種方法成本高昂且存在物理上限。
橫向擴(kuò)展:通過(guò)增加更多的服務(wù)器來(lái)分擔(dān)負(fù)載。這種方法更靈活、成本效益更高。
負(fù)載均衡通過(guò)橫向擴(kuò)展來(lái)提升整體處理能力:
當(dāng)流量增加時(shí),系統(tǒng)管理員無(wú)需替換昂貴的硬件,只需在服務(wù)器集群中廉價(jià)地增加新的服務(wù)器節(jié)點(diǎn),并讓負(fù)載均衡器將其納入分發(fā)列表即可。這樣,整個(gè)系統(tǒng)的處理能力幾乎是線性增長(zhǎng)的,能夠輕松應(yīng)對(duì)“雙十一”、明星發(fā)布會(huì)等突發(fā)的高并發(fā)流量。
負(fù)載均衡如何提升服務(wù)器的可用性?
負(fù)載均衡是實(shí)現(xiàn)高可用性 架構(gòu)的基石。
健康檢查:
負(fù)載均衡器會(huì)定期(例如每幾秒鐘)對(duì)后臺(tái)所有服務(wù)器進(jìn)行“健康檢查”,通過(guò)發(fā)送探測(cè)請(qǐng)求來(lái)確認(rèn)服務(wù)器是否正常運(yùn)行。如果發(fā)現(xiàn)某臺(tái)服務(wù)器無(wú)響應(yīng)、服務(wù)崩潰或性能下降,負(fù)載均衡器會(huì)自動(dòng)將其從服務(wù)器池中移除,確保不會(huì)有用戶的請(qǐng)求被發(fā)送到這臺(tái)故障服務(wù)器上。
故障轉(zhuǎn)移:
當(dāng)一臺(tái)服務(wù)器宕機(jī)時(shí),負(fù)載均衡器能瞬間將本應(yīng)發(fā)往該故障服務(wù)器的流量,無(wú)縫地切換到其他健康的服務(wù)器上。對(duì)于終端用戶來(lái)說(shuō),這個(gè)過(guò)程是完全無(wú)感知的,服務(wù)不會(huì)中斷,從而保證了業(yè)務(wù)的連續(xù)性。
消除單點(diǎn)故障:
在沒(méi)有負(fù)載均衡的單服務(wù)器架構(gòu)中,這臺(tái)服務(wù)器就是一個(gè)“單點(diǎn)故障”。一旦它出現(xiàn)問(wèn)題,整個(gè)服務(wù)就宕機(jī)了。負(fù)載均衡通過(guò)引入多臺(tái)服務(wù)器,徹底消除了這個(gè)風(fēng)險(xiǎn)。甚至負(fù)載均衡器本身也可以通過(guò)主備或集群模式來(lái)避免成為新的單點(diǎn)故障。
常見的負(fù)載均衡算法
負(fù)載均衡器的智能核心在于其算法,常見的有:
輪詢:依次將新請(qǐng)求分發(fā)給下一臺(tái)服務(wù)器,實(shí)現(xiàn)絕對(duì)公平。
加權(quán)輪詢:為性能更強(qiáng)的服務(wù)器分配更高的權(quán)重,使其處理更多請(qǐng)求。
最少連接:將新請(qǐng)求發(fā)送給當(dāng)前連接數(shù)最少的服務(wù)器,非常適用于長(zhǎng)連接場(chǎng)景。
源IP哈希:根據(jù)客戶端的IP地址計(jì)算哈希值,將其固定指向某臺(tái)服務(wù)器。這能實(shí)現(xiàn)會(huì)話保持,確保同一用戶在整個(gè)會(huì)話期間都與同一臺(tái)后端服務(wù)器交互,對(duì)于購(gòu)物車等場(chǎng)景至關(guān)重要。
負(fù)載均衡遠(yuǎn)不止是一個(gè)簡(jiǎn)單的“流量分發(fā)器”,它是構(gòu)建現(xiàn)代化、高彈性、高可用性應(yīng)用架構(gòu)的核心組件。它通過(guò)智能分發(fā)實(shí)現(xiàn)了服務(wù)器處理能力的橫向擴(kuò)展,通過(guò)健康檢查與故障轉(zhuǎn)移確保了服務(wù)的高可用性,是現(xiàn)代互聯(lián)網(wǎng)服務(wù)能夠支撐億級(jí)用戶并發(fā)、提供7x24小時(shí)不間斷穩(wěn)定服務(wù)的幕后英雄。從大型電商平臺(tái)到全球性SaaS服務(wù),負(fù)載均衡技術(shù)都在其中發(fā)揮著不可或缺的關(guān)鍵作用。
Copyright ? 2013-2020. All Rights Reserved. 恒訊科技 深圳市恒訊科技有限公司 粵ICP備20052954號(hào) IDC證:B1-20230800.移動(dòng)站


