簡介 CDN,Content Distribute Network,可以直譯成內容分髮網絡,CDN解決的是如何將數據快速可靠從源站傳遞到用戶的問題。用戶獲取數據時,不需要直接從源站獲取,通過CDN對於數據的分發,用戶可以從一個較優的伺服器獲取數據,從而達到快速訪問,並減少源站負載壓力的目的。 動機 ...
簡介
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可以加速用戶訪問速度,減少源站中心負載壓力。