什么是CDN?CDN和DNS有哪些關(guān)系和區(qū)別?
時(shí)間:2023-02-20 14:36:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-20 14:36:01 來(lái)源:建站知識(shí)
什么是CDN?CDN和DNS有哪些關(guān)系和區(qū)別?:
一、什么是CDN?
CDN的全稱是Content Delivery Network,翻譯成中文就是內(nèi)容分發(fā)網(wǎng)絡(luò)。CDN依靠部署在各地的邊緣服務(wù)器,通過(guò)中心平臺(tái)的負(fù)載均衡、內(nèi)容分發(fā)、調(diào)度等功能模塊,使用戶就近獲取內(nèi)容,降低網(wǎng)絡(luò)延遲,提高訪問(wèn)速度。簡(jiǎn)單來(lái)講,CDN是用來(lái)進(jìn)行加速的,它可以讓用戶更快獲得所需的數(shù)據(jù)。
舉個(gè)例子,某個(gè)網(wǎng)站的服務(wù)器在北京,如果深圳的用戶想要獲取服務(wù)器上的數(shù)據(jù),就需要跨越很遠(yuǎn)的距離,由于傳輸速度和路由轉(zhuǎn)發(fā)等因素,就會(huì)導(dǎo)致訪問(wèn)速度非常緩慢。但如果我們?cè)谏钲诮⒁粋€(gè)CDN服務(wù)器,上面緩存了一些服務(wù)器數(shù)據(jù),那么深圳用戶只需要訪問(wèn)這個(gè)CND的服務(wù)器就能獲取相關(guān)的內(nèi)容,這樣速度就提升了很多。
二、什么是DNS?
要了解cdn就先要了解一下dns。當(dāng)我們?cè)跒g覽器中輸入一個(gè)域名時(shí),就能訪問(wèn)對(duì)應(yīng)的站點(diǎn)。但實(shí)際的情況遠(yuǎn)比我們看到的復(fù)雜,因?yàn)橛?jì)算機(jī)不能直接識(shí)別域名,所以必須依靠某種環(huán)節(jié)將域名翻譯成IP地址才能,這個(gè)環(huán)節(jié)就是DNS。
當(dāng)我們向DNS服務(wù)器發(fā)起解析域名的請(qǐng)求時(shí),DNS服務(wù)器首先會(huì)查詢自己的緩存中有沒(méi)有該域名,如果緩存中存在該域名,則可以直接返回IP地址。如果緩存中沒(méi)有,服務(wù)器則會(huì)以遞歸的方式層層訪問(wèn)。
例如,我們要訪問(wèn)
http://www.baidu.com,首先我們會(huì)先向全球13個(gè)根服務(wù)器發(fā)起請(qǐng)求,詢問(wèn)com域名的地址,然后再向負(fù)責(zé)com域名的名稱服務(wù)器發(fā)送請(qǐng)求,找到
http://baidu.com,這樣層層遞歸,最終找到我們需要的IP地址。
三、CDN和DNS的區(qū)別
上面我們提到CDN實(shí)際上提供就是一個(gè)就近訪問(wèn)的功能,但現(xiàn)在有一個(gè)問(wèn)題是,我們?nèi)绾沃钡接脩羲诘奈恢貌槠浞峙渥罴训腃DN節(jié)點(diǎn)呢。這就需要用DNS服務(wù)進(jìn)行定位了。
當(dāng)我們使用DNS服務(wù)時(shí),可以根據(jù)用戶使用的遞歸服務(wù)器進(jìn)行定位。但你給我們看到用戶使用的是深圳的遞歸服務(wù)器,那么就認(rèn)為該用戶來(lái)自深圳,然后調(diào)度服務(wù)器就讓該客戶去訪問(wèn)深圳的CDN服務(wù)器。
但這種調(diào)度方式可能存在一個(gè)問(wèn)題,就是用戶的實(shí)際IP與遞歸服務(wù)器并不一致。比如我是北京聯(lián)通的用戶卻使用了深圳電信的遞歸服務(wù)器,那么調(diào)度服務(wù)器為我分配深圳電信的CDN服務(wù)器,就會(huì)產(chǎn)生錯(cuò)誤的調(diào)度。
四、HTTP調(diào)度
針對(duì)上面的問(wèn)題,我們還有另一種調(diào)度方式——http調(diào)度。
當(dāng)用戶訪問(wèn)服務(wù)器時(shí),先分析用戶的IP地址,然后服務(wù)器給用戶返回一個(gè)302重定向,將離用戶最近的服務(wù)器存在緩存中,用戶再去請(qǐng)求時(shí)就能得到最佳的CDN節(jié)點(diǎn)。
這種方式定位更加準(zhǔn)確,但缺點(diǎn)是需要增加一次額外的HTTP訪問(wèn),這樣導(dǎo)致首次訪問(wèn)的延時(shí)比較高。
所以在實(shí)際情況中,我們可以將兩種方式結(jié)合起來(lái),先通過(guò)dns的方式來(lái)定位,然后通過(guò)http的方式來(lái)糾正偏差。
五、緩存的兩種方式
CDN節(jié)點(diǎn)中緩存了服務(wù)器上的部分資源。那么服務(wù)器怎么去更新CDN節(jié)點(diǎn)的緩存呢?
一種方式,是服務(wù)器主動(dòng)進(jìn)行緩存的更新,CDN節(jié)點(diǎn)被動(dòng)接受。另一種方式是用戶請(qǐng)求的資源不存在時(shí),CDN節(jié)點(diǎn)主動(dòng)放棄請(qǐng)求,更新緩存,然后將數(shù)據(jù)返給用戶。
顯然第一種方式存在很多問(wèn)題,例如很容易產(chǎn)生404等,所以一般采用第二種緩存方式。
六、CDN工作流程
當(dāng)用戶請(qǐng)求一個(gè)文件時(shí),CDN的工作過(guò)程如下:
1.DNS請(qǐng)求當(dāng)?shù)豯ocal DNS
2.當(dāng)?shù)豯ocal DNS遞歸地查詢服務(wù)器的gslb
3.服務(wù)器根據(jù)local DNS 分配最佳節(jié)點(diǎn),返回IP
4.用戶獲得最佳接入IP,訪問(wèn)最佳節(jié)點(diǎn)。
5.如果該節(jié)點(diǎn)沒(méi)有用戶想要獲取的內(nèi)容,則通過(guò)內(nèi)部路由訪問(wèn)上一節(jié)點(diǎn),直到找到文件或到達(dá)源站為止。
6.CDN節(jié)點(diǎn)緩存該數(shù)據(jù),下次請(qǐng)求該文件時(shí)可以直接返回。
關(guān)鍵詞:關(guān)系,區(qū)別