移動直播網(wǎng)絡(luò)的研究

從 CDN 到 LiveNet TM

隨著基礎(chǔ)設(shè)施的升級,我們從文字時(shí)代演進(jìn)到讀圖時(shí)代,又從讀圖時(shí)代演進(jìn)到微視頻時(shí)代。人們對媒體載體的實(shí)時(shí)性,交互性的要求越來越高。今年是 Live 時(shí)代的元年,直播 App 如雨后春筍,像極了幾年前的千團(tuán)大戰(zhàn)、O2O 大戰(zhàn)、P2P金融 大戰(zhàn),成為互聯(lián)網(wǎng)的又一場戰(zhàn)役。

  • 什么是內(nèi)容分發(fā)網(wǎng)絡(luò)
  • 內(nèi)容分發(fā)網(wǎng)絡(luò)的鏈路路由
  • 內(nèi)容分發(fā)網(wǎng)絡(luò)的擴(kuò)容
  • 內(nèi)容分發(fā)網(wǎng)絡(luò)的安全
  • 回歸本質(zhì):LiveNet TM
  • LiveNet TM VS P2P 網(wǎng)絡(luò)

為什么要有內(nèi)容分發(fā)網(wǎng)絡(luò),內(nèi)容分發(fā)網(wǎng)絡(luò)的由來

互聯(lián)網(wǎng)起源于美國軍方的一個(gè)內(nèi)部網(wǎng)絡(luò),Tim Berners-Lee 是互聯(lián)網(wǎng)發(fā)明者之一,他很早就預(yù)見到在不久的將來網(wǎng)絡(luò)擁塞將成為互聯(lián)網(wǎng)發(fā)展的最大障礙,于是他提出了一個(gè)學(xué)術(shù)難題,要發(fā)明一種全新的、從根本上解決問題的方法來實(shí)現(xiàn)互聯(lián)網(wǎng)內(nèi)容的無擁塞分發(fā),這項(xiàng)學(xué)術(shù)難題最終催生出一種革新性的互聯(lián)網(wǎng)服務(wù)-- CDN 。當(dāng)時(shí) Berners-Lee 博士隔壁是 Tom Leighton 教授的辦公室,一位麻省理工學(xué)院應(yīng)用數(shù)學(xué)教授,他被 Berners-Lee 的挑戰(zhàn)激起了興趣。Letghton 最終解決了這個(gè)難題并開始自己的商業(yè)計(jì)劃,成立了 Akamai 公司,成為世界上第一家 CDN 公司。

內(nèi)容分發(fā)網(wǎng)絡(luò)的架構(gòu)

cdn_arch.png

上圖是一個(gè)典型的 CDN 系統(tǒng)的三級部署示意圖,節(jié)點(diǎn)是 CDN 系統(tǒng)中的最基本部署單元,分為三級部署,中心節(jié)點(diǎn)、區(qū)域節(jié)點(diǎn)和邊緣節(jié)點(diǎn),最上面一級是中心節(jié)點(diǎn),中間一級是區(qū)域節(jié)點(diǎn),邊緣節(jié)點(diǎn)地理位置分散,為用戶提供就近的內(nèi)容訪問服務(wù)。

下面介紹一下 CDN 節(jié)點(diǎn)的分類,主要分成兩大類,骨干節(jié)點(diǎn)和 POP 節(jié)點(diǎn),骨干節(jié)點(diǎn)又分為中心節(jié)點(diǎn)和區(qū)域節(jié)點(diǎn):

  • 骨干節(jié)點(diǎn)
    • 中心節(jié)點(diǎn)
    • 區(qū)域節(jié)點(diǎn)
  • POP節(jié)點(diǎn)
    • 邊緣節(jié)點(diǎn)

邏輯上來講,骨干節(jié)點(diǎn)主要負(fù)責(zé)內(nèi)容分發(fā)和邊緣節(jié)點(diǎn)未命中時(shí)進(jìn)行回源,POP 節(jié)點(diǎn)主要負(fù)責(zé)提供給用戶就近的內(nèi)容訪問服務(wù)。但如果 CDN 網(wǎng)絡(luò)規(guī)模較大,邊緣節(jié)點(diǎn)直接向中心節(jié)點(diǎn)回源會給中間層的核心設(shè)備造成的壓力過大,在物理上引入?yún)^(qū)域節(jié)點(diǎn),負(fù)責(zé)一個(gè)地理區(qū)域的管理,保存部分熱點(diǎn)數(shù)據(jù)。

