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