據(jù)統(tǒng)計,超過80%的互聯(lián)網(wǎng)用戶會重復(fù)訪問20%的信息資源,這一現(xiàn)狀給緩存技術(shù)的應(yīng)用提供了先決條件。
為減少網(wǎng)絡(luò)中冗余數(shù)據(jù)的重復(fù)傳輸,CDN技術(shù)應(yīng)運而生。通過CDN將廣域傳輸轉(zhuǎn)為本地或就近訪問,解決了因分布、帶寬、服務(wù)器性能帶來的訪問延遲問題。
CDN,即內(nèi)容分發(fā)網(wǎng)絡(luò),是指將源站內(nèi)容分發(fā)至最接近用戶的節(jié)點服務(wù)器,使用戶可就近取得所需內(nèi)容,提高用戶訪問的響應(yīng)速度和成功率。
一、CDN基本思想
傳統(tǒng)的http訪問過程是用戶在瀏覽器填入要訪問的域名,瀏覽器調(diào)用域名解析函數(shù)庫對域名進(jìn)行解析,以得到此域名對應(yīng)的IP地址;
再通過IP地址向域名的服務(wù)主機發(fā)出數(shù)據(jù)訪問請求,得到請求數(shù)據(jù),最終返回所需要的內(nèi)容。
CDN的基本思路則是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),通過在網(wǎng)絡(luò)各處放置節(jié)點服務(wù)器構(gòu)成在現(xiàn)有互聯(lián)網(wǎng)基礎(chǔ)之上的智能虛擬網(wǎng)絡(luò)。
CDN系統(tǒng)能夠?qū)崟r地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點的連接、負(fù)載狀況,以及到用戶的距離和響應(yīng)時間等綜合信息,將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點。
二、基礎(chǔ)架構(gòu)
最簡單的CDN網(wǎng)絡(luò)由一個DNS服務(wù)器和幾臺緩存服務(wù)器組成:
(1)當(dāng)用戶點擊網(wǎng)站頁面上的內(nèi)容URL,經(jīng)過本地DNS系統(tǒng)解析,DNS系統(tǒng)會最終將域名的解析權(quán)交給CNAME指向的CDN專用DNS服務(wù)器。
(2)CDN的DNS服務(wù)器將CDN的全局負(fù)載均衡設(shè)備IP地址返回用戶。
(3)用戶向CDN的全局負(fù)載均衡設(shè)備發(fā)起內(nèi)容URL訪問請求。
(4)CDN全局負(fù)載均衡設(shè)備根據(jù)用戶IP地址,以及用戶請求的內(nèi)容URL,選擇一臺用戶所屬區(qū)域的區(qū)域負(fù)載均衡設(shè)備,告訴用戶向這臺設(shè)備發(fā)起請求。
(5)區(qū)域負(fù)載均衡設(shè)備會為用戶選擇一臺合適的緩存服務(wù)器提供服務(wù),選擇的依據(jù)包括:根據(jù)用戶IP地址,判斷哪一臺服務(wù)器距用戶最近;根據(jù)用戶所請求的URL中攜帶的內(nèi)容名稱,判斷哪一臺服務(wù)器上有用戶所需內(nèi)容;查詢各個服務(wù)器當(dāng)前的負(fù)載情況,判斷哪一臺服務(wù)器尚有服務(wù)能力。基于以上這些條件的綜合分析之后,區(qū)域負(fù)載均衡設(shè)備會向全局負(fù)載均衡設(shè)備返回一臺緩存服務(wù)器的IP地址。
(6)全局負(fù)載均衡設(shè)備把服務(wù)器的IP地址返回給用戶。
(7)用戶向緩存服務(wù)器發(fā)起請求,緩存服務(wù)器響應(yīng)用戶請求,將用戶所需內(nèi)容傳送到用戶終端。如果這臺緩存服務(wù)器上并沒有用戶想要的內(nèi)容,而區(qū)域均衡設(shè)備依然將它分配給了用戶,那么這臺服務(wù)器就要向它的上一級緩存服務(wù)器請求內(nèi)容,直至追溯到網(wǎng)站的源服務(wù)器將內(nèi)容拉到本地。