內(nèi)容分發(fā)網(wǎng)絡(luò)的種類

  • 網(wǎng)頁加速
  • 視頻加速
  • 文件傳輸加速
  • 應(yīng)用協(xié)議加速
  • 直播加速

內(nèi)容分發(fā)網(wǎng)絡(luò)主要分為以上幾種,我們簡單介紹一下:

網(wǎng)頁加速

網(wǎng)頁是比較早出現(xiàn)的互聯(lián)網(wǎng)信息載體,也是 CDN 支持的最早的一種加速服務(wù),開始主要是對靜態(tài)網(wǎng)頁、圖片等等進(jìn)行加速,發(fā)展到現(xiàn)在也可以對動態(tài)內(nèi)容進(jìn)行加速。

視頻點(diǎn)播加速

隨著基礎(chǔ)網(wǎng)絡(luò)的提升,單純的圖片和文字已經(jīng)沒辦法滿足大家的物流需求,于是涌現(xiàn)了大量的視頻網(wǎng)站,CDN 應(yīng)對這種需求開發(fā)了針對流媒體視頻的加速網(wǎng)絡(luò),做出的技術(shù)改變,主要是改變原有 PULL 模型為 PUSH 模型,縮短了用戶訪問時(shí)間,避免視頻流媒體的冷啟動,也降低了對樹形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中的根節(jié)點(diǎn)的壓力(骨干節(jié)點(diǎn))。

文件傳輸加速

主要支持了很多常見的文件下載協(xié)議,如 FTP、HTTP、P2P 等,同時(shí)像七牛這種云存儲廠商會支持層次更高的對象存儲服務(wù),CDN 也內(nèi)建在其中,對用戶無感知加速。

應(yīng)用協(xié)議加速

推出了 HTTPS 加速,HTTP 網(wǎng)頁壓縮加速等,進(jìn)一步縮短了用戶訪問時(shí)間,降低了源站的資源使用壓力。

直播加速

隨著 Live 時(shí)代的到來,直播成為當(dāng)前 CDN 廠商的又一個(gè)主要的戰(zhàn)場,那么 Live 時(shí)代 CDN 需要支持什么樣的服務(wù)呢?

  • 流媒體協(xié)議的支持,包括 RTMP , HLS ,HTTP-FLV 等。
  • 首屏秒開,從用戶點(diǎn)擊到播放控制在秒級以內(nèi)
  • 1~3 延遲控制,從推流端到播放端,延遲控制在 1~3 秒之間
  • 全球全網(wǎng)智能路由,可以利用整個(gè) CDN 網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)為某一單一用戶服務(wù),不受地域限制。隨著全球一體化進(jìn)程不斷推進(jìn),跨區(qū)域、跨國家、跨洲的直播正變?yōu)槌B(tài),很可能主播在歐美,而用戶在亞洲。
  • 天級別的節(jié)點(diǎn)按需增加,中國公司出海已成大勢,CDN 需要更多的海外節(jié)點(diǎn),如今比拼的更多的是海外節(jié)點(diǎn)可以快速部署,從提出節(jié)點(diǎn)增加需求到節(jié)點(diǎn)入網(wǎng)提供服務(wù),需要達(dá)到一天之內(nèi),對 CDN 運(yùn)維和規(guī)劃提出非常高的要求。原有的月級別規(guī)劃和入網(wǎng)滿足不了先進(jìn)的要求。

內(nèi)容分發(fā)網(wǎng)絡(luò)的鏈路路由

CDN 基于樹狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),每一層都有 GSLB (Global Server Load Balancing) 用于同一層內(nèi)的多個(gè) CDN 節(jié)點(diǎn)負(fù)載均衡,這樣有什么好處呢?

