內(nèi)容分發(fā)網(wǎng)絡(luò)(Content delivery network或Content distribution network,縮寫:CDN)是指一種通過互聯(lián)網(wǎng)互相連接的電腦網(wǎng)絡(luò)系統(tǒng),利用最靠近每位用戶的服務(wù)器,更快、更可靠地將音樂、圖片、視頻、應(yīng)用程序及其他文件發(fā)送給用戶,來(lái)提供高性能、可擴(kuò)展性及低成本的網(wǎng)絡(luò)內(nèi)容傳遞給用戶。
為什么需要CDN
通常用戶滿意的網(wǎng)頁(yè)打開時(shí)間是在2秒以下?;ヂ?lián)網(wǎng)有一項(xiàng)著名的8秒原則。用戶在訪問Web網(wǎng)頁(yè)時(shí)
,如果時(shí)間超過8秒就會(huì)感到不耐煩,如果下載需要太長(zhǎng)時(shí)間,他們就會(huì)放棄訪問。
CDN的優(yōu)勢(shì)
(1)CDN節(jié)點(diǎn)解決了跨運(yùn)營(yíng)商和跨地域訪問的問題,訪問延時(shí)大大降低;
(2)大部分請(qǐng)求在CDN邊緣節(jié)點(diǎn)完成,CDN起到了分流作用,減輕了源站的負(fù)載。
CDN是一種公共服務(wù),他本身有很多臺(tái)位于不同地域、接入不同運(yùn)營(yíng)商的服務(wù)器,而所謂的使用CDN實(shí)質(zhì)上就是讓CDN作為網(wǎng)站的門面,用戶訪問到的是CDN服務(wù)器,而不是直接訪問到網(wǎng)站。由于CDN內(nèi)部對(duì)TCP的優(yōu)化、對(duì)靜態(tài)資源的緩存、預(yù)取,加上用戶訪問CDN時(shí),會(huì)被智能地分配到最近的節(jié)點(diǎn),降低大量延遲,讓訪問速度可以得到很大提升。
其基本思路是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母?、更穩(wěn)定。通過在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r(shí)地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況以及到用戶的距離和響應(yīng)時(shí)間等綜合信息將用戶的請(qǐng)求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上。
其目的是使用戶可就近取得所需內(nèi)容,解決Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。
CDN的原理
CDN做了兩件事,一是讓用戶訪問最近的節(jié)點(diǎn),二是從緩存或者源站獲取資源
CDN有個(gè)源站的概念,源站就是提供內(nèi)容的站點(diǎn)(網(wǎng)站的真實(shí)服務(wù)器), 從源站取內(nèi)容的過程叫做回源。
每次訪問的具體流程如圖(以最普通的CDN為例)

