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