前面提到的眾多 CDN 的應(yīng)用場景中,網(wǎng)頁加速、視頻加速、文件傳輸加速,都是同時(shí)依賴 GSLB 和 Cache 系統(tǒng)的,Cache 系統(tǒng)是整個(gè) CDN 系統(tǒng)中的成本所在,設(shè)計(jì)樹形結(jié)構(gòu)可以最大化的節(jié)省 Cache 系統(tǒng)的資本投入。因?yàn)橹挥兄行墓?jié)點(diǎn)需要保持機(jī)會所有的 Cache 副本,先下逐級的減少,到了邊緣節(jié)點(diǎn)只需要少量的熱點(diǎn) Cache 就可以命中大部分 CDN 訪問請求,這樣極大的降低了 CDN 網(wǎng)絡(luò)的成本,也符合當(dāng)是 CDN 用戶的需求,可謂雙贏。當(dāng)是到了 Live 時(shí)代,直播業(yè)務(wù)是流式業(yè)務(wù),很少涉及到 Cache 系統(tǒng),基本都是播完就可以釋放掉存儲資源,即使因?yàn)檎咴蛴写鎯Φ男枨笠捕际抢浯鎯?,對于存儲的投入相對非常低廉,而且不要求存儲在所有?jié)點(diǎn)中,只要保證數(shù)據(jù)可回溯,可用即可。

我們看看樹狀網(wǎng)絡(luò)拓?fù)洌脩舻逆溌愤x擇數(shù)量是有限的,如下圖,用戶在某一個(gè)區(qū)域內(nèi)可選擇的鏈路數(shù)是:2 * 6 = 12

cdn_route.png

用戶在某一區(qū)域內(nèi),則 GSLB (通常在邊緣節(jié)點(diǎn)這一層是 Smart DNS)會把用戶路由到該區(qū)域內(nèi)的某個(gè)邊緣節(jié)點(diǎn),上一層又會路由到某個(gè)區(qū)域節(jié)點(diǎn)(這里的 GSLB 通常是內(nèi)部的負(fù)載均衡器),最后又回溯到中心節(jié)點(diǎn),中心節(jié)點(diǎn)會鏈接源站。

這里的假設(shè)是:

  • 用戶能訪問的最快節(jié)點(diǎn)一定是該區(qū)域內(nèi)的邊緣節(jié)點(diǎn),如果該區(qū)域沒有邊緣節(jié)點(diǎn)則最快的一定是邏輯相鄰的區(qū)域內(nèi)的邊緣節(jié)點(diǎn)。
  • 邊緣節(jié)點(diǎn)能訪問的最快節(jié)點(diǎn)一定是該區(qū)域內(nèi)的區(qū)域節(jié)點(diǎn),一定不會是其他區(qū)域的節(jié)點(diǎn)。
  • 區(qū)域節(jié)點(diǎn)到中心節(jié)點(diǎn)一定是最快的,這個(gè)鏈路的速度和帶寬都是最優(yōu)的。

但實(shí)際真的如此么?引入了如此多的假設(shè)真的正確么?

實(shí)際上就算理論上我們可以證明以上假設(shè)有效,但是節(jié)點(diǎn)規(guī)劃和區(qū)域配置大都依賴于人的設(shè)計(jì)和規(guī)劃,我們知道人多是不靠譜的,而且就算當(dāng)時(shí)區(qū)域規(guī)劃正確,誰能保證這些靜態(tài)的網(wǎng)絡(luò)規(guī)劃不會因?yàn)殇佋O(shè)了一條光纖或者因?yàn)槟承?IDC 壓力過大而發(fā)生了改變呢?所以我們可以跳出樹狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的桎梏,探索新的適合直播加速的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。

為了擺脫有限的鏈路路由線路限制,激活整理網(wǎng)絡(luò)的能力,我們可以把上述的節(jié)點(diǎn)變成網(wǎng)狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):

vdn_ping.png

我們看到一旦我們把網(wǎng)絡(luò)結(jié)構(gòu)改成了網(wǎng)狀結(jié)構(gòu),則用戶的可選擇鏈路變?yōu)椋簾o向圖的指定兩點(diǎn)間的所有路徑,學(xué)過圖論的同學(xué)都知道,數(shù)量驚人

系統(tǒng)可以通過智能路由選擇任何一個(gè)最快的鏈路而不用依賴于系統(tǒng)部署時(shí)過時(shí)的人工規(guī)劃,無論是某些鏈路間增加了光纖或者某個(gè) IDC 壓力過大都可以實(shí)時(shí)的反映到整理網(wǎng)絡(luò)中,幫助用戶實(shí)時(shí)推倒出最優(yōu)鏈路。這時(shí)我們可以去掉前面的一些假設(shè),通過機(jī)器而不是人類來時(shí)實(shí)時(shí)規(guī)劃網(wǎng)絡(luò)的鏈路路由,這種實(shí)時(shí)大規(guī)模的計(jì)算任務(wù)天生就不是人類的強(qiáng)項(xiàng),我們應(yīng)該交給更適合的物種。

