簡述負載均衡 CDN技術

2022-02-13 08:21:14 字數 2844 閱讀 7709

曾經見到知乎上有人問「為什麼像facebook這類的**需要上千個工程師維護?」,下面的回答多種多樣,但總結起來就是:乙個高效能的web系統需要從無數個角度去考慮他,大到伺服器的布局,小到軟體中某個檔案的實現,甚至於某個迴圈內的運算如果出現不嚴謹都可能導致全盤崩潰。

上面提到web效能優化需要多個角度去考慮,我們無法考慮到所有的優化細節,但可以從我們已知的層面去優化,我們就先從網路層面說起。

①網路請求路徑:

(客戶端輸入url定位符)→(dns伺服器尋找對映)→(進入伺服器,處理資料)→(返回資料至客戶端)

在這個用例中我們可以很清晰的看出網路請求到返回的過程,雖然非常抽象,但足夠我們以他為基礎來進行優化了。

1)負載均衡

boss一次給了小明好多項任務,小明發現怎麼安排時間也做不完,於是乎他盯上了在旁邊偷偷看電影的小強,小強突然覺得背後有一股涼氣,一回頭小明一臉壞笑看著他,「這幾個任務交給你,晚上請你吃飯,要不然...嘿嘿嘿」,小強雖然不情願,但是在小明的請求(要挾)下,只能服從。第二天,小明順利的完成了任務,給小強買了袋辣條。

在計算機上負載均衡也類似如此,我們的大boss客戶端將請求傳送至伺服器,然而一台伺服器是無法承受很高的併發量的,我們就會將請求**到其他伺服器,當然真正的負載均衡架構並不是由一台server**的另一台server,而在客戶端與伺服器端中間加入了乙個負責分配請求的負載均衡硬體(軟體)。

dns

名詞:dns是客戶端傳送請求中乙個非常重要的中轉,他的作用是將使用者請求的url對映為具體的ip位址,全世界有13臺根伺服器,但通常為我們進行網域名稱解析的並不是根伺服器,而是直接訪問我們的 ldns(local dns server),通常由網路運營商維護。

最早的負載均衡就是利用搭建本地dns伺服器實現的,實現方式簡單易懂,為同乙個主機名分配多個對映 ,可採用輪循,隨機等方式分配請求。看上去沒什麼問題,但是在使用過程中會發現,如果其中乙個位址down機,我們是無法及時發現的,如果有使用者被分配到這個主機就會出現訪問失敗的狀況,同時我們也無法判斷每個server的負載,可能會出現,某個server幾乎閒置,另外乙個server負載壓力極高的情況。

(進入伺服器1,處理資料)↘

(客戶端輸入url定位符)→(dns伺服器尋找對映)→(dns分配請求)                  (返回資料至客戶端)

↘(進入伺服器2,處理資料)↗

硬體裝置

名詞:負載均衡器(load balancer),負載均衡器通常作為獨立的硬體置於客戶端與伺服器之間。

負載均衡裝置擁有非常好的負載均衡效能,他擁有眾多的負載均衡策略(權重,動態比率,最快模式,最小連線數等),可以保證以相對較優的方式分配請求,不過好的東西總是有代價的,那就是**,一台負載均衡器的售價往往高達十幾萬甚至幾十萬,許多企業並不願意為它買單。

反向**

名詞:nginx。高效能,輕量級,已經成了人們對nginx的第一印象,nginx可作為http伺服器,在處理高併發請求的時候擁有比現在主流的apache伺服器更高的效能,同時nginx也是乙個優秀的反向**伺服器。

第一次聽到「反向**」,可能有些陌生,但如果了解與之對應的正向**就很好理解了,正向**通常由客戶端主動鏈結,比如我們的科學上網方式就是使用正向**,以達到間接訪問**的目的,而反向**在伺服器端,無需主動鏈結,當我們訪問擁有反向**的**時,實際訪問的是其反向**伺服器,而非真正的伺服器,當請求到達反向**伺服器時,反向**伺服器再將請求**至伺服器。反向**是實現負載均衡的主流手段之一,通常使用nginx等伺服器搭建,nginx同樣擁有眾多的分配策略,以保證平均分配壓力。

(進入伺服器1,處理資料)↘

(客戶端輸入url定位符)→(dns伺服器尋找對映)→(反向**伺服器)                     (返回資料至客戶端)

↘(進入伺服器2,處理資料)↗

nginx反向**:                    bigip(硬體)負載均衡:

cdn簡單的來說就是儲存一些靜態檔案的一台或多台伺服器,通過複製,快取等方式,將檔案儲存其中。

1.哪些是靜態檔案?

css,html,,**都屬於靜態檔案,也就是說使用者傳送的請求不會影響靜態檔案的內容,而jsp,php等檔案就不屬於靜態檔案,因為他們的內容會因我們的請求而發生改變。

2.cdn如何實現加速?

通常情況下,我們所要的資料都是從主伺服器中獲取,但假如我們的主伺服器在南方,而訪問使用者在北方,那麼訪問速度就會相對變慢,變慢的原因有很多,例如傳輸距離,運營商,頻寬等等因素,而使用cdn技術的話,我們會將cdn節點分布在各地,當使用者傳送請求到達伺服器時,伺服器會根據使用者的區域資訊,為使用者分配最近的cdn伺服器。

3.cdn資料從**來?

複製,快取,cdn伺服器可以在使用者請求後快取檔案,也可以主動抓取主伺服器內容。

分布在各地的cdns:

CDN關鍵技術之負載均衡

內容來自 目前,基於負載均衡的演算法主要有三種 輪循 round robin 最小連線數 least connections first 和快速響應優先 faster response precedence 輪循演算法,就是將來自網路的請求依次分配給集群中的節點進行處理。最小連線數演算法,就是為集群...

CDN技術之 全域性負載均衡(GSLB)

負載均衡就是智慧型排程 全域性負載均衡 gslb 的負載均衡主要是在多個節點之間進行均衡,其結果可能直接終結負載均衡過程,也可能將使用者訪問交付下一層次的 區域或本地 負載均衡系統進行處理。gslb最通用的是基於dns解析方式,還有http重定向 ip路由等方法 dns就是ip位址和 互換 當需要訪...

DNS負載均衡與CDN內容分發技術

負載均衡 負載均衡技術能平衡伺服器及群眾所有的伺服器和請求應用之間的通訊負載,根據實時響應時間進行判斷,將任務交由負載最輕的伺服器來處理,以實現真正的智慧型通訊管理和最佳的伺服器群效能,從而使 始終保持執行和保證其可訪問性。dns負載均衡 為了充分利用現有伺服器軟體的種種優勢,負載均衡最好是在伺服器...