日活億級使用者的伺服器架構要怎麼搭?
引言
本來沒想寫這個題材的,為了某某童鞋能夠更好的茁壯成長,臨時寫一篇負載均衡的。負載均衡,大家可能聽過什麼3層負載均衡、4層負載均衡、7層負載均衡什麼的?那這是怎麼分的呢,ok,是根據osi七層網路模型來分的,例如nginx是工作在應用層,應用層剛好是在第7層,因此nginx又可以稱為7層負載均衡。
我本來想一層層慢慢講,從最基礎的網路協議開始講起,想了想又覺得這種講法不適合速成。因此我改變思路,直接講負載均衡架構的演進,最後的成品就可以在面試中侃一侃,因為現在負載均衡基本都是這套架構!。
正文
DNS
開始呢,我們的應用只有一臺web-server。那麼你希望:
輸入guduyan.com就能定位該server!
那很簡單,只要在DNS裡配上域名和你的server對映關係,就能訪問到啦!
流程如下圖所示
好,現在呢,多了一臺web-server,你就可以透過在DNS里加一條配置,以DNS輪詢方式進行負載均衡。如下圖所示
Nginx+DNS
現在假設,我們多了一些需求啊。你的系統按照功能模組拆成兩個系統:使用者系統和訂單系統。那麼你希望
輸入guduyan.com/user/的時候定位到使用者系統。輸入guduyan.com/order/的時候定位到訂單系統。
那這時候,光靠DNS就不行了,就需要採用DNS+nginx進行負載均衡!如下圖所示
ps
:nginx還可以做動靜分離哦,大家應該懂的!
那如果系統的訪問壓力進一步加大,萬一nginx掛了怎麼辦?如何給nginx引入熱備?
這裡就要用keepalived了,用兩臺nginx組成一個叢集,分別部署上keepalived,設定成相同的虛IP,這樣一個節點在崩潰的情況下,另一個節點能夠自動接替其工作,如下圖所示
Lvs+Nginx+DNS
接下來隨著系統規模的繼續增大,你會慢慢的發現nginx也扛不住了!nginx工作在網路的第7層,所以它可以針對http應用本身來做分流策略,比如針對域名、目錄結構等。
而Lvs工作在網路4層,抗負載能力強,效能高,能達到F5的60%,對記憶體和CPU資源消耗比較低,且穩定,可靠性高。它利用linux的核心進行轉發,不產生流量。它能撐的併發量取決於機器的記憶體大小,一般來說撐個幾十萬併發問題不大!現在基本上都是nginx+Lvs的負載均衡架構!ps:
好好思考為什麼會出現nginx+Lvs被同時使用,注意看我演變的過程,面試必問!注意了,如果是比較小的網站(日pv<1000萬),用nginx就完全可以了。
那麼,在這種情況下的架構圖如下所示
可能有個疑問,為什麼nginx層不用keepalived做熱備?
主要原因是:
在這種架構下,nginx不是單臺,如果nginx掛了,Lvs會幫你轉發到其他可用的nginx上!
最後,為了應對億級的PV,一般會在DNS端配多個Lvs叢集的地址。如下所示
方案擴充套件到了這一步,Lvs層就沒有必要再進行擴充套件新的節點了。這套架構已經能扛得住億級的PV。當然,前提是你的應用沒問題!另外如果資金充裕,Lvs可以替換為F5也是可行的。
總結
OK,這套架構已經能扛得住千萬的PV。一般面對面試官的提問,諸如如何設計高併發架構啊,本文都可以作為參考回答之一
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561269/viewspace-2565242/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 部落格站的架構漸進升級最佳化,億級日寫量架構又是什麼樣呢?架構
- 使用者日活月活怎麼統計 - Redis HyperLogLog 詳解Redis
- 1.31億月活的爆款遊戲,它的後端架構是怎樣的?遊戲後端架構
- 6億的下沉使用者,千億級市場該怎麼玩
- 億級流量架構之伺服器擴容思路及問題分析架構伺服器
- 【經典揭祕】集中式架構怎麼升級為分散式架構?架構分散式
- 億級流量架構系列專欄總結【石杉的架構筆記】架構筆記
- 本地讀寫的多活資料儲存架構設計要義架構
- 支撐日活百萬使用者的高併發系統,應該如何設計其資料庫架構?【石杉的架構筆記】資料庫架構筆記
- 億級流量系統架構演進之路架構
- 阿里人的不傳之秘:內部億級架構設計開發筆記(億級架構及最佳化等等)阿里架構筆記
- 億級流量架構之服務降級思路與方法架構
- Java架構師的培訓要學習什麼?Java架構
- Facebook :WhatsApp日活躍使用者超4.5億 每日發訊息650億條APP
- Twitter:2Q19日活使用者加速增至1.39億人
- 2020年4月Google Meet日活躍使用者破1億Go
- 億級訊息中心架構方案概述【原創】架構
- 2021 VDC :vivo 網際網路服務億級使用者的技術架構演進之路架構
- 香港伺服器的安全策略要怎麼做?伺服器
- 金融級分散式資料庫架構設計要點分散式資料庫架構
- 微服務架構怎麼選?微服務架構
- 億級流量系統架構之如何設計全鏈路99.99%高可用架構【石杉的架構筆記】架構筆記
- 億級流量系統架構之如何設計承載百億流量的高效能架構【石杉的架構筆記】架構筆記
- 抖音官方公佈,抖音日活躍使用者破6億
- React Native 新架構是怎麼工作的?React Native架構
- 億級流量架構實戰之秒殺設計架構
- 億級流量架構之服務限流思路與方法架構
- 使用者中心,1億資料,架構如何設計?架構
- 億級流量系統架構之如何支撐百億級資料的儲存與計算【石杉的架構筆記】架構筆記
- 有贊百億級日誌系統架構設計架構
- django怎麼建立超級使用者Django
- 租用美國伺服器要怎麼選才好?伺服器
- 想設計億萬級高併發架構,你要先知道高併發是什麼?架構
- 萬級TPS億級流水-中臺賬戶系統架構設計架構
- 億級流量架構之分散式事務思路及方法架構分散式
- 億級流量架構之資源隔離思路與方法架構
- B站釋出2020年一季度財報:月活使用者達1.72億,日活使用者破5000萬
- Broker的主從架構是怎麼實現的?架構