CDN纳账,內(nèi)容分發(fā)網(wǎng)絡叉寂,是大多數(shù)互聯(lián)網(wǎng)業(yè)務里必不可少的部分赖瞒,但大多數(shù)互聯(lián)網(wǎng)從業(yè)人員不是特別清楚CDN究竟是什么,以及它可以為我們做哪些事情爬凑。
我們還是從之前介紹的《不同的人看到的直播為什么不一樣徙缴?》這篇文章切入,講講CDN是什么嘁信。
從直播說起
還記得這個圖吧于样,直播的主播通過自己的手機把“視頻圖”發(fā)給了觀眾,觀眾收到后潘靖,在APP里把每個圖顯示出來穿剖,形成了視頻。現(xiàn)實的情況是卦溢,一個主播不可能只為一個觀眾服務糊余,可能有很多個觀眾需要觀看,如果是3個觀眾单寂,那么就會是這樣了:
圖里的方式是主播把相同的數(shù)據(jù)同時傳給3個不同的觀眾贬芥,這當然是非常愚蠢的方式,同樣的數(shù)據(jù)被傳了3次宣决,主播端的瓶頸非常明顯蘸劈,比如有1000個觀眾同時觀看的時候,主播端根本無法承擔這么多的數(shù)據(jù)傳輸尊沸。
第一臺服務器出現(xiàn)了
所以呢威沫,很容易想到的方法是,主播把數(shù)據(jù)傳給一個中間服務器洼专,由服務器充當把數(shù)據(jù)發(fā)給不同用戶的角色棒掠,也就是這樣(圖片1-6我們先用“數(shù)據(jù)”代替了):
這樣的話,就用了性能強大的服務器來代替了主播傳輸數(shù)據(jù)的工作屁商,給服務器提出的要求是:
第一烟很,能夠接收來自主播的傳輸數(shù)據(jù);第二蜡镶,能夠把數(shù)據(jù)下發(fā)到觀眾APP.于是溯职,服務器這時候便被定義了兩個身份,第一帽哑,推流節(jié)點(接收來自主播端的上行推流);第二叹俏,分發(fā)節(jié)點(把視頻流分發(fā)給不同的觀眾)妻枕。這就是簡單的推流和分發(fā)概念。
由于服務器的強大能力,它不甘心只把數(shù)據(jù)接收過來再分發(fā)下去屡谐,而是要干更多的事情述么。比如說,給主播的臉上做個特效愕掏、給直播畫面上加上公司的logo水印度秘、或者是擔心有主播直播違(hao)禁(kan)的畫面,在服務器上做個鑒黃等等吧饵撑。這時候剑梳,服務器的定義有發(fā)生了改變,它被稱為了“流媒體處理中心”滑潘。
觀眾數(shù)進一步增大會怎樣垢乙?
服務器也是有瓶頸的,例如语卤,通常服務器的網(wǎng)卡是1G的追逮,一路直播視頻的帶寬需求是1M左右,不考慮別的因素粹舵,一臺服務器的網(wǎng)卡最多可以同時分發(fā)1000路直播就達到瓶頸了钮孵。那么,如果有3000個觀眾觀看的時候眼滤,怎么辦巴席?
當然,我們可以放3個服務器嘛柠偶,每個服務器分發(fā)1000路情妖,總共就3000路了。于是就變成了這樣:
又發(fā)現(xiàn)問題了诱担,主播又要向服務器1毡证、2、3分別發(fā)送3份數(shù)據(jù)了蔫仙,按照之前的思路料睛,我們可以這么來優(yōu)化:在服務器1、2摇邦、3之前恤煞,放一個服務器-0,它的作用是接收主播推流施籍,再把數(shù)據(jù)交給服務器1居扒、2、3.由于服務器1丑慎、2喜喂、3給1000名觀眾分發(fā)的數(shù)據(jù)都是一樣的瓤摧,所以呢,他們就把數(shù)據(jù)在自己服務器上存儲了一份玉吁。
概念:負載均衡照弥、CDN緩存、回源进副、就近原則
在這樣的架構(gòu)下这揣,會延伸出這樣的幾個概念:
當觀眾人數(shù)不太多的時候,例如總共只有1000人影斑,那么是選擇讓某一臺服務器服務這1000人给赞,還是3臺服務器分擔1000人,還是2臺鸥昏?機器也會有新舊之分塞俱,老機器只能抗800數(shù)量,那要怎么來分配呢吏垮?等等問題障涯。這里就需要有一個策略來做資源的分配。這個策略叫做:負載均衡膳汪。
因為觀眾看到的數(shù)據(jù)都是一樣的唯蝶,所以呢,數(shù)據(jù)會在服務器1遗嗽、2粘我、3上都存儲一份。這個概念叫做:CDN緩存痹换。
當分配到服務器1的第一個觀眾進入時征字,服務器1是沒有存儲數(shù)據(jù)的,它會向服務器-0獲取數(shù)據(jù)娇豫,這個過程叫做:回源匙姜;相應的,服務器-0被稱為:源站冯痢;觀眾請求的數(shù)據(jù)如果由CDN緩存提供氮昧,叫做緩存命中,所有用戶請求的緩存命中比例叫做緩存命中率浦楣,它是衡量CDN質(zhì)量的關鍵指標袖肥。
一名新進入的觀眾會被分配到哪一臺服務器上呢?理論上振劳,這臺服務器距離用戶的網(wǎng)絡鏈路越短椎组、不跨網(wǎng),數(shù)據(jù)的傳輸?shù)姆€(wěn)定性就越好历恐,這個叫做:就近原則寸癌。
跨地區(qū)选调、多運營商覆蓋的CDN
由于就近原則的存在,為了滿足全國甚至全世界不同地方的人灵份,那我們就需要把服務器分布在不同的地區(qū)。又由于不同的網(wǎng)絡運營商之間的網(wǎng)絡傳輸會有穩(wěn)定性問題哮洽,那么就需要在不同的網(wǎng)絡運營商里也放置服務器填渠,于是,一個CDN網(wǎng)絡就成型了:
隨著規(guī)模越來越大鸟辅,例如現(xiàn)在的PP云氛什,就變成了這樣:
CDN,中文名稱是內(nèi)容分發(fā)網(wǎng)絡匪凉,可以用來分發(fā)直播枪眉、點播、網(wǎng)頁靜態(tài)文件再层、小文件等等贸铜,幾乎我們?nèi)粘S玫降幕ヂ?lián)網(wǎng)產(chǎn)品都是有CDN在背后提供支持。現(xiàn)在有很多公司在提供云服務聂受,這是在CDN的基礎上蒿秦,提供了更豐富的一站式接入的云服務能力。例如PP云服務為客戶提供直播蛋济、點播棍鳖、靜態(tài)文件、短視頻等多種云服務和CDN加速能力碗旅。本文是用比較抽象的方式為大家介紹了CDN是什么渡处,希望可以有所幫助。