1. 程式人生 > >小白入門:大型網站技術架構負載均衡技術

小白入門:大型網站技術架構負載均衡技術

十年間,負載均衡的前沿技術層出不窮,令使用者眼花繚亂。經常在技術網站、文件中出現的“四層負載均衡”、“七層負載均衡”字眼有什麼含義?有什麼區別?對客戶網路有哪些不同的優化?

在大型的網站伺服器叢集中,負載均衡技術是必不可少的。使用負載均衡的技術架構,能夠有效避免後端服務出現單點故障,提升服務的穩定性。

 

一、負載均衡簡介

負載均衡,英文名稱為LoadBalance,其意思就是將負載(工作任務)進行平衡,分攤到多個操作單元上進行執行(例如Web伺服器、FTP伺服器等),實現多個伺服器共同完成工作任務的目標。負載均衡建立在現有網路結構之上,它提升了伺服器的效能、提高了頻寬利用率,增強了網路的靈活性和可靠性。經過十年的發展,負載均衡已經成為網路應用的重要裝置,甚至成為大型網路應用的核心裝置,與基礎路由、交換裝置市場並駕齊驅。

負載均衡構建在現有網路結構之上,可以方便有效地擴充套件伺服器資源。通常將大量的併發請求分散至多個節點上分別處理,減少客戶端的等待時間;也可以將單個重負載的運算分擔到多個節點上做並行處理,最後進行彙總。

 

二、負載均衡的作用

這裡寫圖片描述

2.1、請求分發

請求分發即按照一定的演算法將大量的併發請求分散至多個節點的伺服器上處理,減輕單臺伺服器的壓力,減少請求響應時間以及提升系統併發量。

2.2、故障轉移

通過心跳機制檢測判斷各個伺服器的狀態,能夠自動剔除不可用的伺服器並將請求傳送可用伺服器,減少服務出現不可用的概率,提高可用性。

2.3、總的來說

網路負載均衡允許使用相同的群集 IP 地址集指定群集中所有計算機的地址,並且它還為每個主機保留一組唯一專用的 IP 地址。對於負載平衡的應用程式,當主機出現故障或者離線時,會自動在仍然執行的計算機之間重新分發負載。當計算機意外出現故障或者離線時,將斷開與出現故障或離線的伺服器之間的活動連線。任何一種情況下,都可以在準備好時將離線計算機明確地重新加入群集,並重新共享群集負載,以便使群集中的其他計算機處理更少的流量。

三、負載均衡的分類

這裡寫圖片描述

平時我們常用的有四層負載均衡和七層負載均衡,四層的負載均衡是基於IP和埠實現的,七層的負載均衡是在四層的基礎上,基於URL等資訊實現。

3.1、常用於四層負載均衡的軟體(還有F5、NetScaler等硬體負載均衡器)有:

LVS:重量級軟體,本身不支援正則表示式,部署起來比較麻煩,但是效能高,應用範圍廣,一般的大型網際網路公司都有用到。

HAProxy:輕量級軟體,支援的負載均衡策略非常多,較靈活。

Nginx:輕量級軟體,支援的協議少(HTTP、HTTPS和Email協議),對於Session支援不友好。

3.2、常用於七層負載均衡的軟體有:

HAProxy:全面支援七層代理,靈活性高,支援Session會話保持。

Nginx:可以針對HTTP應用進行分流,正則規則靈活,支援高併發,部署簡單。

Apache:效能較差,一般不考慮。

MySQL Proxy:官方的資料庫中介軟體,可以實現讀寫分離,負載均衡等功能,但是對分表分庫支援不完善(可選替代品:Atlas,Cobar,TDDL)。

 

四、技術原理

這裡寫圖片描述

四層負載均衡類似路由器的轉發,通過修改報文中的目標地址和埠,然後直接轉發給該伺服器,只需要一個TCP連線即可。七層負載均衡通過類似於代理的機制進行轉發,負載均衡伺服器會分別與客戶端和後端的伺服器都建立TCP連線。

 

五、應用場景

四層負載均衡一般用於TCP應用中,比如基於C/S架構開發的ERP系統。七層負載均衡大多應用於使用HTTP/HTTPS協議搭建的網站和內部平臺系統。

從市場份額來看,七層負載均衡裝置還是以國外廠商佔據主導地位,國內能夠進行自主研發的只有太一星晨等少數的幾家廠商。而且,國內負載均衡廠商應用場景以鏈路負載為主,難以進入佔據負載均衡市場70%份額、主導負載均衡技術發展的伺服器負載均衡市場,更缺乏在大型資料中心及大型入口網站使用案例。
六、福利時刻之如何學習?
對於很多人來說,對於分散式叢集這些根本無從學起,如果你已經對基礎的Java基礎掌握住了,想入門分散式的話,特推薦幾本書籍供大家參考,這些書籍比簡單的幾篇文章或幾段視訊更能系統的學習理解,總之很不錯!

《大型網站技術架構:核心原理與案例分析 李智慧》

這裡寫圖片描述

《大型分散式網站架構設計與實踐 陳康賢》

這裡寫圖片描述

《大型分散式網站架構設計與實踐 陳康賢》

這裡寫圖片描述

以上三本書籍本人都看過,感覺很不錯,特推薦給大家,一鍵儲存請看下邊(僅供學習交流,禁止用於商業用途,如需要請購買正版,請務必在24小時之內刪除!):

 

歡迎關注技術公眾號:架構師成長營