內(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ā)送給用戶舍杜,來提供高性能新娜、可擴(kuò)展性及低成本的網(wǎng)絡(luò)內(nèi)容傳遞給用戶。
為什么需要CDN
通常用戶滿意的網(wǎng)頁打開時(shí)間是在2秒以下蝴簇”睿互聯(lián)網(wǎng)有一項(xiàng)著名的8秒原則。用戶在訪問Web網(wǎng)頁時(shí)
熬词,如果時(shí)間超過8秒就會(huì)感到不耐煩旁钧,如果下載需要太長時(shí)間吸重,他們就會(huì)放棄訪問。
CDN的優(yōu)勢
(1)CDN節(jié)點(diǎn)解決了跨運(yùn)營商和跨地域訪問的問題歪今,訪問延時(shí)大大降低嚎幸;
(2)大部分請求在CDN邊緣節(jié)點(diǎn)完成,CDN起到了分流作用寄猩,減輕了源站的負(fù)載嫉晶。
CDN是一種公共服務(wù),他本身有很多臺(tái)位于不同地域田篇、接入不同運(yùn)營商的服務(wù)器替废,而所謂的使用CDN實(shí)質(zhì)上就是讓CDN作為網(wǎng)站的門面,用戶訪問到的是CDN服務(wù)器泊柬,而不是直接訪問到網(wǎng)站椎镣。由于CDN內(nèi)部對TCP的優(yōu)化、對靜態(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í)間等綜合信息將用戶的請求重新導(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)行對
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)行對
github.map.fastly.net
的DNS查詢,獲得一個(gè)A/AAAA記錄枕赵,給出地址103.245.222.133
(視網(wǎng)站不同返回的不一樣猜欺,可以有多個(gè)), 這一步對CDN來說時(shí)十分重要的,它給出了離用戶最近的邊緣節(jié)點(diǎn)拷窜; - 瀏覽器選一個(gè)返回的地址开皿,然后進(jìn)行真正的http請求,開始向
103.245.222.133
握手篮昧,握手完了把http請求頭也發(fā)給了該邊緣服務(wù)器; - 邊緣服務(wù)器檢查自己的cache里面有沒有
https://assets-cdn.github.com/pinned-octocat.svg
這個(gè)資源赋荆,有則返回給用戶,如果沒有懊昨,向CDN中心服務(wù)器發(fā)起請求; - CDN中心服務(wù)器檢查自己的cache里面有沒有這個(gè)資源糠睡,有則返回給邊緣服務(wù)器,沒有則回源;
- 中心服務(wù)器發(fā)現(xiàn)客戶配置了
github.map.fastly.net
的回源地址(這個(gè)只有cdn會(huì)知道疚颊,假設(shè)是xxx.xxx.xxx.xxx
),就把http請求發(fā)到源站地址上信认,源站返回后返回給請求方;
可以看出CDN加速的原理很大部分是跟DNS掛鉤在一起的材义,CDN供應(yīng)商幾乎一定需要一個(gè)智能DNS服務(wù)器。CDN可以拿到所有的明文數(shù)據(jù)嫁赏,所以對數(shù)據(jù)安全性其掂、保密性要求比較高的企業(yè)會(huì)選擇自建CDN或者設(shè)置NS記錄,指向自建的智能DNS服務(wù)器潦蝇。
上述步驟每一步都可以緩存款熬,注意是每一步! 所以CDN要清除緩存很難攘乒,因?yàn)橛泻芏喾?wù)器上的緩存要清除贤牛。無論是用戶對邊緣服務(wù)器的請求,還是CDN服務(wù)器的回源都可以使用https则酝。
注意殉簸,實(shí)際環(huán)境中圖中每個(gè)服務(wù)器都可以是集群,甚至CDN分區(qū)域中心和總中心沽讹。
主要特點(diǎn):
1般卑、本地Cache加速
提高了企業(yè)站點(diǎn)(尤其含有大量圖片和靜態(tài)頁面站點(diǎn))的訪問速度,并大大提高以上性質(zhì)站點(diǎn)的穩(wěn)定性
2爽雄、鏡像服務(wù)
消除了不同運(yùn)營商之間互聯(lián)的瓶頸造成的影響蝠检,實(shí)現(xiàn)了跨運(yùn)營商的網(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攻擊對網(wǎng)站的影響,同時(shí)保證較好的服務(wù)質(zhì)量 顿乒。
CDN對網(wǎng)絡(luò)的優(yōu)化:
1.解決服務(wù)器端的“第一公里”問題
2.緩解甚至消除了不同運(yùn)營商之間互聯(lián)的瓶頸造成的影響
3.減輕了各省的出口帶寬壓力
4.緩解了骨干網(wǎng)的壓力
5.優(yōu)化了網(wǎng)上熱點(diǎn)內(nèi)容的分布
第一公里
是指萬維網(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ǎng)流量向用戶傳送的最后一段接入鏈路
三 . CDN的應(yī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é)合 對象存儲(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ù)場景是視音頻點(diǎn)播、大文件下載(如安裝包下載)等嚎花,建議搭配對象存儲(chǔ)OSS使用寸痢,可提升回源速度,節(jié)約近2/3回源帶寬成本紊选。
視頻直播加速(內(nèi)測中)
視頻流媒體直播服務(wù)啼止,支持媒資存儲(chǔ)道逗、切片轉(zhuǎn)碼、訪問鑒權(quán)献烦、內(nèi)容分發(fā)加速一體化解決方案滓窍。結(jié)合彈性伸縮服務(wù),及時(shí)調(diào)整服務(wù)器帶寬巩那,應(yīng)對突發(fā)訪問流量吏夯;結(jié)合媒體轉(zhuǎn)碼服務(wù),享受高速穩(wěn)定的并行轉(zhuǎn)碼即横,且任務(wù)規(guī)模無縫擴(kuò)展噪生。目前CDN直播加速已服務(wù)內(nèi)部用戶測試并優(yōu)化,即將上線
移動(dòng)應(yīng)用加速
移動(dòng)APP更新文件(apk文件)分發(fā)东囚,移動(dòng)APP內(nèi)圖片跺嗽、頁面、短視頻页藻、UGC等內(nèi)容的優(yōu)化加速分發(fā)桨嫁。提供httpDNS服務(wù),避免DNS劫持并獲得實(shí)時(shí)精確的DNS解析結(jié)果份帐,有效縮短用戶訪問時(shí)間瞧甩,提升用戶體驗(yàn)。
參考網(wǎng)址:
http://www.reibang.com/p/a64675c6b73b
https://www.zhihu.com/question/36514327
https://juejin.im/entry/587c7a63128fe10057faf224