簡(jiǎn)單的說,CDN是一個(gè)經(jīng)策略性部署的整體系統(tǒng),包括分布式緩存,負(fù)載均衡,網(wǎng)絡(luò)請(qǐng)求和重定向和內(nèi)容管理4個(gè)要件。
內(nèi)容管理和全局的網(wǎng)絡(luò)流量管理是CDN的核心所在,通過用戶就近性和服務(wù)器負(fù)載的判斷,CDN確保內(nèi)容以一種極為高效的方式為用戶的請(qǐng)求提供服務(wù)
傳統(tǒng)的IDC 服務(wù)模式

CDN分發(fā)模式

- 用戶在瀏覽器中輸入要訪問的域名;
- 瀏覽器向域名解析服務(wù)器發(fā)出解析請(qǐng)求,由于CDN對(duì)域名解析過程進(jìn)行了調(diào)整,所以用戶端一般得到的是該域名對(duì)應(yīng)的CNAME記錄,此時(shí)瀏覽器需要再次對(duì)獲得的CNAME域名進(jìn)行解析才能得到緩存服務(wù)器實(shí)際的IP地址。
//注:在此過程中,全局負(fù)載均衡DNS解析服務(wù)器會(huì)根據(jù)用戶端的源IP地址,如地理位置(深圳還是上海)、接入網(wǎng)類型(電信還是網(wǎng)通)將用戶的訪問請(qǐng)求定位到離用戶路由最短、位置最近、負(fù)載最輕的Cache節(jié)點(diǎn)(緩存服務(wù)器)上,實(shí)現(xiàn)就近定位。定位優(yōu)先原則可按位置、可按路由、也可按負(fù)載等。 - 再次解析后瀏覽器得到該域名CDN緩存服務(wù)器的實(shí)際IP地址,向緩存服務(wù)器發(fā)出訪問請(qǐng)求;
- 緩存服務(wù)器根據(jù)瀏覽器提供的域名,通過Cache內(nèi)部專用DNS解析得到此域名源服務(wù)器的真實(shí)IP地址,再由緩存服務(wù)器向此真實(shí)IP地址提交訪問請(qǐng)求;
- 緩存服務(wù)器從真實(shí)IP地址得到內(nèi)容后,一方面在本地進(jìn)行保存,以備以后使用,同時(shí)把得到的數(shù)據(jù)發(fā)送到客戶端瀏覽器,完成訪問的響應(yīng)過程;
- 用戶端得到由緩存服務(wù)器傳回的數(shù)據(jù)后顯示出來(lái),至此完成整個(gè)域名訪問過程。
CDN 的關(guān)鍵技術(shù)
內(nèi)容路由技術(shù),內(nèi)容分發(fā)技術(shù),內(nèi)容存儲(chǔ)技術(shù),內(nèi)容管理技術(shù)
內(nèi)容路由
最佳節(jié)點(diǎn)的選擇,最佳節(jié)點(diǎn)的選定可以有多種策略,例如距離最近,節(jié)點(diǎn)負(fù)載最輕等。
負(fù)載均衡分為全局負(fù)載均衡和本地負(fù)載均衡等,就近性判斷是全局負(fù)載均衡的主要特點(diǎn)
負(fù)載均衡的實(shí)現(xiàn)方法包括DNS,應(yīng)用重定向,傳輸層重定向等。
內(nèi)容分發(fā)技術(shù)
內(nèi)容分發(fā)包括從內(nèi)容源到CDN邊緣的Cache過程。從實(shí)現(xiàn)上看主要有兩種實(shí)現(xiàn)方試:Push和Pull
通過Push分發(fā)的內(nèi)容一般是比較熱點(diǎn)的內(nèi)容,由內(nèi)容管理節(jié)點(diǎn)發(fā)起主動(dòng)Push到各個(gè)cache節(jié)點(diǎn),通過用戶的pv來(lái)判斷那些內(nèi)容時(shí)熱點(diǎn)內(nèi)容,可以主動(dòng)的推送到各個(gè)Cache節(jié)點(diǎn)
通過Pull分發(fā)的內(nèi)容一般是比較分散的內(nèi)容,由用戶主動(dòng)請(qǐng)求,但是Cache幾點(diǎn)不存在,這樣的話Cache幾點(diǎn)會(huì)向數(shù)據(jù)源或者其他Cache節(jié)點(diǎn)請(qǐng)求。
在內(nèi)容分發(fā)過程中,對(duì)于Cache設(shè)備而言,關(guān)鍵的是需要建立內(nèi)容源URL,內(nèi)容發(fā)布者URL,用戶訪問的URL,以及內(nèi)容在Cache中存儲(chǔ)的的位置之間的映射關(guān)系
內(nèi)容存儲(chǔ)技術(shù)
對(duì)于在Cache節(jié)點(diǎn)中的存儲(chǔ),是Cache設(shè)計(jì)的一個(gè)關(guān)鍵問題。需要考慮的因素包括功能和性能兩個(gè)方面:在功能上包括對(duì)各種內(nèi)容格式的支持、對(duì)部分緩存的支持,在性能上包括支持的容量、多文件吞吐率、可靠性、穩(wěn)定性。
Cache 存儲(chǔ)的另外一個(gè)重要因素是存儲(chǔ)的可靠性,目前,多數(shù)存儲(chǔ)系統(tǒng)都采用了RAID技術(shù)進(jìn)行可靠存儲(chǔ)
內(nèi)容管理技術(shù)
內(nèi)容管理在廣義上涵蓋了從內(nèi)容的發(fā)布、注入、分發(fā)、調(diào)整、傳遞等一系列過程。在這里,內(nèi)容管理重點(diǎn)強(qiáng)調(diào)內(nèi)容進(jìn)入Cache點(diǎn)后的內(nèi)容管理,我們稱為本地內(nèi)容管理。
本地內(nèi)容管理主要針對(duì)一個(gè)CDN節(jié)點(diǎn)(由多個(gè)CDN Cache設(shè)備和一個(gè)SLB設(shè)備構(gòu)成)進(jìn)行。本地內(nèi)容管理的主要目標(biāo)是提高內(nèi)容服務(wù)的效率,提高本地節(jié)點(diǎn)的存儲(chǔ)利用率。通過本地內(nèi)容管理,可以在CDN節(jié)點(diǎn)實(shí)現(xiàn)基于內(nèi)容感知的調(diào)度,通過內(nèi)容感知的調(diào)度,可以避免將用戶重定向到?jīng)]有該內(nèi)容的Cache設(shè)備上,從而提高負(fù)載均衡的效率。通過本地內(nèi)容管理還可以有效地實(shí)現(xiàn)在CDN節(jié)點(diǎn)內(nèi)容的存儲(chǔ)共享,提高存儲(chǔ)空間的利用率。
在實(shí)現(xiàn)上,本地內(nèi)容管理主要包括如下幾個(gè)方面。
一是本地內(nèi)容索引。本地內(nèi)容管理首先依賴于對(duì)本地內(nèi)容的了解。包括每個(gè)Cache設(shè)備上內(nèi)容的名稱、URL、更新時(shí)間、內(nèi)容信息等。本地內(nèi)容索引是實(shí)現(xiàn)基于內(nèi)容感知的調(diào)度的關(guān)鍵。
二是本地內(nèi)容拷貝。通常,為了提高存儲(chǔ)效率,同一個(gè)內(nèi)容在一個(gè)CDN節(jié)點(diǎn)中僅存儲(chǔ)一份,即僅存儲(chǔ)在某個(gè)特定的Cache上。但是一旦對(duì)該內(nèi)容的訪問超過該Cache的服務(wù)提供能力,就需要在本地(而不是通過PUSL的方式)實(shí)現(xiàn)內(nèi)容的分發(fā)。這樣可以大大提高效率。
三是本地內(nèi)容訪問狀態(tài)信息收集。搜集各個(gè)Cache設(shè)備上各個(gè)內(nèi)容訪問的統(tǒng)計(jì)信息,Cache設(shè)備的可用服務(wù)提供能力及內(nèi)容變化的情況。
可以看出,通過本地內(nèi)容管理,可以將內(nèi)容的管理從原來(lái)的Cache設(shè)備一級(jí),提高到CDN節(jié)點(diǎn)一級(jí),從而大大增加了CDN的可擴(kuò)展性和綜合能力。
綜上所述,CDN作為一種支持大規(guī)模高質(zhì)量的流媒體服務(wù)的關(guān)鍵技術(shù),目前已經(jīng)基本成熟,具備了廣泛應(yīng)用的能力。