大家好,我是樹哥!
對于 CDN 這個東西,相信大家都有耳聞,感覺既陌生但又熟悉。最近深入了解了一下 CDN,這才發現原來它如此重要!今天就跟大家分享下關于 CDN 的那些事兒。
瀏覽器的網絡請求要理解 CDN 這件事情,我們就得先理解瀏覽器發出一個請求的過程是怎樣的,其整體過程如下圖所示。
(資料圖片僅供參考)
瀏覽器網絡請求過程
用戶在瀏覽器中輸入要訪問的網址域名。瀏覽器向本地 DNS 服務器請求對域名的解析。如果本地 DNS 服務器有域名的解析結果,那么直接響應用戶請求,返回該域名對應的 IP 地址。如果本地 DNS 服務器沒有域名的解析結果,那么則會遞歸地向 DNS 系統請求解析,隨后將該結果返回給用戶。瀏覽器得到域名解析結果后,其實也就是域名對應的 IP 地址。隨后瀏覽器向服務器請求內容。服務器將用戶請求內容返回給瀏覽器。通過這么復雜的步驟,用戶就可以看到頁面內容了。但實際上,在第 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 基本工作過程
瀏覽器發起圖片 URL 請求,經過本地 DNS 解析,會將域名解析權交給域名 CNAME 指向的 CDN 專用 DNS 服務器。CDN 的 DNS 服務器將 CDN 的全局負載均衡設備 IP 地址返回給瀏覽器。瀏覽器向 CDN 全局負載均衡設備發起 URL 請求。CDN 全局負載均衡設備根據用戶 IP 地址,以及用戶請求的 URL,選擇一臺用戶所屬區域的區域負載均衡設備,向其發起請求。區域負載均衡設備會為用戶選擇最合適的 CDN 緩存服務器(考慮的依據包括:服務器負載情況,距離用戶的距離等),并返回給全局負載均衡設備。全局負載均衡設備將選中的 CDN 緩存服務器 IP 地址返回給用戶。用戶向 CDN 緩存服務器發起請求,緩存服務器響應用戶請求,最終將用戶所需要偶的內容返回給瀏覽器。使用 CDN 服務的網站,只需要將域名解析權交給 CDN 服務商,接著將需要分發的內容上傳到 CDN,就可以實現內容加速了!
總結這么看下來,其實 CDN 內容分發網絡,本質上就是一大堆遍布在全球各個角落的緩存服務器。通過與 DNS 的配合,找到最靠近用戶的一臺 CDN 緩存服務器,然后把數據快速地分發給用戶。
通過 CDN 技術,我們不僅減少了對于整體骨干網的流量負擔,還提高了用戶的體驗,真是一舉兩得??!
X 關閉
X 關閉
- 1轉轉集團發布2022年二季度手機行情報告:二手市場“飄香”
- 2充電寶100Wh等于多少毫安?鐵路旅客禁止、限制攜帶和托運物品目錄
- 3好消息!京東與騰訊續簽三年戰略合作協議 加強技術創新與供應鏈服務
- 4名創優品擬通過香港IPO全球發售4100萬股 全球發售所得款項有什么用處?
- 5亞馬遜云科技成立量子網絡中心致力解決量子計算領域的挑戰
- 6京東綠色建材線上平臺上線 新增用戶70%來自下沉市場
- 7網紅淘品牌“七格格”chuu在北京又開一家店 潮人新寵chuu能紅多久
- 8市場競爭加劇,有車企因經營不善出現破產、退網、退市
- 9北京市市場監管局為企業紓困減負保護經濟韌性
- 10市場監管總局發布限制商品過度包裝標準和第1號修改單