淺談大型網站之負載均衡架構

Java技術棧發表於2017-08-13

概念

負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web伺服器、FTP伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。

負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。

分類

一般有以下3種型別的負載均衡架構

1、鏈路負載均衡

鏈路負載均衡就是一般講的DNS輪循負載均衡,負載均衡是由DNS動態解析成不同的IP完成的,在DNS中為多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的伺服器,達到負載均衡的目的。

DNS負載均衡雖然是一種簡單而有效的方法,但是它不能區分伺服器的差異,也不能反映伺服器的當前執行狀態,如果某一臺伺服器掛掉了,即這個域名不能被訪問,整個網站也就癱瘓了,後果是可想而知的。

2、叢集負載均衡

叢集負載均衡是目前比較廣泛使用的負載均衡方式,主要分為硬體層和軟體層的負載均衡。

硬體負載均衡就是像F5這樣的負載均衡裝置,通過負載均衡硬體裝置來分發使用者的請求。硬體負載均衡效能特別好,但同時價格也非常昂貴,一般小公司用不起的,還有硬體負載均衡也不能動態擴容,當然這不夠成問題。

軟體負載均衡就是現在使用最多較為普遍的一種負載均衡方式,主要就是軟體成本相對硬體來說成本比較低,直接購買普通的伺服器就能搭建軟體負載均衡,但如果軟體負載均衡需要經過的代理伺服器比較多也會帶來網路延遲等問題。常見的軟體負載均衡包括工作在TCP第四層的LVS,即在網路層進行IP地址分發,然後還有工作在TCP第7層的HaProxy、Nginx等根據使用者訪問資訊(如:域名、Cookie等資訊)分發到不同的伺服器。

3、作業系統負載均衡

作業系統負載均衡就是通過利用作業系統級別的軟中斷和硬中斷來達到負載均衡,比如可以設定多佇列的網路卡來實現等,這種負載均衡一般不會用到。

這幾種負載均衡方式在CDN、分散式WEB服務、分散式資料叢集中都能用到。


相關文章