對于 CDN 這個東西,相信大家都有耳聞,感覺既陌生但 又熟悉。最近深入了解了一下 CDN,這才發現原來 CDN 如此重要!今天就跟大家科普一下 CDN 是什么,以及為啥要有 CDN,最后再講一下 CDN 的工作過程!
要理解 CDN 這件事情,我們就得先理解瀏覽器發出一個請求的過程是怎樣的,其整體過程 如下圖所示。

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

網站服務器通過公網出口,再通過長途骨干網,最后通過用戶的寬帶廣貓到達用戶所 在的局域網,最終才到達用戶電腦的瀏覽器。其中長途骨干網的傳輸是最為耗時的,它需要經過網站服務器所在的機房、骨干網、用戶所在城域網、用戶所在接入網等,其物理傳輸距離非常遙遠。 在這種情況下,如果傳輸的數據非常多,訪問的用戶特別大,那么就會出現很長的延時,影響用戶體驗。同時,每請求一次數據都需要經過漫長的數據傳輸,對于長途骨干網來說,都是一次負擔。
剛剛說的這個場景,很形象的一個例子是春節搶票的場景。當我們春節搶票時,我們都會登陸 12306 網站,網站上肯定有不少圖片資源。這時候可能同時會有 1 個億的人,同時去請求一張一模一樣的圖片。這時候如果我們都按照上面的過程去請求一次圖片數據 ,那么將會產生 1 億次的網絡數據傳輸,這對于我們整個國家的互聯網基礎設施是個災難啊!
但事實情況是:12306 貌似也沒有掛掉呀!
那么他們是如何解決這個問題呢?答案就是:CDN!
其實 CDN 就是內容分發網絡的意 思,其英文全稱為 Content Delivery Network。簡單地說,CDN 可以提前把數據存在離用戶最近的數據節點,從而避免長途跋 涉經過長途骨干網,最終達到減少骨干網負擔、提高訪問速度的目的。 按照我們上面的場景,如果沒有 CDN 的話,每次請求 都需要從網站服務器經過公網出口、長途骨干網、用戶接入局域網,最終到達瀏覽器。但是當有了 CDN 之后,可能就變成了下面這樣:

瀏覽器請求圖片數據時,會先去 CDN 緩存服務器獲取。如果獲取到數據,那么就直接返回。否則才會經過長途骨干網,最終到達網站服務器獲取圖片數據。那么只要我們提前在 CDN 緩存服務器上傳圖片,那么我們就可以極大地減少網絡流量,同時減少網絡延遲。
從上圖我們可能會覺得:這不就是在長途骨干網和用戶局域網中間,加了一個服務器嘛。但事實上可并不是這樣,CDN 其實還縮短了請求數據的距離。我們知道用戶所處的位置可能是全國各地,為了盡可能地減少網絡傳輸的延時,一般都會在離用戶較近的地方設置 CDN 緩存服務器,例如:在華南、華北、華東 、西南設置一個主 CDN 服務器,這樣各個地區的用戶就可以直接請求對應的 CDN 服務器,而不需要來回跑大半個中國,極大地提高了效率!因此,當我們說內容分發網絡的時候,腦海里應該有如下這樣一張圖片:遍布全國各地的 CDN 緩存服務器,組成了我們的 內容分發網絡。每次用戶請求都會到離他最近的 CDN 服務器請求數據,從而極大地提高訪問速度。
到了這里, 相信大家都知道 CDN 是什么了。但實際上 CDN 是如何與 DNS 結合起來的,這里面還是有點復雜的。加入了 CDN 之后,瀏覽器的網絡請求就變成如下圖所示的情況。

使用 CDN 服務的網站,只需要將域名解析權交給 CDN 服務商,接著將需要分發的內容上傳到 CDN,就可以實現內容加速了!
這么看下來,其實 CDN 內容分發網絡,本質上就是一大堆遍布 在全球各個角落的緩存服務器。通過與 DNS 的配合,找到最靠近用戶的一臺 CDN 緩存服務器,然后把數據快速地分發給用戶。通過 CDN 技術,我們不僅減少了對于整體骨干網的流量負擔,還提高了用戶的體驗,真是一舉兩得啊!
天津市津南區咸水沽鎮海棠眾創大街C區智創工坊-S-1119