CDN 的作用與基本過程

PHPer技術棧發表於2019-07-09

簡介

CDN,Content Distribute Network,可以直譯成內容分發網路,CDN解決的是如何將資料快速可靠從源站傳遞到使用者的問題。使用者獲取資料時,不需要直接從源站獲取,通過CDN對於資料的分發,使用者可以從一個較優的伺服器獲取資料,從而達到快速訪問,並減少源站負載壓力的目的。

為什麼不進行資料的直接交付,即讓使用者直接從源站獲取資料呢? 我們常說的網際網路實際上由兩層組成,一層是以TCP/IP為核心的網路層即Internet(因特網),另一層則是以全球資訊網WWW為代表的應用層。資料從伺服器端交付到使用者端,至少有4個地方可能會造成網路擁堵。 1. “第一公里”,這是指全球資訊網流量向使用者傳送的第一個出口,是網站伺服器接入網際網路的鏈路。這個出口頻寬決定了一個網站能為使用者提供的訪問速度和併發訪問量。當使用者請求量超出網站的出口頻寬,就會在出口處造成擁塞。 2. “最後一公里”,全球資訊網流量向使用者傳送的最後一段鏈路,即使用者接入網際網路的鏈路。使用者接入的頻寬影響使用者接收流量的能力。隨著電信運營商的大力發展,使用者的接入頻寬得到了很大改善,“最後一公里”問題基本得到解決。 3. ISP互聯,即因特網服務提供商之間的互聯,比如中國電信和中國聯通兩個網路運營商之間的互聯互通。當某個網站伺服器部署在運營商A的機房,運營商B的使用者要訪問該網站,那就必須經過A、B之間的互聯互通點進行跨網訪問。從網際網路的架構來看,不同運營商之間的互聯互通頻寬,對任何一個運營商網路流量來說,佔比都非常小。因此,這裡也通常是網路傳輸的擁堵點。 4. 長途骨幹傳輸。首先是長距離傳輸時延問題,其次是骨幹網路的擁塞問題,這些問題都會造成全球資訊網流量傳輸的擁堵。 從以上對於網路擁堵的情況分析,如果網路上的資料都使用從源站直接交付到使用者的方法,那麼將極有可能會出現訪問擁塞的情況。 如果能有一種技術方案,將資料快取在離使用者最近的地方,使使用者以最快的速度獲取,那這對於減少網站的出口頻寬壓力,減少網路傳輸的擁堵情況,將起到很大的作用。CDN正是這樣一種技術方案。

使用者通過瀏覽器訪問傳統的(沒有使用CDN)網站的過程如下。

1. 使用者在瀏覽器中輸入要訪問的域名。 2. 瀏覽器向DNS伺服器請求對該域名的解析。 3. DNS伺服器返回該域名的IP地址給瀏覽器。 4. 瀏覽器使用該IP地址向伺服器請求內容。 5. 伺服器將使用者請求的內容返回給瀏覽器。

如果使用了CDN,則其過程會變成以下這樣。

1. 使用者在瀏覽器中輸入要訪問的域名。 2. 瀏覽器向DNS伺服器請求對域名進行解析。由於CDN對域名解析進行了調整,DNS伺服器會最終將域名的解析權交給CNAME指向的CDN專用DNS伺服器。 3. CDN的DNS伺服器將CDN的負載均衡裝置IP地址返回給使用者。 4. 使用者向CDN的負載均衡裝置發起內容URL訪問請求。 5. CDN負載均衡裝置會為使用者選擇一臺合適的快取伺服器提供服務。 選擇的依據包括:根據使用者IP地址,判斷哪一臺伺服器距離使用者最近;根據使用者所請求的URL中攜帶的內容名稱,判斷哪一臺伺服器上有使用者所需內容;查詢各個伺服器的負載情況,判斷哪一臺伺服器的負載較小。 基於以上這些依據的綜合分析之後,負載均衡設定會把快取伺服器的IP地址返回給使用者。 6. 使用者向快取伺服器發出請求。 7. 快取伺服器響應使用者請求,將使用者所需內容傳送到使用者。 如果這臺快取伺服器上並沒有使用者想要的內容,而負載均衡裝置依然將它分配給了使用者,那麼這臺伺服器就要向它的上一級快取伺服器請求內容,直至追溯到網站的源伺服器將內容拉取到本地。

在網站和使用者之間引入CDN之後,使用者不會有任何與原來不同的感覺。 使用CDN服務的網站,只需將其域名的解析權交給CDN的負載均衡裝置,CDN負載均衡裝置將為使用者選擇一臺合適的快取伺服器,使用者通過訪問這臺快取伺服器來獲取自己所需的資料。 由於快取伺服器部署在網路運營商的機房,而這些運營商又是使用者的網路服務提供商,因此使用者可以以最短的路徑,最快的速度對網站進行訪問。因此,CDN可以加速使用者訪問速度,減少源站中心負載壓力。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章