- 鳳凰架構(gòu):構(gòu)建可靠的大型分布式系統(tǒng)
- 周志明
- 1232字
- 2021-06-24 11:31:00
4.5 負(fù)載均衡
在互聯(lián)網(wǎng)時(shí)代的早期,網(wǎng)站流量還相對(duì)較小,業(yè)務(wù)也相對(duì)簡(jiǎn)單,單臺(tái)服務(wù)器便可滿足訪問需要,但時(shí)至今日,互聯(lián)網(wǎng)應(yīng)用也好,企業(yè)級(jí)應(yīng)用也好,一般實(shí)際用于生產(chǎn)的系統(tǒng),幾乎都離不開集群部署。信息系統(tǒng)不論是單體架構(gòu)多副本還是微服務(wù)架構(gòu),不論是為了實(shí)現(xiàn)高可用還是為了獲得高性能,都需要利用多臺(tái)機(jī)器來擴(kuò)展服務(wù)能力,希望用戶的請(qǐng)求不管連接到哪臺(tái)機(jī)器上,都能得到相同的處理。另一方面,如何構(gòu)建和調(diào)度服務(wù)集群這件事,又必須對(duì)用戶保持足夠的透明,即使請(qǐng)求背后是由一千臺(tái)、一萬臺(tái)機(jī)器來共同響應(yīng)的,也無須用戶關(guān)心,他們只需要記住一個(gè)域名地址即可。調(diào)度后方的多臺(tái)機(jī)器,以統(tǒng)一的接口對(duì)外提供服務(wù),承擔(dān)此職責(zé)的技術(shù)組件被稱為“負(fù)載均衡”(Load Balancing)。
真正大型系統(tǒng)的負(fù)載均衡過程往往是多級(jí)的。譬如,在各地建有多個(gè)機(jī)房,或機(jī)房有不同網(wǎng)絡(luò)鏈路入口的大型互聯(lián)網(wǎng)站,會(huì)從DNS解析開始,通過“域名”→“CNAME”→“負(fù)載調(diào)度服務(wù)”→“就近的數(shù)據(jù)中心入口”的路徑,先將來訪地用戶根據(jù)IP地址(或者其他條件)分配到一個(gè)合適的數(shù)據(jù)中心中,然后才到各式負(fù)載均衡。在DNS層面的負(fù)載均衡與前面介紹的DNS智能線路、內(nèi)容分發(fā)網(wǎng)絡(luò)等在工作原理上是類似的,差別只是數(shù)據(jù)中心能提供的不只是緩存,而是全方位的服務(wù)能力。由于這種方式此前已經(jīng)詳細(xì)講解過,后續(xù)我們所討論的“負(fù)載均衡”就只聚焦于網(wǎng)絡(luò)請(qǐng)求進(jìn)入數(shù)據(jù)中心入口之后的其他級(jí)次的負(fù)載均衡。
無論在網(wǎng)關(guān)內(nèi)部建立了多少級(jí)的負(fù)載均衡,從形式上來說都可以分為兩種:四層負(fù)載均衡和七層負(fù)載均衡。在詳細(xì)介紹它們是什么以及如何工作之前,我們先來建立兩個(gè)總體的、概念性的印象。
·四層負(fù)載均衡的優(yōu)勢(shì)是性能高,七層負(fù)載均衡的優(yōu)勢(shì)是功能強(qiáng)。
·做多級(jí)混合負(fù)載均衡,通常應(yīng)是低層負(fù)載均衡在前,高層負(fù)載均衡在后。
我們所說的“四層”“七層”指的是經(jīng)典的OSI七層模型中的第四層傳輸層和第七層應(yīng)用層。表4-1是維基百科上對(duì)OSI七層模型的介紹(筆者做了簡(jiǎn)單的中文翻譯),這部分屬于網(wǎng)絡(luò)基礎(chǔ)知識(shí),這里就不多解釋了。后面我們會(huì)多次使用到這張表,如你對(duì)網(wǎng)絡(luò)知識(shí)并不是特別了解,可自行查閱相關(guān)資料。
表4-1 OSI七層模型


現(xiàn)在所說的“四層負(fù)載均衡”其實(shí)是多種均衡器工作模式的統(tǒng)稱,“四層”是說這些工作模式的共同特點(diǎn)是維持同一個(gè)TCP連接,而不是說它只工作在第四層。事實(shí)上,這些模式主要都工作在第二層(數(shù)據(jù)鏈路層,改寫MAC地址)和第三層(網(wǎng)絡(luò)層,改寫IP地址)上,單純只處理第四層(傳輸層,可以改寫TCP、UDP等協(xié)議的內(nèi)容和端口)的數(shù)據(jù)無法做到負(fù)載均衡的轉(zhuǎn)發(fā),因?yàn)镺SI的下三層是媒體層(Media Layer),上四層是主機(jī)層(Host Layer),既然流量都已經(jīng)到達(dá)目標(biāo)主機(jī)上了,也就談不上什么流量轉(zhuǎn)發(fā),最多只能做代理。但出于習(xí)慣和方便,現(xiàn)在幾乎所有的資料都把它們統(tǒng)稱為四層負(fù)載均衡,筆者也同樣稱呼它為四層負(fù)載均衡,如果讀者在某些資料上看見“二層負(fù)載均衡”“三層負(fù)載均衡”的表述,應(yīng)該了解這是在描述它們工作的具體層次,與這里說的“四層負(fù)載均衡”并不是同一類意思。下面筆者將介紹幾種常見的四層負(fù)載均衡的工作模式。
- Linux性能優(yōu)化
- PLC控制系統(tǒng)應(yīng)用與維護(hù)
- 循序漸進(jìn)學(xué)Docker
- Linux集群和自動(dòng)化運(yùn)維
- Windows Vista融會(huì)貫通
- Windows Phone應(yīng)用程序開發(fā)
- Linux運(yùn)維最佳實(shí)踐
- 零基礎(chǔ)學(xué)鴻蒙PC:新一代國(guó)產(chǎn)操作系統(tǒng)
- 嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS原理與實(shí)踐
- 一學(xué)就會(huì):Windows Vista應(yīng)用完全自學(xué)手冊(cè)
- Linux設(shè)備驅(qū)動(dòng)開發(fā)
- Learning BeagleBone
- Linux軟件管理平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
- bash shell腳本編程經(jīng)典實(shí)例(第2版)
- Linux集群之美