內(nèi)容分發(fā)網(wǎng)絡(luò)的擴(kuò)容

前面提到中國公司的出海已成大勢,CDN 海外節(jié)點(diǎn)的需求越來越大,遇到這種情況需要 CDN 廠商在新的區(qū)域部署新的骨干網(wǎng)和邊緣節(jié)點(diǎn),需要做詳細(xì)的網(wǎng)絡(luò)規(guī)劃。時(shí)代發(fā)生變化,原來 CDN 用戶都是企業(yè)級用戶,本身業(yè)務(wù)線的迭代周期較長,有較長時(shí)間的規(guī)劃,留給 CDN 廠商的時(shí)間也比較多。而互聯(lián)網(wǎng)公司講究的是速度,雙周迭代已成常態(tài),這里面涉及到成本和響應(yīng)速度的矛盾,如果提前部署節(jié)點(diǎn)可以更好的為這些互聯(lián)網(wǎng)公司服務(wù),但是有較高的成本壓力,反之則無法響應(yīng)這些快速發(fā)展的互聯(lián)網(wǎng)公司。

理想情況是,用戶提出需求,CDN 廠商內(nèi)部評估,當(dāng)天給出反饋,當(dāng)天部署,客戶當(dāng)天就可以測試新區(qū)域的新節(jié)點(diǎn)。怎么解決?

答案是基于網(wǎng)狀拓?fù)浣Y(jié)構(gòu)的對等網(wǎng)絡(luò),在網(wǎng)狀拓?fù)浣Y(jié)構(gòu)中每個(gè)節(jié)點(diǎn)都是 Peer ,邏輯上每個(gè)節(jié)點(diǎn)提供的服務(wù)對等,不需要按區(qū)域設(shè)計(jì)復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),節(jié)點(diǎn)上線后不需要復(fù)雜的開局過程,直接上線注冊節(jié)點(diǎn)信息,就可以對用戶提供服務(wù)了,結(jié)合虛擬化技術(shù)前后時(shí)間理論上可以控制在一天之內(nèi)。

vdn_new.png

回歸本質(zhì):LiveNet TM

我們知道最早的互聯(lián)網(wǎng)就是網(wǎng)狀拓?fù)浣Y(jié)構(gòu),后來才慢慢加入了骨干網(wǎng)來解決各種各樣的問題,我們是時(shí)候該回歸本質(zhì),擁抱下一代 Live 分發(fā)網(wǎng)絡(luò):LiveNet TM 。總結(jié)前面的討論,我們發(fā)現(xiàn) Live 時(shí)代我們需要的內(nèi)容分發(fā)網(wǎng)絡(luò)是:

  • 對 Cache 的要求沒有以前那么高
  • 對實(shí)時(shí)性的要求非常高
  • 對節(jié)點(diǎn)運(yùn)維的要求高,要更智能,盡量減少人工干預(yù)
  • 對擴(kuò)容這種運(yùn)維事件響應(yīng)度要求非常高

要做到如上幾點(diǎn),我們需要:

  • 去中心化,網(wǎng)狀拓?fù)?/li>
  • 全球全網(wǎng)調(diào)度
  • 節(jié)點(diǎn)無狀態(tài),節(jié)點(diǎn)對等
  • 智能運(yùn)維

以上這些就是 LiveNet TM 設(shè)計(jì)時(shí)候的斟酌,讓運(yùn)維更自動化,系統(tǒng)運(yùn)行高度自治,依賴機(jī)器計(jì)算而不是人工判斷,下面分別介紹一下。

去中心,網(wǎng)狀拓?fù)?/h3>

網(wǎng)狀拓?fù)浣Y(jié)構(gòu)是設(shè)計(jì)的根本和基礎(chǔ),只有看清了我們對 Cache 需求的降低,網(wǎng)狀拓?fù)浣Y(jié)構(gòu)才更有優(yōu)勢。

全球全網(wǎng)調(diào)度

基于全球一張網(wǎng),不在受限于區(qū)域網(wǎng)絡(luò)調(diào)度,將調(diào)度的范圍從區(qū)域網(wǎng)絡(luò)擴(kuò)展到全球,全網(wǎng)內(nèi)的節(jié)點(diǎn)都可以響應(yīng)用戶的請求,參與鏈路路由,不再先由人工假設(shè)選定一部分節(jié)點(diǎn)進(jìn)行路由,去掉人工干預(yù),讓整個(gè)系統(tǒng)更智能。