具體舉個(gè)例子:
用戶在首次訪問 https://assets-cdn.github.com/pinned-octocat.svg , 假設(shè)不委托l(wèi)ocal DNS服務(wù)器遞歸查詢,會(huì)經(jīng)歷以下幾個(gè)過程
- 瀏覽器檢查本地有沒有這個(gè)東東的有效緩存,有則使用緩存,沒有有效緩存則進(jìn)行對(duì)
assets-cdn.github.com的DNS查詢,獲得一個(gè) CNAME記錄,igithub.map.fastly.net,值得注意的是,多個(gè)加速域名可以解析到同一個(gè)CNAME,CDN回源和緩存的時(shí)候考慮到了hostname,<g-emoji>[圖片上傳失敗...(image-917149-1536673312846)]</g-emoji> ; - 進(jìn)行對(duì)
github.map.fastly.net的DNS查詢,獲得一個(gè)A/AAAA記錄,給出地址103.245.222.133(視網(wǎng)站不同返回的不一樣,可以有多個(gè)), 這一步對(duì)CDN來(lái)說(shuō)時(shí)十分重要的,它給出了離用戶最近的邊緣節(jié)點(diǎn); - 瀏覽器選一個(gè)返回的地址,然后進(jìn)行真正的http請(qǐng)求,開始向
103.245.222.133握手,握手完了把http請(qǐng)求頭也發(fā)給了該邊緣服務(wù)器; - 邊緣服務(wù)器檢查自己的cache里面有沒有
https://assets-cdn.github.com/pinned-octocat.svg這個(gè)資源,有則返回給用戶,如果沒有,向CDN中心服務(wù)器發(fā)起請(qǐng)求; - CDN中心服務(wù)器檢查自己的cache里面有沒有這個(gè)資源,有則返回給邊緣服務(wù)器,沒有則回源;
- 中心服務(wù)器發(fā)現(xiàn)客戶配置了
github.map.fastly.net的回源地址(這個(gè)只有cdn會(huì)知道,假設(shè)是xxx.xxx.xxx.xxx),就把http請(qǐng)求發(fā)到源站地址上,源站返回后返回給請(qǐng)求方;
可以看出CDN加速的原理很大部分是跟DNS掛鉤在一起的,CDN供應(yīng)商幾乎一定需要一個(gè)智能DNS服務(wù)器。CDN可以拿到所有的明文數(shù)據(jù),所以對(duì)數(shù)據(jù)安全性、保密性要求比較高的企業(yè)會(huì)選擇自建CDN或者設(shè)置NS記錄,指向自建的智能DNS服務(wù)器。
上述步驟每一步都可以緩存,注意是每一步! 所以CDN要清除緩存很難,因?yàn)橛泻芏喾?wù)器上的緩存要清除。無(wú)論是用戶對(duì)邊緣服務(wù)器的請(qǐng)求,還是CDN服務(wù)器的回源都可以使用https。
注意,實(shí)際環(huán)境中圖中每個(gè)服務(wù)器都可以是集群,甚至CDN分區(qū)域中心和總中心。
主要特點(diǎn):
1、本地Cache加速
提高了企業(yè)站點(diǎn)(尤其含有大量圖片和靜態(tài)頁(yè)面站點(diǎn))的訪問速度,并大大提高以上性質(zhì)站點(diǎn)的穩(wěn)定性
2、鏡像服務(wù)
消除了不同運(yùn)營(yíng)商之間互聯(lián)的瓶頸造成的影響,實(shí)現(xiàn)了跨運(yùn)營(yíng)商的網(wǎng)絡(luò)加速,保證不同網(wǎng)絡(luò)中的用戶都能得到良好的訪問質(zhì)量。
3、遠(yuǎn)程加速
遠(yuǎn)程訪問用戶根據(jù)DNS負(fù)載均衡技術(shù) 智能自動(dòng)選擇Cache服務(wù)器,選擇最快的Cache服務(wù)器,加快遠(yuǎn)程訪問的速度
4、帶寬優(yōu)化
自動(dòng)生成服務(wù)器的遠(yuǎn)程Mirror(鏡像)cache服務(wù)器,遠(yuǎn)程用戶訪問時(shí)從cache服務(wù)器上讀取數(shù)據(jù),減少遠(yuǎn)程訪問的帶寬、分擔(dān)網(wǎng)絡(luò)流量、減輕原站點(diǎn)WEB服務(wù)器負(fù)載等功能。
5、集群抗攻擊
廣泛分布的CDN節(jié)點(diǎn)加上節(jié)點(diǎn)之間的智能冗余機(jī)制,可以有效地預(yù)防黑客入侵以及降低各種D.D.o.S攻擊對(duì)網(wǎng)站的影響,同時(shí)保證較好的服務(wù)質(zhì)量 。
CDN對(duì)網(wǎng)絡(luò)的優(yōu)化:
1.解決服務(wù)器端的“第一公里”問題
2.緩解甚至消除了不同運(yùn)營(yíng)商之間互聯(lián)的瓶頸造成的影響
3.減輕了各省的出口帶寬壓力
4.緩解了骨干網(wǎng)的壓力
5.優(yōu)化了網(wǎng)上熱點(diǎn)內(nèi)容的分布
第一公里
是指萬(wàn)維網(wǎng)流量向用戶傳送的第一個(gè)出口,是網(wǎng)站服務(wù)器接入互聯(lián)網(wǎng)的鏈路所能提供的帶寬。
這個(gè)帶寬決定了一個(gè) 網(wǎng)站能為用戶提供的訪問速度和并發(fā)訪問量。如果業(yè)務(wù)繁忙,用戶的訪問數(shù)越多,擁塞越嚴(yán)重,網(wǎng)站會(huì)在最需要向用戶提供服務(wù)時(shí)失去用戶。
中間一公里
代表互聯(lián)網(wǎng)中節(jié)點(diǎn)與節(jié)點(diǎn)之間的傳輸網(wǎng)絡(luò)
最后一公里
萬(wàn)維網(wǎng)流量向用戶傳送的最后一段接入鏈路
三 . CDN的應(yīng)用場(chǎng)景
網(wǎng)站站點(diǎn)/應(yīng)用加速
站點(diǎn)或者應(yīng)用中大量靜態(tài)資源的加速分發(fā),建議將站點(diǎn)內(nèi)容進(jìn)行動(dòng)靜分離,動(dòng)態(tài)文件可以結(jié)合云服務(wù)器ECS,靜態(tài)資源如各類型圖片、html、css、js文件等,建議結(jié)合 對(duì)象存儲(chǔ)OSS 存儲(chǔ)海量靜態(tài)資源,可以有效加速內(nèi)容加載速度,輕松搞定網(wǎng)站圖片、短視頻等內(nèi)容分發(fā)
視音頻點(diǎn)播/大文件下載分發(fā)加速
支持各類文件的下載、分發(fā),支持在線點(diǎn)播加速業(yè)務(wù),如mp4、flv視頻文件或者平均單個(gè)文件大小在20M以上,主要的業(yè)務(wù)場(chǎng)景是視音頻點(diǎn)播、大文件下載(如安裝包下載)等,建議搭配對(duì)象存儲(chǔ)OSS使用,可提升回源速度,節(jié)約近2/3回源帶寬成本。
視頻直播加速(內(nèi)測(cè)中)
視頻流媒體直播服務(wù),支持媒資存儲(chǔ)、切片轉(zhuǎn)碼、訪問鑒權(quán)、內(nèi)容分發(fā)加速一體化解決方案。結(jié)合彈性伸縮服務(wù),及時(shí)調(diào)整服務(wù)器帶寬,應(yīng)對(duì)突發(fā)訪問流量;結(jié)合媒體轉(zhuǎn)碼服務(wù),享受高速穩(wěn)定的并行轉(zhuǎn)碼,且任務(wù)規(guī)模無(wú)縫擴(kuò)展。目前CDN直播加速已服務(wù)內(nèi)部用戶測(cè)試并優(yōu)化,即將上線
移動(dòng)應(yīng)用加速
移動(dòng)APP更新文件(apk文件)分發(fā),移動(dòng)APP內(nèi)圖片、頁(yè)面、短視頻、UGC等內(nèi)容的優(yōu)化加速分發(fā)。提供httpDNS服務(wù),避免DNS劫持并獲得實(shí)時(shí)精確的DNS解析結(jié)果,有效縮短用戶訪問時(shí)間,提升用戶體驗(yàn)。
參考網(wǎng)址:
http://www.itdecent.cn/p/a64675c6b73b
https://www.zhihu.com/question/36514327
https://juejin.im/entry/587c7a63128fe10057faf224