關(guān)于UCloud直播云,所有的技術(shù)細(xì)節(jié)都在這里了(一)
網(wǎng)絡(luò)視頻直播存在已有很長(zhǎng)一段時(shí)間,隨著移動(dòng)上下行帶寬提升及資費(fèi)的下調(diào),視頻直播被賦予了更多娛樂和社交的屬性,人們享受隨時(shí)隨地進(jìn)行直播和觀看,主播不滿足于單向的直播,觀眾則更渴望互動(dòng),直播的打開時(shí)間和延遲變成了影響產(chǎn)品功能發(fā)展重要指標(biāo)。那么,問題來了: 如何實(shí)現(xiàn)低延遲、秒開的直播?
影響延時(shí)的因素
先來看看視頻直播的5個(gè)關(guān)鍵的流程:錄制->編碼->網(wǎng)絡(luò)傳輸->解碼->播放,每個(gè)環(huán)節(jié)對(duì)于直播的延遲都會(huì)產(chǎn)生不同程度的影響。這里重點(diǎn)分析移動(dòng)設(shè)備的情況。受限于技術(shù)的成熟度、硬件環(huán)境等,針對(duì)移動(dòng)場(chǎng)景簡(jiǎn)單總結(jié)出直播延遲優(yōu)化的4個(gè)點(diǎn):網(wǎng)絡(luò)、協(xié)議、編解碼、移動(dòng)終端,并一一解密UCloud直播云實(shí)現(xiàn)低延遲、秒開的技術(shù)細(xì)節(jié)。
接入網(wǎng)絡(luò)優(yōu)化技術(shù)
1)全局負(fù)載均衡-就近接入
實(shí)現(xiàn)就近接入的技術(shù)比較廣為人知,就是CDN即Content Delivery Network (內(nèi)容分發(fā)網(wǎng)絡(luò))。CDN包含兩大核心技術(shù):負(fù)載均衡和分發(fā)網(wǎng)絡(luò),隨著10多年的演進(jìn),對(duì)負(fù)載均衡和分發(fā)的實(shí)現(xiàn)方式已多種多樣,分發(fā)網(wǎng)絡(luò)的構(gòu)建策略通常是經(jīng)過日積月累的總結(jié)出一套最合適的分發(fā)路由,并且也不是一成不變,需時(shí)刻關(guān)注調(diào)整,動(dòng)態(tài)運(yùn)營(yíng)。這里重點(diǎn)介紹下CDN的負(fù)載均衡技術(shù)。
負(fù)載均衡是如何實(shí)現(xiàn)讓用戶就進(jìn)訪問的呢?比較普遍的實(shí)現(xiàn)方式:通過用戶使用的DNS服務(wù)器來判斷客戶端所在的網(wǎng)絡(luò)位置,從而返回對(duì)應(yīng)的服務(wù)IP。如下圖示例:
廣東電信用戶IP:1.1.1.1 需要看一個(gè)直播http://www.ucloud.cn/helloworld.flv ,實(shí)現(xiàn)就近訪問的過程是:
1>用戶向配置的DNS服務(wù)器1.1.1.0(通常是運(yùn)營(yíng)商指定,也稱local DNS,后面簡(jiǎn)稱Ldns)發(fā)起www.ucloud.cn 的查詢;
2> Ldns 上沒有該域名的記錄,則往***即Root NS上發(fā)起查詢;
3>Root NS返回告知Ldns該域名的權(quán)威解析記錄在UCloud NS上;
4>Ldns 向UCloud NS發(fā)起查詢;
5>UCloud NS 向UCloud GSLB服務(wù)發(fā)起查詢,GSLB發(fā)現(xiàn) Ldns1.1.1.0是屬于廣東電信;
6>返回廣東電信的就近節(jié)節(jié)點(diǎn)IP1.1.1.2;
7>返回1.1.1.2給Ldns;
8>返回給用戶1.1.1.2,用戶到1.1.1.2上去獲取直播內(nèi)容。
鏈路很長(zhǎng),但是每個(gè)Ldns上都會(huì)對(duì)查詢過的域名做合理的緩存,下一個(gè)廣東電信的用戶再來查詢的時(shí)候就可以直接返回1.1.1.2。架構(gòu)并不復(fù)雜,關(guān)鍵點(diǎn)是如何知道Ldns是位于廣東電信,這就涉及一個(gè)IP地址庫(kù)。有開源地址庫(kù),也有商業(yè)地址庫(kù),可以按需求采購(gòu)即可,一般一年1萬左右。
這里不難看出來,調(diào)度的準(zhǔn)確度是完全依賴用戶配置的Ldns,而這些Ldns大多數(shù)是省級(jí)別的,即GLSB只知道用戶是廣東電信,但是常常分不出來是廣東廣州電信,還是廣東深圳電信。 HTTPDNS就是實(shí)現(xiàn)更精準(zhǔn)的調(diào)度一種方式:
1>用戶1.1.1.1通過HTTP協(xié)議直接向UCloud NS請(qǐng)求直播域名www.ucloud.cn;
2>UCloud NS發(fā)現(xiàn)用戶IP1.1.1.1屬于廣東深圳電信;
3>返回廣東深圳電信節(jié)點(diǎn)1.1.1.11給UCloud NS;
4>返回給用戶。
HTTPDNS的好處顯而易見:一可精準(zhǔn)獲得用戶端的IP,有效避免用戶配錯(cuò)Ldns(有時(shí)是網(wǎng)絡(luò)中心配錯(cuò)DNS)的情況,可更精準(zhǔn)定位用戶所在網(wǎng)絡(luò)位置。二可避免DNS解析劫持。
2)BGP中轉(zhuǎn)架構(gòu)-最短傳輸路徑
BGP即Border Gateway Protocol (邊界網(wǎng)關(guān)協(xié)議),業(yè)內(nèi)簡(jiǎn)稱BGP。為什么BGP中轉(zhuǎn)架構(gòu)對(duì)直播加速和分發(fā)如此重要?不得不提國(guó)內(nèi)復(fù)雜的網(wǎng)絡(luò)狀況,較廣為人知的是“南電信北聯(lián)通”的寬帶用戶分布。那一個(gè)簡(jiǎn)單的問題,電信主播發(fā)起了直播,聯(lián)通的用戶想看怎么辦呢? 從結(jié)構(gòu)上講,肯定是有有限個(gè)電信聯(lián)通兩個(gè)運(yùn)營(yíng)商的交匯點(diǎn),相當(dāng)于信息橋梁。 這就會(huì)帶來兩個(gè)問題:1、路程要繞遠(yuǎn),網(wǎng)絡(luò)延遲高且不穩(wěn)定;2、高峰期擁堵,導(dǎo)致直播流卡頓。
BGP的技術(shù)原理往簡(jiǎn)單的說就是允許同一IP在不同網(wǎng)絡(luò)中廣播不同的路由信息,效果就是同一個(gè)IP,當(dāng)電信用戶來訪問時(shí)走電信網(wǎng)內(nèi)的路由,聯(lián)通用戶來訪問時(shí)走的聯(lián)通的路由。所以BGP技術(shù)對(duì)跨運(yùn)營(yíng)商的訪問帶來了巨大的便利,特別是直播場(chǎng)景。不同于傳統(tǒng)的文件緩存場(chǎng)景,一個(gè)圖片哪怕***次是跨了遙遠(yuǎn)的距離從源站獲取后,本地網(wǎng)絡(luò)進(jìn)行緩存,后面的訪問都走本地網(wǎng)絡(luò)。直播加速是流式的,并且當(dāng)要做到低延遲的時(shí)候,中間的緩存要盡可能少。 BGP相當(dāng)于給跨網(wǎng)的用戶就近搭建了一坐橋梁,不必繞遠(yuǎn)路,延時(shí)和穩(wěn)定性都大大提高了。
技術(shù)原理部分介紹完了,那么多直播延遲影響有多少改善呢?首先這里的就近,不一定是物理距離近,不考慮瞬時(shí)負(fù)載情況下,更多是指測(cè)速延時(shí)***的機(jī)房。在國(guó)內(nèi)一般而言相同的接入運(yùn)營(yíng)商(電信、聯(lián)通、移動(dòng))并且地理位置最近的情況網(wǎng)絡(luò)延遲***,小于15ms??缡⊥\(yùn)營(yíng)商的網(wǎng)絡(luò)延遲25~50ms,跨運(yùn)營(yíng)商情況更復(fù)雜一些,在50~100ms??偨Y(jié)起來,直播當(dāng)中每個(gè)包的延時(shí)可以縮短100ms,由于網(wǎng)絡(luò)的疊加效果,反射到上層是秒級(jí)的延遲縮減。
以上就是直播云實(shí)現(xiàn)接入網(wǎng)絡(luò)優(yōu)化的技術(shù)細(xì)節(jié),關(guān)于直播協(xié)議選擇、內(nèi)容緩存與傳輸策略優(yōu)化、終端優(yōu)化,請(qǐng)參閱接下來發(fā)布的其他部分。