直播在互聯(lián)網(wǎng)市場中一直都處于穩(wěn)定發(fā)展的局面,雖然直播行業(yè)經(jīng)歷了不同時(shí)期的洗牌和考驗(yàn),但它還是依靠自身強(qiáng)大的變現(xiàn)能力“存活”到現(xiàn)在。而且隨著即將統(tǒng)一運(yùn)營商服務(wù)和流量資費(fèi)的不斷下調(diào),更是給視頻直播軟件開發(fā)業(yè)務(wù)提供了發(fā)展“溫床”,比如接下來我要給大家分享的內(nèi)容,開發(fā)過程中需要注意的網(wǎng)絡(luò)架構(gòu)相關(guān)。本文主要以CDN為主來介紹相關(guān)的架構(gòu)問題。 ![]() 對(duì)于傳統(tǒng)的點(diǎn)播業(yè)務(wù)來說,CDN只有下行分發(fā)不同。但是對(duì)于泛娛樂和游戲類的直播場景來說,直播架構(gòu)是分為上行匯聚和下行分發(fā)兩種的。 1.主播推流模式 (1)直播端推流到上行邊緣節(jié)點(diǎn)。 (2)上行邊緣節(jié)點(diǎn)將流推到匯聚核心。 (3)匯聚核心收到流后,和 CDN 一樣,不需要主動(dòng)將流分發(fā)到邊緣,一些轉(zhuǎn)碼、水印或錄制類的業(yè)務(wù)通常是在匯聚核心完成。 2.回源拉流模式 如果用戶在訪問到匯聚核心后,會(huì)向一個(gè)回源節(jié)點(diǎn)拉流,回源節(jié)點(diǎn)向客戶源站拉流。 3.下行觀看流程 (1)觀眾到邊緣節(jié)點(diǎn)拉取直播流。 (2)在邊緣節(jié)點(diǎn)上如果存在音視頻流,可以直接發(fā)送給觀眾,如果沒有就會(huì)向上一級(jí)回源。 (3)上一級(jí)節(jié)點(diǎn)可能是中轉(zhuǎn)節(jié)點(diǎn),也可能是匯聚核心。通常會(huì)在兩種情況下選擇是否經(jīng)過中轉(zhuǎn)節(jié)點(diǎn),即下行邊緣到匯聚核心鏈路質(zhì)量和匯聚核心處理能力。 ![]() 對(duì)于CDN來說,是不可能單獨(dú)使用一個(gè)匯聚核心的。如果使用單獨(dú)的匯聚核心,一旦遇到網(wǎng)絡(luò)故障或者是高并發(fā)等情況發(fā)生,就會(huì)導(dǎo)致整個(gè)直播業(yè)務(wù)出現(xiàn)癱瘓的情況。況且,單獨(dú)的匯聚核心無論怎樣都是無法覆蓋全國的,所以就需要大量的中轉(zhuǎn)節(jié)點(diǎn)。通常,直播會(huì)使用多匯聚核心的架構(gòu),即以下兩種方式。 1. 鏈路選優(yōu) 即上行到一個(gè)鏈路最優(yōu)的核心,下行也到一個(gè)鏈路最優(yōu)的核心。兩個(gè)核心之間使用專線“打通”,從而保證傳輸質(zhì)量。國內(nèi)通常使用3個(gè)核心就可以覆蓋國內(nèi)的主要運(yùn)營商和區(qū)域,5個(gè)核心基本就能全覆蓋所有邊緣節(jié)點(diǎn)。鏈路選優(yōu)問題是需要進(jìn)行長期的實(shí)時(shí)數(shù)據(jù)監(jiān)控的。比如,直播流在哪個(gè)匯聚核心,是匯聚核心之間互相能拉到流的基礎(chǔ)。如果需要考慮一些異常節(jié)點(diǎn)無法使用的情況,那么就需要進(jìn)行對(duì)應(yīng)的數(shù)據(jù)清理。需要注意的是:多一級(jí)拉流會(huì)增加首屏?xí)r間。 2.保證每個(gè)匯聚核心都有流 即下行邊緣無論如何都能拉到流。這一架構(gòu)的優(yōu)點(diǎn)就是不需要使用數(shù)據(jù)庫進(jìn)行記錄是推到了哪個(gè)核心,但是也容易存在以下幾個(gè)問題。 (1)上行邊緣到兩個(gè)核心的質(zhì)量無法保證,如果上行邊緣到某個(gè)匯聚核心的鏈路質(zhì)量較差,那么從這個(gè)匯聚核心拉流的用戶觀看質(zhì)量肯定會(huì)很差。 (2)上行邊緣是需要推兩份流到匯聚核心的,這樣一來就會(huì)造成一定的帶寬浪費(fèi)。對(duì)于直播來說,帶寬的耗費(fèi)遠(yuǎn)遠(yuǎn)要比主播的收益要高得多。 (3)為了解決上行邊緣到所有核心的鏈路問題,就需要選取很多的中轉(zhuǎn)節(jié)點(diǎn),或者是使用BGP的機(jī)房作為上行邊緣,這樣就會(huì)耗費(fèi)更大的成本。 ![]() 在視頻直播軟件開發(fā)過程中,CDN的架構(gòu)也是相當(dāng)重要的。至于選擇哪種架構(gòu),還是要根據(jù)直播平臺(tái)自身的定位和資金等方面來決定的。 |
|