三、CDN訪問的具體流程
(1)當(dāng)瀏覽器調(diào)用域名解析庫對域名進(jìn)行解析,由于CDN對域名解析過程進(jìn)行了調(diào)整,所以解析函數(shù)庫一般得到的是該域名對應(yīng)的CNAME記錄,為了得到實際IP地址,瀏覽器需要再次對獲得的CNAME域名進(jìn)行解析以得到實際的IP地址;
(2)在此過程中,使用全局負(fù)載均衡DNS解析,并根據(jù)地理位置信息解析對應(yīng)的IP地址,使得用戶能就近訪問;
(3)此次解析得到CDN緩存服務(wù)器的IP地址,瀏覽器在得到實際的IP地址以后,向緩存服務(wù)器發(fā)出訪問請求;
(4)緩存服務(wù)器根據(jù)瀏覽器提供的要訪問的域名,通過cache內(nèi)部專用DNS解析得到此域名的實際IP地址,再由緩存服務(wù)器向此實際IP地址提交訪問請求;
(5)緩存服務(wù)器從實際IP地址得到內(nèi)容以后,一方面在本地進(jìn)行保存,以備以后使用,另一方面把獲取的數(shù)據(jù)返回給客戶端,完成數(shù)據(jù)服務(wù)過程;
(6)客戶端得到由緩存服務(wù)器返回的數(shù)據(jù)后顯示出來并完成整個瀏覽的數(shù)據(jù)請求過程。
四、CDN的關(guān)鍵技術(shù)
典型的CDN系統(tǒng)由分發(fā)服務(wù)系統(tǒng),負(fù)載均衡系統(tǒng)和運營管理系統(tǒng)組成,其中最核心的當(dāng)屬負(fù)載均衡系統(tǒng)。
負(fù)載均衡系統(tǒng)負(fù)責(zé)對所有發(fā)起服務(wù)請求的用戶進(jìn)行訪問調(diào)度,確定提供給用戶的最終實際訪問地址。兩級調(diào)度體系分為全局負(fù)載均衡和本地負(fù)載均衡。
全局負(fù)載均衡主要根據(jù)用戶就近性原則,通過對每個服務(wù)節(jié)點進(jìn)行“最優(yōu)”判斷,確定向用戶提供服務(wù)的cache的物理位置。本地負(fù)載均衡主要負(fù)責(zé)節(jié)點內(nèi)部的設(shè)備負(fù)載均衡。
當(dāng)下的視頻、直播等內(nèi)容分發(fā)渠道已成為企業(yè)爭奪流量入口的主戰(zhàn)場,CDN作為網(wǎng)絡(luò)基礎(chǔ)應(yīng)用設(shè)施,自始至終都發(fā)揮著不可或缺的作用。
CDN不僅可以降低延時,提高穩(wěn)定性,還起到了緩解服務(wù)器帶寬壓力和保護(hù)源站服務(wù)器的作用。即便是針對動態(tài)內(nèi)容的的惡意請求,CDN的調(diào)度系統(tǒng)也可以卸載源站服務(wù)器壓力,維護(hù)系統(tǒng)平穩(wěn)。

五、CDN有哪些作用?
這就是你使用CDN的第一個也是最重要的原因:為了加速網(wǎng)站的訪問
除此之外,CDN還有其他一些作用:
1.加速網(wǎng)站訪問
CDN在客戶流量最為集中的區(qū)域或線路部署多個緩存服務(wù)器,如果客戶獲取靜態(tài)資源的話,可以直接就近訪問緩存服務(wù)器,無需集中訪問源站,這樣就大大降低了源服務(wù)器的壓力,同時對于客戶而言,訪問距離縮短,線路得到分配,訪問的速度也大大加快。
2.為了實現(xiàn)跨運營商、跨地域的全網(wǎng)覆蓋
互聯(lián)不互通、區(qū)域ISP地域局限、出口帶寬受限制等種種因素都造成了網(wǎng)站的區(qū)域性無法訪問。CDN加速可以覆蓋全球的線路,通過和運營商合作,部署IDC資源,在全國骨干節(jié)點商,合理部署CDN邊緣分發(fā)存儲節(jié)點,充分利用帶寬資源,平衡源站流量。
3.為了保障你的網(wǎng)站安全
CDN的負(fù)載均衡和分布式存儲技術(shù),可以加強網(wǎng)站的可靠性,相當(dāng)無無形中給你的網(wǎng)站添加了一把保護(hù)傘,應(yīng)對絕大部分的互聯(lián)網(wǎng)攻擊事件。防攻擊系統(tǒng)也能避免網(wǎng)站遭到惡意攻擊。
4.為了異地備援
當(dāng)某個服務(wù)器發(fā)生意外故障時,系統(tǒng)將會調(diào)用其他臨近的健康服務(wù)器節(jié)點進(jìn)行服務(wù),進(jìn)而提供接近100%的可靠性,這就讓你的網(wǎng)站可以做到永不宕機。
5.為了節(jié)約成本投入
使用CDN加速可以實現(xiàn)網(wǎng)站的全國鋪設(shè),你根據(jù)不用考慮購買服務(wù)器與后續(xù)的托管運維,服務(wù)器之間鏡像同步,也不用為了管理維護(hù)技術(shù)人員而煩惱,節(jié)省了人力、精力和財力。







