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


















 
 
 

















 
 
 
 