講講億級(jí)PV的負(fù)載均衡架構(gòu)!

來自:孤獨(dú)煙(微信號(hào):zrj_guduyan)

引言

本來沒想寫這個(gè)題材的,為了某某童鞋能夠更好的茁壯成長(zhǎng),臨時(shí)寫一篇負(fù)載均衡的。負(fù)載均衡,大家可能聽過什么3層負(fù)載均衡、4層負(fù)載均衡、7層負(fù)載均衡什么的?那這是怎么分的呢,ok,是根據(jù)osi七層網(wǎng)絡(luò)模型來分的,例如nginx是工作在應(yīng)用層,應(yīng)用層剛好是在第7層,因此nginx又可以稱為7層負(fù)載均衡。

我本來想一層層慢慢講,從最基礎(chǔ)的網(wǎng)絡(luò)協(xié)議開始講起,想了想又覺得這種講法不適合速成。因此我改變思路,直接講負(fù)載均衡架構(gòu)的演進(jìn),最后的成品就可以在面試中侃一侃,因?yàn)楝F(xiàn)在負(fù)載均衡基本都是這套架構(gòu)!。

正文

DNS

開始呢,我們的應(yīng)用只有一臺(tái)web-server。那么你希望:
輸入guduyan.com就能定位該server!

那很簡(jiǎn)單,只要在DNS里配上域名和你的server映射關(guān)系,就能訪問到啦!

流程如下圖所示

image

好,現(xiàn)在呢,多了一臺(tái)web-server,你就可以通過在DNS里加一條配置,以DNS輪詢方式進(jìn)行負(fù)載均衡。如下圖所示

image

Nginx+DNS

現(xiàn)在假設(shè),我們多了一些需求啊。你的系統(tǒng)按照功能模塊拆成兩個(gè)系統(tǒng):用戶系統(tǒng)和訂單系統(tǒng)。那么你希望
輸入guduyan.com/user/的時(shí)候定位到用戶系統(tǒng)。輸入guduyan.com/order/的時(shí)候定位到訂單系統(tǒng)。

那這時(shí)候,光靠DNS就不行了,就需要采用DNS+nginx進(jìn)行負(fù)載均衡!如下圖所示

image

ps:nginx還可以做動(dòng)靜分離哦,大家應(yīng)該懂的!

那如果系統(tǒng)的訪問壓力進(jìn)一步加大,萬一nginx掛了怎么辦?如何給nginx引入熱備?
這里就要用keepalived了,用兩臺(tái)nginx組成一個(gè)集群,分別部署上keepalived,設(shè)置成相同的虛IP,這樣一個(gè)節(jié)點(diǎn)在崩潰的情況下,另一個(gè)節(jié)點(diǎn)能夠自動(dòng)接替其工作,如下圖所示

image

Lvs+Nginx+DNS

接下來隨著系統(tǒng)規(guī)模的繼續(xù)增大,你會(huì)慢慢的發(fā)現(xiàn)nginx也扛不住了!nginx工作在網(wǎng)絡(luò)的第7層,所以它可以針對(duì)http應(yīng)用本身來做分流策略,比如針對(duì)域名、目錄結(jié)構(gòu)等。

而Lvs工作在網(wǎng)絡(luò)4層,抗負(fù)載能力強(qiáng),性能高,能達(dá)到F5的60%,對(duì)內(nèi)存和CPU資源消耗比較低,且穩(wěn)定,可靠性高。它利用linux的內(nèi)核進(jìn)行轉(zhuǎn)發(fā),不產(chǎn)生流量。它能撐的并發(fā)量取決于機(jī)器的內(nèi)存大小,一般來說撐個(gè)幾十萬并發(fā)問題不大!現(xiàn)在基本上都是nginx+Lvs的負(fù)載均衡架構(gòu)!

ps:好好思考為什么會(huì)出現(xiàn)nginx+Lvs被同時(shí)使用,注意看我演變的過程,面試必問!注意了,如果是比較小的網(wǎng)站(日pv<1000萬),用nginx就完全可以了。

那么,在這種情況下的架構(gòu)圖如下所示

image

可能有個(gè)疑問,為什么nginx層不用keepalived做熱備?

主要原因是:
在這種架構(gòu)下,nginx不是單臺(tái),如果nginx掛了,Lvs會(huì)幫你轉(zhuǎn)發(fā)到其他可用的nginx上!

最后,為了應(yīng)對(duì)億級(jí)的PV,一般會(huì)在DNS端配多個(gè)Lvs集群的地址。如下所示

image

方案擴(kuò)展到了這一步,Lvs層就沒有必要再進(jìn)行擴(kuò)展新的節(jié)點(diǎn)了。這套架構(gòu)已經(jīng)能扛得住億級(jí)的PV。當(dāng)然,前提是你的應(yīng)用沒問題!另外如果資金充裕,Lvs可以替換為F5也是可行的。

總結(jié)

OK,這套架構(gòu)已經(jīng)能扛得住千萬的PV。一般面對(duì)面試官的提問,諸如如何設(shè)計(jì)高并發(fā)架構(gòu)啊,本文都可以作為參考回答之一。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容