節(jié)點(diǎn)無狀態(tài),節(jié)點(diǎn)對等

LiveNet TM 節(jié)點(diǎn)無狀態(tài)和節(jié)點(diǎn)對等都方便了運(yùn)維,去掉了區(qū)域概念后的全球一張網(wǎng)讓整個(gè)拓?fù)浣Y(jié)構(gòu)變的異常復(fù)雜,如果各個(gè)節(jié)點(diǎn)間有先后依賴關(guān)系,勢必讓運(yùn)維成為噩夢,需要專有的服務(wù)編排系統(tǒng),同時(shí)也給擴(kuò)容帶來困難,需要運(yùn)維人員設(shè)計(jì)復(fù)雜的擴(kuò)容方案,需要預(yù)演多次才敢在復(fù)雜的網(wǎng)絡(luò)拓?fù)渲袛U(kuò)容。當(dāng)時(shí)如果節(jié)點(diǎn)本身對等且無狀態(tài),則運(yùn)維和擴(kuò)容都變的容易很多。

但整個(gè)系統(tǒng)在運(yùn)行過程中還是會一些狀態(tài)和數(shù)據(jù)需要保持,比如某些 Live 內(nèi)容需要落地回放的需求,這些通過久經(jīng)考驗(yàn)的七牛云存儲來存儲。

智能運(yùn)維

智能運(yùn)維建立在以上的「網(wǎng)狀拓?fù)浣Y(jié)構(gòu)的對等網(wǎng)絡(luò)」的基礎(chǔ)上會變的容易的多??梢苑奖愕南戮€有問題的節(jié)點(diǎn)而不影響整個(gè) LiveNet TM 網(wǎng)絡(luò),可以方便快速的上線新節(jié)點(diǎn),提升系統(tǒng)容量。通過節(jié)點(diǎn)的數(shù)據(jù)分析可以更好的了解整個(gè)網(wǎng)絡(luò)的整體狀態(tài)。

下面列舉部分 LiveNet TM 采用的智能運(yùn)維方案,讓內(nèi)容分發(fā)網(wǎng)絡(luò)再次升級,以符合 Live 時(shí)代的要求。

  • 監(jiān)控節(jié)點(diǎn)健康狀況,實(shí)時(shí)下線有問題的節(jié)點(diǎn)
  • Failover 機(jī)制,保證服務(wù)一直可用
  • 快速擴(kuò)容

LiveNet TM VS P2P

最后我們和 P2P 網(wǎng)絡(luò)做一個(gè)對比:

LiveNet TM P2P CDN
網(wǎng)狀結(jié)構(gòu) 網(wǎng)狀結(jié)構(gòu) 樹狀結(jié)構(gòu)
對等網(wǎng)絡(luò) 對等網(wǎng)絡(luò) 異構(gòu)網(wǎng)絡(luò)
自有節(jié)點(diǎn) 混合節(jié)點(diǎn),部分自有 自有節(jié)點(diǎn)
鏈路多,穩(wěn)定 鏈路特別多,不穩(wěn)定 鏈路少,穩(wěn)定
擴(kuò)容周期短 擴(kuò)容周期短 擴(kuò)容周期長
節(jié)點(diǎn)可管理性強(qiáng) 節(jié)點(diǎn)可管理性弱 節(jié)點(diǎn)可管理性強(qiáng)
節(jié)點(diǎn)質(zhì)量好 節(jié)點(diǎn)質(zhì)量參差不齊 節(jié)點(diǎn)質(zhì)量好

我們發(fā)現(xiàn) P2P 方案,節(jié)點(diǎn)的可控性和鏈路的穩(wěn)定性上還有很大提升空間,比較適合在實(shí)時(shí)性要求不高的場景使用、適合長尾需求,在 Live 的場景下面多是對實(shí)時(shí)性要求比較高的重度用戶,無法忍受頻繁的 FailOver 和節(jié)點(diǎn)質(zhì)量參差不齊帶來的網(wǎng)絡(luò)抖動,但是如果是文件分發(fā)就比較適合用這種混合方案,可以有效降低 CDN 廠商成本,利用共享經(jīng)濟(jì)提高資源利用率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容