CDN全稱為Content Delivery Network即內(nèi)容分發(fā)網(wǎng)絡(luò)训桶,是一個策略性部署的整體系統(tǒng),主要解決由于網(wǎng)絡(luò)帶寬小琴庵,用戶訪問量大导梆、網(wǎng)點分布不均勻等導(dǎo)致用戶訪問網(wǎng)站速度慢的問題。
CDN具體實現(xiàn)是通過現(xiàn)有的網(wǎng)絡(luò)中料按,增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到離用戶最近的網(wǎng)絡(luò)節(jié)點上,這樣用戶可以就近獲取所需的內(nèi)容婆殿,解決之前網(wǎng)絡(luò)擁塞、訪問延時高的問題罩扇,提供用戶體驗婆芦。
源站:發(fā)布內(nèi)容的原始站點。添加喂饥、刪除和更改網(wǎng)站的文件消约,都是在源站上進行的;另外緩存服務(wù)器所抓取的對象也全部來自源站员帮。對于直播來說或粮,源站位主播客戶端。
緩存服務(wù)器:是直接提供給用戶訪問的站點資源捞高,由一臺或數(shù)臺服務(wù)器組成氯材;當(dāng)用戶發(fā)起訪問時渣锦,他的訪問請求被智能DNS定位到離他較近的緩存服務(wù)器。如果用戶所請求的內(nèi)容剛好在緩存里面浓体,則直接把內(nèi)容返還給用戶泡挺;如果訪問所需的內(nèi)容沒有被緩存,則緩存服務(wù)器向鄰近的緩存服務(wù)器或直接向源站抓取內(nèi)容命浴,然后再返還給用戶娄猫。
智能DNS:整個CDN技術(shù)的核心,主要是根據(jù)用戶的來源生闲,以及當(dāng)前緩存服務(wù)器的負載情況等媳溺,將其訪問請求指向離用戶比較近且負載較小的緩存服務(wù)器。通過智能DNS解析碍讯,讓用戶訪問同服務(wù)商下悬蔽、負載較小的服務(wù)器,可以消除網(wǎng)絡(luò)訪問慢的問題捉兴,達到加速作用蝎困。
客戶端:發(fā)起訪問的普通用戶。對于直播來說倍啥,就是觀眾客戶端禾乘。
直播CDN主要流程:
1、主播開始進行直播虽缕,向智能DNS發(fā)送解析請求
2始藕、智能DNS返回最優(yōu)CDN節(jié)點IP地址
3、主播端采集音視頻數(shù)據(jù)氮趋,發(fā)送給CDN節(jié)點伍派,CND節(jié)點進行緩存等處理
4、觀眾端要觀看此主播的視頻剩胁,向智能DNS發(fā)送解析請求
5诉植、智能DNSf返回最優(yōu)CDN節(jié)點IP地址
6、觀眾端向CDN節(jié)點請求音視頻數(shù)據(jù)
7昵观、CDN節(jié)點同步其他節(jié)點的音視頻數(shù)據(jù)
8晾腔、CDN節(jié)點將音視頻數(shù)據(jù)發(fā)送給觀眾端
網(wǎng)絡(luò)延時:從主播端采集,到觀眾端播放之間的時間差(僅考慮網(wǎng)絡(luò)傳輸?shù)难訒r)索昂。
光在真空中的速度約為300建车,000km/s扩借,普通光纖工程上一般認為傳輸速度是200椒惨,000km/s
北京到上海 1,200km 往返時延:12ms
北京到紐約 11,000km 往返時延:110ms
赤道周長 40潮罪,000km 往返時延:400ms
在節(jié)點較少康谆,網(wǎng)絡(luò)情況較好的情況下领斥,網(wǎng)絡(luò)延時也是最小,加上一定的緩存沃暗,可以控制延時在1s~2s左右月洛。節(jié)點多,網(wǎng)絡(luò)差的情況下孽锥,網(wǎng)絡(luò)延時會對應(yīng)的增大嚼黔,延時可以達到15s以上。
網(wǎng)絡(luò)抖動:數(shù)據(jù)包的到達順序惜辑、間隔和發(fā)出時不一致唬涧。
比如發(fā)送100個數(shù)據(jù)包,每個包間隔1s發(fā)出盛撑,結(jié)果第27個包在傳輸過程中遇到網(wǎng)絡(luò)擁塞碎节,造成27不是緊跟26到達的,而是延時到87后面才達抵卫。直播中狮荔,這種抖動的效果實際上跟丟包是一樣的,因為不能依照接收順序把內(nèi)容播放出來介粘,否則會造成失真殖氏。
網(wǎng)絡(luò)抖動會造成播放延時對應(yīng)增大,如果網(wǎng)絡(luò)中抖動較大碗短,會造成播放卡頓等現(xiàn)象受葛。
網(wǎng)絡(luò)丟包:數(shù)據(jù)包的傳輸不可能百分之百的能夠完成,從而造成在數(shù)據(jù)的傳輸中出現(xiàn)空洞偎谁,造成丟包总滩。
CDN直播中用到的RTMP\HLS\HTTP-FLV等協(xié)議都是在TCP的基礎(chǔ)之上。TCP一個很重要的特性是可靠性巡雨,即不會發(fā)生數(shù)據(jù)丟失的問題闰渔。為了保證可靠性,TCP在傳輸過程中有3次握手铐望。首先客戶端會向服務(wù)端發(fā)送連接請求冈涧,服務(wù)端同意后,客戶端就開始發(fā)送數(shù)據(jù)正蛙,每次發(fā)送一批數(shù)據(jù)督弓,得到服務(wù)器的“收到”確認后,繼續(xù)發(fā)送下一批數(shù)據(jù)乒验。TCP為了保證傳到愚隧,會有自動重傳機制。如果傳輸中發(fā)生了丟包锻全,沒有收到對端發(fā)出的“收到”信號狂塘,那么就會自動重傳丟失的包录煤,一直到超時。