您可能每天使用的服務(wù),從淘寶到微信到抖音,都依賴于稱為 CDN 或內(nèi)容分發(fā)網(wǎng)絡(luò)的東西。那么這些特殊的計(jì)算機(jī)網(wǎng)絡(luò)有什么用,為什么它們?nèi)绱酥匾?/p>
一、什么是CDN?
CDN的全稱是Content Delivery.NETwork,翻譯成中文就是內(nèi)容分發(fā)網(wǎng)絡(luò)。CDN依靠部署在各地的邊緣服務(wù)器,通過中心平臺(tái)的負(fù)載均衡、內(nèi)容分發(fā)、調(diào)度等功能模塊,使用戶就近獲取內(nèi)容,降低網(wǎng)絡(luò)延遲,提高訪問速度。簡單來講,CDN是用來進(jìn)行加速的,它可以讓用戶更快獲得所需的數(shù)據(jù)。
舉個(gè)例子,某個(gè)網(wǎng)站的服務(wù)器在北京,如果深圳的用戶想要獲取服務(wù)器上的數(shù)據(jù),就需要跨越很遠(yuǎn)的距離,由于傳輸速度和路由轉(zhuǎn)發(fā)等因素,就會(huì)導(dǎo)致訪問速度非常緩慢。如果您嘗試訪問地球另一端的網(wǎng)站,則加載時(shí)間將比在您所在城市或國家/地區(qū)托管的網(wǎng)站上花費(fèi)更長的時(shí)間。數(shù)據(jù)包必須傳輸?shù)脑竭h(yuǎn),它們?cè)谕ㄟ^互連時(shí)遇到瓶頸的可能性就越大,或者它們可能會(huì)丟失。在這種情況下,它們必須再次發(fā)送。但如果我們?cè)谏钲诮⒁粋€(gè)CDN服務(wù)器,上面緩存了一些服務(wù)器數(shù)據(jù),那么深圳用戶只需要訪問這個(gè)CND的服務(wù)器就能獲取相關(guān)的內(nèi)容,這樣速度就提升了很多。
二、什么是DNS?
要了解CDN就先要了解一下DNS。我們都知道當(dāng)我們?cè)跒g覽器中輸入一個(gè)域名時(shí),就能訪問該域名所對(duì)應(yīng)的站點(diǎn)。但實(shí)際系統(tǒng)運(yùn)營的邏輯遠(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ì)查詢自己的緩存中有沒有該域名,如果緩存中存在該域名,則可以直接返回IP地址。如果緩存中沒有,服務(wù)器則會(huì)以遞歸的方式層層訪問。
例如,我們要訪問www.baidu.com,首先我們會(huì)先向全球13個(gè)根服務(wù)器發(fā)起請(qǐng)求,詢問com域名的地址,然后再向負(fù)責(zé)com域名的名稱服務(wù)器發(fā)送請(qǐng)求,找到baidu.com,這樣層層遞歸,最終找到我們需要的IP地址。
三、CDN和DNS的區(qū)別
上面我們提到CDN實(shí)際上提供就是一個(gè)就近訪問的功能,但現(xiàn)在有一個(gè)問題是,我們?nèi)绾沃钡接脩羲诘奈恢貌槠浞峙渥罴训腃DN節(jié)點(diǎn)呢,這就需要用DNS服務(wù)進(jìn)行定位了。
當(dāng)我們使用DNS服務(wù)時(shí),可以根據(jù)用戶使用的遞歸服務(wù)器進(jìn)行定位。但你給我們看到用戶使用的是深圳的遞歸服務(wù)器,那么就認(rèn)為該用戶來自深圳,然后調(diào)度服務(wù)器就讓該客戶去訪問深圳的CDN服務(wù)器。
但這種調(diào)度方式可能存在一個(gè)問題,就是用戶的實(shí)際IP與遞歸服務(wù)器并不一致。比如我是北京聯(lián)通的用戶卻使用了深圳電信的遞歸服務(wù)器,那么調(diào)度服務(wù)器為我分配深圳電信的CDN服務(wù)器,就會(huì)產(chǎn)生錯(cuò)誤的調(diào)度。
四、HTTP調(diào)度
針對(duì)上面的問題,我們還有另一種調(diào)度方式——HTTP調(diào)度。
當(dāng)用戶訪問服務(wù)器時(shí),先分析用戶的IP地址,然后服務(wù)器給用戶返回一個(gè)302重定向,將離用戶最近的服務(wù)器存在緩存中,用戶再去請(qǐng)求時(shí)就能得到最佳的CDN節(jié)點(diǎn)。
這種方式定位更加準(zhǔn)確,但缺點(diǎn)是需要增加一次額外的HTTP訪問,這樣導(dǎo)致首次訪問的延時(shí)比較高。
所以在實(shí)際情況中,大都是將兩種方式結(jié)合起來,先通過DNS的方式來定位,然后通過HTTP的方式來糾正偏差。
五、緩存的兩種方式
CDN節(jié)點(diǎn)中緩存了服務(wù)器上的部分資源。那么服務(wù)器怎么去更新CDN節(jié)點(diǎn)的緩存呢?
第一種方式是服務(wù)器主動(dòng)進(jìn)行緩存的更新,CDN節(jié)點(diǎn)被動(dòng)接受并進(jìn)行更新。第二種方式是當(dāng)發(fā)現(xiàn)用戶請(qǐng)求的資源不存在時(shí),CDN節(jié)點(diǎn)主動(dòng)更新緩存,然后將數(shù)據(jù)返給用戶。從實(shí)際執(zhí)行上現(xiàn)在大多以第二種緩存方式居多,因?yàn)榈谝环N方式存在不少問題,比較容易產(chǎn)生404。
六、CDN工作流程
當(dāng)用戶請(qǐng)求一個(gè)文件時(shí),CDN的工作過程如下:
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,訪問最佳節(jié)點(diǎn)
5.假設(shè)您是您所在地區(qū)第一個(gè)從網(wǎng)站請(qǐng)求特定文件的人,而該節(jié)點(diǎn)沒有用戶想要獲取的內(nèi)容,則系統(tǒng)會(huì)通過內(nèi)部路由訪問上一節(jié)點(diǎn),直到找到文件或到達(dá)源站并將對(duì)應(yīng)內(nèi)容復(fù)制到本地緩存。
6.CDN節(jié)點(diǎn)本地節(jié)點(diǎn)將保留該副本,以防其他本地用戶也需要該文件,當(dāng)其他用戶下次請(qǐng)求該文件時(shí)數(shù)據(jù)即可可以直接返回。如果在設(shè)定的時(shí)間后沒有人想要該文件,它可能會(huì)被刪除,直到有人再次想要它為止。這樣長距離帶寬只用一次,然后就只用本地帶寬了。
七、CDN 對(duì)公司的好處
CDN 不僅僅是為用戶提供良好的體驗(yàn)。他們可以通過防止過度使用昂貴的國際帶寬來節(jié)省內(nèi)容提供商的資金。CDN 還可以容納大量用戶,通過網(wǎng)絡(luò)分散負(fù)載以確保沒有拒絕服務(wù)。這也意味著 CDN 可以針對(duì)故意的分布式拒絕服務(wù) ( DDoS ) 攻擊提供保護(hù)。
此外,CDN 提供了一種將內(nèi)容限制在內(nèi)容許可區(qū)域的方法。這就像將本地托管的內(nèi)容限制為該地區(qū)許可的內(nèi)容一樣簡單。
八、任何人都可以使用 CDN 嗎?
不只是大公司建立自己的服務(wù)器網(wǎng)絡(luò)可以利用 CDN 技術(shù),大多數(shù) CDN 屬于提供托管服務(wù)的專業(yè)公司,并將 CDN 服務(wù)作為托管費(fèi)用的一部分。
個(gè)人用戶可以通過使用依賴它們的公司的產(chǎn)品從 CDN 技術(shù)中受益。如果您是商業(yè)用戶,您也可以直接與 CDN 提供商聯(lián)系。火傘云融合CDN融合了全球若干家頂級(jí)CDN廠商,是國內(nèi)極少數(shù)真正實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,智能定位分析和智能調(diào)度決策的融合CDN平臺(tái),也是國內(nèi)首家實(shí)現(xiàn)全球融合CDN加速業(yè)務(wù)正式落地的企業(yè)。火傘云融合CDN是在傳統(tǒng)CDN基礎(chǔ)上實(shí)現(xiàn)的對(duì)數(shù)據(jù)網(wǎng)絡(luò)加速進(jìn)一步優(yōu)化的融合管理服務(wù)。除了服務(wù)于音視頻點(diǎn)播,文件、應(yīng)用與Web加速,以及各類增值場(chǎng)景外,火傘云融合CDN還通過全方位的CDN質(zhì)量監(jiān)控,以及智能易用的加速節(jié)點(diǎn)調(diào)度等功能,保障用戶服務(wù)的連續(xù)性,提供穩(wěn)定快速的網(wǎng)絡(luò)訪問質(zhì)量。