講講億級PV的負載均衡架構!

2022-01-01 孤獨煙
引言

本來沒想寫這個題材的,為了某某童鞋能夠更好的茁壯成長,臨時寫一篇負載均衡的。負載均衡,大家可能聽過什麼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。一般面對面試官的提問,諸如如何設計高並發架構啊,本文都可以作為參考回答之一。

能不能加個雞腿

相關焦點

  • 大型網站架構系列:負載均衡詳解
    一、軟體負載均衡概述硬體負載均衡性能優越,功能全面,但是價格昂貴,一般適合初期或者土豪級公司長期使用
  • 強大核心功能矩陣, 詳解騰訊雲負載均衡CLB高可靠高性能背後架構
    1 前言騰訊雲負載均衡(Cloud LoadBalancer),簡稱CLB, 負載均衡通過設置虛擬服務地址(VIP)將來自客戶端的請求按照指定方式分發到其關聯的多臺後端雲伺服器,伺服器將請求的響應返回給負載均衡器,負載均衡再將響應發送到用戶,這樣就向網際網路用戶隱藏了內網結構
  • 分布式系統的負載均衡
    比如下單服務,可以使用帶有負載均衡的多個下單服務實例,代替單一的下單服務實例,即使用冗餘的方式來提高可靠性。總而言之,負載均衡(Load Balance)是分布式系統架構設計中必須考慮的因素之一。一般通過負載均衡,冗餘同一個服務實例的方式,解決分布式系統的大流量、高並發和高可用的問題。負載均衡核心關鍵:在於是否分配均勻。
  • 藍雲湯濤:從雲運維角度解讀全網負載均衡
    隨著「網際網路+」深入,更多高並發、高流量的網際網路業務場景增多,但搭建Cluster集群時無法預計最終用戶的數量,也許設計時是滿足1萬或10萬的用戶訪問,但面對百萬級或千萬級用戶訪問,IT架構肯定完全不同。如果設計成滿足10萬用戶的訪問標準,那麼在百萬甚至千萬的量級訪問之下,系統肯定出現問題。而這樣無法預估的場景在網際網路、物聯網的發展中,都很容易出現。第三,TCO高。
  • NSX高級負載均衡的「高級」玩兒法
    答案是肯定的:- NSX可以更簡潔地實現各種基於深度包分析的負載均衡策略,甚至不再需要學習和使用腳本語言。負載均衡是構建可靠的分布式系統所需的核心功能,尤其是涉及現代微服務體系架構時。由於L7負載均衡具有深度檢查應用層數據包的能力,會在後端伺服器之間有效地進行應用訪問平衡,甚至被很多客戶用於實現A/B測試、灰度發布、藍綠髮布等現代應用開發和部署過程。
  • Oracle將自動負載均衡器添加到其公共雲
    負載平衡器是企業技術環境的基礎組件,負責管理網絡流量。它們有助於在伺服器之間劃分傳入的數據包,以確保工作平均分配。雲部署的負載平衡器還負責確保配置了足夠的網絡帶寬以支持入站流量。但是,儘管該技術減輕了某些基礎架構任務的負擔,但是管理網絡容量仍然需要信息技術團隊進行手動輸入。
  • 集群_負載均衡_分布式的區別是什麼
    打開APP 集群_負載均衡_分布式的區別是什麼 發表於 2017-12-21 11:16:36 負載均衡 負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和伺服器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。 負載均衡其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。
  • 負載均衡算法有哪些
    什麼是負載均衡 負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和伺服器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。  四個分類 軟/硬體 軟體負載均衡解決方案是指在一臺或多臺伺服器相應的作業系統上安裝一個或多個附加軟體來實現負載均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的優點是基於特定環境,配置簡單,使用靈活,成本低廉,可以滿足一般的負載均衡需求。
  • AscenLink負載均衡設備性能分析
    在選取大型負載均衡設備的時候,我們顧慮的因素很多。因為其昂貴的價格,我們更要謹慎對待。下文為讀者們介紹一款設備——AscenLink負載均衡設備。它的性能很突出,讓我們隨著文章一起來看看吧。AscenLink負載均衡設備性能1:VPN負載均衡及容錯採用Xtera領先的VPN負載均衡及容錯技術,兩地間可同時建多條VPN鏈路,增加兩地間VPN鏈路的帶寬和速度,當任何一條鏈路發生故障時,AscenLink可自動引導VPNTunnel至正常的鏈路上,使VPN連線不中斷,達到VPN鏈路的雙向負載均衡及容錯。
  • 一文看懂集群、分布式與負載均衡的關係
    在「高並發,海量數據,分布式,NoSql,雲計算......」概念滿天飛的年代,相信不少朋友都聽說過甚至常與人提起「集群,負載均衡」等,但不是所有人都有機會真正接觸到這些技術,也不是所有人都真正理解了這些「聽起來很牛的」技術名詞。下面簡單解釋一下吧。
  • 阿里雲MVP喬幫主:五大類型負載均衡的原理場景詳解(文末贈書)
    》一書,我們發現常見負載均衡 LVS、Nginx、HAProxy、阿里雲 SLB 及硬體負載均衡等,不同的負載均衡應用場景和功能上有很大區別,這取決於負載均衡底層的原理,原理不同導致了不同負載均衡應用場景、功能、性能的巨大差異。
  • 負載均衡之LVS與Nginx對比
    LVS負載均衡IP隧道模式原理介紹以及配置實戰LVS負載均衡之DR模式原理介紹以及LVS概要文章:LVS負載均衡理論以及算法概要首先要清楚的一點是,LVS是一個四層的負載均衡器,雖然是四層,但並沒有TCP握手以及分手,只是偷窺了IP等信息,而Nginx是一個七層的負載均衡器,所以效率勢必比四層的LVS低很多,但是可操作性比LVS高
  • 雲上構建高可用實例——應用負載均衡
    2 概念摘要  京東雲中應用負載均衡的具體概念和描述參見其產品文檔,這裡羅列一些筆者學習時重要的點:3 負載均衡架構圖  這裡並不畫已經存在於京東雲文檔中的架構圖,這裡描述的是本文所搭建的應用負載均衡的具體樣例架構圖,之後的部署、性能測試均已此圖為準。
  • 艾泰企業級網關,多線路接入負載均衡利器
    因此,通過在多個數據中心分別申請不同運營商的線路,或者同一數據中心採用多家運營商上網線路,並使用專門的負載均衡設備智能選擇最佳鏈路,成為提高服務水平和用戶滿意度的一種有效方式,我們把多數據中心負載均衡和多鏈路負載均衡統稱為全局負載均衡或者廣域網負載均衡。
  • 負載均衡——LVS,HAProxy和Nginx對比分析(附自學資料)
    負載均衡(Load Balance)是應用於網際網路後臺系統架構設計中的各層,它將請求均勻分攤到多個操作單元上執行。
  • 數據中心內的負載均衡-MPTCP
    數據中心最常使用的負載均衡算法為ECMP,通過根據數據流的五元組哈希,將這些數據均勻隨機的分散到權重相等的路徑上。這種隨機選路負載均衡***個問題是會產生哈希碰撞。如圖一所示,紅色路徑與藍色路徑產生了碰撞。另一個問題是,用這種***權重(如最短路徑)的方法選出的路徑,無法判斷路徑是否存在擁塞,很可能將流量繼續發送到一個已經擁塞的鏈路上。
  • IIS負載均衡-Application Request Route詳解第一篇: ARR介紹
    說到負載均衡,相信大家已經不再陌生了,本系列主要介紹在IIS中可以採用的負載均衡的軟體:微軟的Application Request Route
  • Windows Server網絡負載均衡技術解析
    Windows Server集群(cluster)技術是以三層式應用程式的架構來設計的,每一層都有相對應的解決方案。例如,本文介紹的網絡負載均衡(Network Load Balance,NLB)便是屬於前端的集群技術,另外尚有屬於中介層的COM+組件負載均衡(Component Load Balance,CLB),以及後端服務的伺服器集群(Microsoft Cluster Server,MSCS)。
  • Nginx+SpringBoot實現負載均衡
    前言本篇文章主要介紹的是Nginx如何實現負載均衡。負載均衡介紹介紹在介紹Nginx的負載均衡實現之前,先簡單的說下負載均衡的分類,主要分為硬體負載均衡和軟體負載均衡,硬體負載均衡是使用專門的軟體和硬體相結合的設備,設備商會提供完整成熟的解決方案,比如F5,在數據的穩定性以及安全性來說非常可靠,但是相比軟體而言造價會更加昂貴;軟體的負載均衡以Nginx這類軟體為主
  • 美國伺服器負載均衡的類型介紹
    美國伺服器網絡的負載均衡是一種動態均衡技術,經過一些東西實時地分析數據包,掌握網絡中的數據流量狀況,把任務合理均衡地分配出去。計算集中型的運用如電子商務網站等,美國伺服器計算負荷會很大的頻繁讀寫運用,比如網絡資料庫,存儲系統則面臨著檢測大量傳輸的運用,比如視頻,因此數據總是無法快速傳送,無法得到最好的效果,所以訪問量大的運用想要合理解決這些問題就是選用負載均衡技術,用多個設備一起完結任務。下面小編就來分享下美國伺服器負載均衡的類型。