一文帶你弄懂 CDN 技術的原理

對於 CDN 這個東西,相信大家都有耳聞,感覺既陌生但又熟悉。最近深入瞭解了一下 CDN,這才發現原來 CDN 如此重要!今天就跟大家科普一下 CDN 是什麼,以及爲啥要有 CDN,最後再講一下 CDN 的工作過程!

瀏覽器的網絡請求

要理解 CDN 這件事情,我們就得先理解瀏覽器發出一個請求的過程是怎樣的,其整體過程如下圖所示。

瀏覽器網絡請求過程

  1. 用戶在瀏覽器中輸入要訪問的網址域名。
  2. 瀏覽器向本地 DNS 服務器請求對域名的解析。
  3. 如果本地 DNS 服務器有域名的解析結果,那麼直接響應用戶請求,返回該域名對應的 IP 地址。
  4. 如果本地 DNS 服務器沒有域名的解析結果,那麼則會遞歸地向 DNS 系統請求解析,隨後將該結果返回給用戶。
  5. 瀏覽器得到域名解析結果後,其實也就是域名對應的 IP 地址。
  6. 隨後瀏覽器向服務器請求內容。
  7. 服務器將用戶請求內容返回給瀏覽器。

通過這麼複雜的步驟,用戶就可以看到頁面內容了。但實際上,在第 6、7 這兩步的時候,其中間也經過了非常複雜的過程。爲了更清晰地表述,我們可以將這個過程分爲 3 個主要節點,如下圖所示。

服務器數據傳輸過程

網站服務器通過公網出口,再通過長途骨幹網,最後通過用戶的寬帶廣貓到達用戶所在的局域網,最終纔到達用戶電腦的瀏覽器。其中長途骨幹網的傳輸是最爲耗時的,它需要經過網站服務器所在的機房、骨幹網、用戶所在城域網、用戶所在接入網等,其物理傳輸距離非常遙遠。 在這種情況下,如果傳輸的數據非常多,訪問的用戶特別大,那麼就會出現很長的延時,影響用戶體驗。同時,每請求一次數據都需要經過漫長的數據傳輸,對於長途骨幹網來說,都是一次負擔。

剛剛說的這個場景,很形象的一個例子是春節搶票的場景。當我們春節搶票時,我們都會登陸 12306 網站,網站上肯定有不少圖片資源。這時候可能同時會有 1 個億的人,同時去請求一張一模一樣的圖片。這時候如果我們都按照上面的過程去請求一次圖片數據,那麼將會產生 1 億次的網絡數據傳輸,這對於我們整個國家的互聯網基礎設施是個災難啊!

但事實情況是:12306 貌似也沒有掛掉呀!

那麼他們是如何解決這個問題呢?答案就是:CDN!

什麼是 CDN ?

其實 CDN 就是內容分發網絡的意思,其英文全稱爲 Content Delivery Network。簡單地說,CDN 可以提前把數據存在離用戶最近的數據節點,從而避免長途跋涉經過長途骨幹網,最終達到減少骨幹網負擔、提高訪問速度的目的。 按照我們上面的場景,如果沒有 CDN 的話,每次請求都需要從網站服務器經過公網出口、長途骨幹網、用戶接入局域網,最終到達瀏覽器。但是當有了 CDN 之後,可能就變成了下面這樣:

CDN 緩存服務器

瀏覽器請求圖片數據時,會先去 CDN 緩存服務器獲取。如果獲取到數據,那麼就直接返回。否則纔會經過長途骨幹網,最終到達網站服務器獲取圖片數據。那麼只要我們提前在 CDN 緩存服務器上傳圖片,那麼我們就可以極大地減少網絡流量,同時減少網絡延遲。

從上圖我們可能會覺得:這不就是在長途骨幹網和用戶局域網中間,加了一個服務器嘛。但事實上可並不是這樣,CDN 其實還縮短了請求數據的距離。我們知道用戶所處的位置可能是全國各地,爲了儘可能地減少網絡傳輸的延時,一般都會在離用戶較近的地方設置 CDN 緩存服務器,例如:在華南、華北、華東、西南設置一個主 CDN 服務器,這樣各個地區的用戶就可以直接請求對應的 CDN 服務器,而不需要來回跑大半個中國,極大地提高了效率!因此,當我們說內容分發網絡的時候,腦海裏應該有如下這樣一張圖片:遍佈全國各地的 CDN 緩存服務器,組成了我們的內容分發網絡。每次用戶請求都會到離他最近的 CDN 服務器請求數據,從而極大地提高訪問速度。

CDN 工作原理

到了這裏,相信大家都知道 CDN 是什麼了。但實際上 CDN 是如何與 DNS 結合起來的,這裏面還是有點複雜的。加入了 CDN 之後,瀏覽器的網絡請求就變成如下圖所示的情況。

CDN基本工作過程

  1. 瀏覽器發起圖片 URL 請求,經過本地 DNS 解析,會將域名解析權交給域名 CNAME 指向的 CDN 專用 DNS 服務器。
  2. CDN 的 DNS 服務器將 CDN 的全局負載均衡設備 IP 地址返回給瀏覽器。
  3. 瀏覽器向 CDN 全局負載均衡設備發起 URL 請求。
  4. CDN 全局負載均衡設備根據用戶 IP 地址,以及用戶請求的 URL,選擇一臺用戶所屬區域的區域負載均衡設備,向其發起請求。
  5. 區域負載均衡設備會爲用戶選擇最合適的 CDN 緩存服務器(考慮的依據包括:服務器負載情況,距離用戶的距離等),並返回給全局負載均衡設備。
  6. 全局負載均衡設備將選中的 CDN 緩存服務器 IP 地址返回給用戶。
  7. 用戶向 CDN 緩存服務器發起請求,緩存服務器響應用戶請求,最終將用戶所需要偶的內容返回給瀏覽器。

使用 CDN 服務的網站,只需要將域名解析權交給 CDN 服務商,接着將需要分發的內容上傳到 CDN,就可以實現內容加速了!

總結

這麼看下來,其實 CDN 內容分發網絡,本質上就是一大堆遍佈在全球各個角落的緩存服務器。通過與 DNS 的配合,找到最靠近用戶的一臺 CDN 緩存服務器,然後把數據快速地分發給用戶。通過 CDN 技術,我們不僅減少了對於整體骨幹網的流量負擔,還提高了用戶的體驗,真是一舉兩得啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章