當前位置:
首頁 > 知識 > 為什麼構建網站時常會用到負載均衡

為什麼構建網站時常會用到負載均衡

對於用戶數較多、負載較大的網站,我們通常都會使用負載均衡(LB:Load Balance)來增加伺服器的承載能力。負載均衡是雲計算的一個基本服務組件,通常都會搭配雲主機來構建雲服務,比如阿里雲的SLB(Server Load Balancer)、騰訊雲的CLB(Cloud Load Balancer)。

我自己是一名大數據架構師,每天都會直播分享免費公開課,大家可以加群參加。以及我自己整理了一套最新的大數據學習系統教程,包括Hadoop,數據挖掘,數據分析。送給正在學習大數據的小夥伴!這裡是大數據學習者聚集地,歡迎初學和進階中的小夥伴!

為什麼構建網站時常會用到負載均衡

打開今日頭條,查看更多圖片

負載均衡可以將客戶端請求分攤到多個操作單元上進行處理

硬體負載均衡

負載均衡有很多種不同的實現方式,總的來說,可以分為硬體負載均衡與軟體負載均衡兩大類。

硬體負載均衡有很多設備商可以提供解決方案,比如NetScaler、F5、Array Networks等。硬體負載均衡的優勢比較明顯:有專業團隊進行維護、性能好、且穩定可靠。

為什麼構建網站時常會用到負載均衡

F5負載均衡器

但硬體負載均衡解決方案也有缺點,比如設備和服務費用昂貴,靈活性差,功能和容量都難以擴展。軟體負載均衡相對來說,靈活性強,擴展起來更容易,所以軟體負載均衡解決方案越來越受到青睞。

DNS負載均衡

軟體負載均衡最早通過DNS來實現,即一個域名對應多個IP地址。在應答DNS查詢時,DNS伺服器對每個查詢將以DNS文件中主機記錄的IP地址按順序返回不同的解析結果,將客戶端的訪問引導到不同的機器上去,使得不同的客戶端訪問不同的伺服器,從而達到負載均衡的目的。

DNS負載均衡的解決方案原理比較簡單,不過缺點也比較明顯:

第一,不能夠按照Web伺服器的處理能力分配負載;

第二,DNS負載均衡技術沒有考慮容錯,即使某個伺服器不可用,DNS仍然會把請求轉發過去;

第三,一旦發現某個伺服器出現故障,即使及時修改了DNS設置,但還是要等DNS刷新時間到了才能生效。

開源軟體解決方案

後來出現了開源軟體負載均衡的解決方案,最主流的就是LVS和Nginx。基於開源軟體的負載均衡打破了硬體LB的壟斷,降低了負載均衡的實施成本。

(1)LVS = Linux Virtual Server

LVS虛擬伺服器,在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟體項目之一。

LVS是把負載均衡的功能做到了Linux內核裡面。LVS集群採用IP負載均衡技術和基於內容請求分發技術,將一組伺服器構成一個高性能的、高可用的虛擬伺服器。

整個伺服器集群的結構對客戶是透明的,客戶訪問集群系統提供的網路服務就像訪問一台高性能、高可用的伺服器一樣,而且無需修改客戶端和伺服器端的程序。

(2)Nginx

Nginx是一個輕量級的Web伺服器,同時也是一個反向代理伺服器,可以利用其反向代理的功能做負載均衡。Nginx與LVS相比主要有以下幾點不同:

與LVS在層四進行負載均衡不同,Nginx是在層7進行,可以針對Http應用進行分流;

轉發策略也更靈活,比如可以針對域名或目錄結構進行轉發;

Nginx對網路的依賴比較小,理論上只要Ping得通,網頁訪問正常就能連通,而LVS比較依賴網路環境。

總的來說,Nginx的應用場合要更多一些,LVS則更適合節點比較多的大型系統。

基於雲的負載均衡(Cloud Load Balance)

除了在雲主機上自己利用LVS或Nginx搭建負載均衡伺服器,阿里雲、騰訊雲等雲計算服務商,均提供了專門的負載均衡服務,配置容易。這些服務商的負載均衡解決方案,往往是結合了層7與層4的綜合負載均衡方案,而且還需要考慮VPC網路與物理網路的不同情況(關於VPC的概念,可以參考之前的文章,《聊聊雲計算:VPC與VPN有什麼關係》)。具體實現方案比較複雜,這裡就不過多介紹了,反正會用就行。

為什麼構建網站時常會用到負載均衡

基於負載均衡實現的典型的雲服務架構

上圖就是一個基於負載均衡的典型的雲服務架構。在我們搭建互聯網應用時,可能需要考慮伺服器的承載能力,或者需要保障伺服器可用性,避免出現單點故障,使用負載均衡就是一個基本操作,掌握了LB,我們的服務就更加穩定了。

---------------------

作者:瘋子程序員

原文:https://blog.csdn.net/qq_40196321/article/details/85075746

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Google AdSense 網頁級廣告的代碼添加方法
Git的安裝和簡單使用(命令行模式+圖形化模式)

TAG:程序員小新人學習 |