一、是什麼 CDN (全稱 Content Delivery Network),即內容分髮網絡 構建在現有網路基礎之上的智能虛擬網路,依靠部署在各地的邊緣伺服器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網路擁塞,提高用戶訪問響應速度和命中率。CDN 的關鍵技術主 ...
一、是什麼
CDN (全稱 Content Delivery Network),即內容分髮網絡
構建在現有網路基礎之上的智能虛擬網路,依靠部署在各地的邊緣伺服器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網路擁塞,提高用戶訪問響應速度和命中率。CDN
的關鍵技術主要有內容存儲和分發技術
簡單來講,CDN
就是根據用戶位置分配最近的資源
於是,用戶在上網的時候不用直接訪問源站,而是訪問離他“最近的”一個 CDN 節點,術語叫邊緣節點,其實就是緩存了源站內容的代理伺服器。如下圖:
二、原理分析
在沒有應用CDN
時,我們使用功能變數名稱訪問某一個站點時的路徑為
用戶提交功能變數名稱→瀏覽器對功能變數名稱進行解釋→
DNS
解析得到目的主機的IP地址→根據IP地址訪問發出請求→得到請求數據並回覆
應用CDN
後,DNS
返回的不再是 IP
地址,而是一個CNAME
(Canonical Name ) 別名記錄,指向CDN
的全局負載均衡
CNAME
實際上在功能變數名稱解析的過程中承擔了中間人(或者說代理)的角色,這是CDN
實現的關鍵
負載均衡系統
由於沒有返回IP
地址,於是本地DNS
會向負載均衡系統再發送請求 ,則進入到CDN
的全局負載均衡系統進行智能調度:
-
看用戶的 IP 地址,查表得知地理位置,找相對最近的邊緣節點
-
看用戶所在的運營商網路,找相同網路的邊緣節點
-
檢查邊緣節點的負載情況,找負載較輕的節點
-
其他,比如節點的“健康狀況”、服務能力、帶寬、響應時間等
結合上面的因素,得到最合適的邊緣節點,然後把這個節點返回給用戶,用戶就能夠就近訪問CDN
的緩存代理
整體流程如下圖:
緩存代理
緩存系統是 CDN
的另一個關鍵組成部分,緩存系統會有選擇地緩存那些最常用的那些資源
其中有兩個衡量CDN
服務質量的指標:
- 命中率:用戶訪問的資源恰好在緩存系統里,可以直接返回給用戶,命中次數與所有訪問次數之比
- 回源率:緩存里沒有,必須用代理的方式回源站取,回源次數與所有訪問次數之比
緩存系統也可以劃分出層次,分成一級緩存節點和二級緩存節點。一級緩存配置高一些,直連源站,二級緩存配置低一些,直連用戶
回源的時候二級緩存只找一級緩存,一級緩存沒有才回源站,可以有效地減少真正的回源
現在的商業 CDN
命中率都在 90% 以上,相當於把源站的服務能力放大了 10 倍以上
三、總結
CDN
目的是為了改善互聯網的服務質量,通俗一點說其實就是提高訪問速度
CDN
構建了全國、全球級別的專網,讓用戶就近訪問專網裡的邊緣節點,降低了傳輸延遲,實現了網站加速
通過CDN
的負載均衡系統,智能調度邊緣節點提供服務,相當於CDN
服務的大腦,而緩存系統相當於CDN
的心臟,緩存命中直接返回給用戶,否則回源
參考文獻
- https://zh.wikipedia.org/wiki/內容傳遞網路
- https://juejin.cn/post/6844903890706661389#heading-5
- https://blog.csdn.net/lxx309707872/article/details/109078783