成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

海量用戶實(shí)時(shí)互動(dòng)直播架構(gòu)探索

honmaple / 1576人閱讀

摘要:實(shí)時(shí)互動(dòng)直播延時(shí)必須低達(dá)幾百毫秒。實(shí)時(shí)互動(dòng)直播要保證高可用性,有巨大的難度,原因如下實(shí)時(shí)很難。單服務(wù)器實(shí)時(shí)互動(dòng)直播架構(gòu)實(shí)時(shí)互動(dòng)直播,不能使用方案,因?yàn)榉桨感再|(zhì)決定了延時(shí)達(dá)不到實(shí)時(shí)的要求。

現(xiàn)在比較流行的直播,經(jīng)常會(huì)出現(xiàn)這樣的情況: 用戶打了一個(gè)彈幕上去,主播念出來的時(shí)候,彈幕已經(jīng)飛出去了。二者時(shí)間是不匹配的。

這是我們的一個(gè)客戶,兩個(gè)主播連線互動(dòng),實(shí)時(shí)交互。試想,如果直播時(shí)延時(shí)高達(dá)幾秒,像這樣的雙主播組合是沒有辦法進(jìn)行交談的。A說完之后,對(duì)方要等幾秒才能聽到,又過了幾秒,A才能聽到對(duì)方的回答。

這兩個(gè)例子其實(shí)要說明實(shí)時(shí)互動(dòng)直播和普通直播相比有本質(zhì)的區(qū)別:延時(shí)。實(shí)時(shí)互動(dòng)直播延時(shí)必須低達(dá)幾百毫秒。

為什么是幾百毫秒?為什么不是幾秒也不是幾毫秒?這是由人們?nèi)粘=涣髁?xí)慣決定的。人的說話聲音通過聲波傳播,如果兩人相隔34米,那么延時(shí)就是100毫秒?;谶@個(gè)范圍,略長的延時(shí),觀眾還能?;诨ヂ?lián)網(wǎng)的音視頻通信,音頻通話延時(shí)標(biāo)準(zhǔn)在400毫秒以內(nèi),視頻通話延時(shí)在800毫秒以內(nèi),這可以讓通話雙方無延時(shí)感知的。延時(shí)如果達(dá)到秒的數(shù)量級(jí),那么通話雙方就會(huì)有明顯的等待。

互聯(lián)網(wǎng)是基于電磁波或者通過光纖傳播的。光繞地球一圈,耗時(shí)300毫秒,這是無法逾越的物理定律延時(shí)。有人號(hào)稱可以做到0延時(shí),他們估計(jì)用上了量子通信。在實(shí)際互聯(lián)網(wǎng)應(yīng)用中,網(wǎng)絡(luò)條件并不理想,互聯(lián)網(wǎng)信號(hào)繞地球一圈的延時(shí)必然大于300毫秒。這就給實(shí)時(shí)互動(dòng)直播,帶來了巨大的挑戰(zhàn)。

實(shí)時(shí)互動(dòng)直播的挑戰(zhàn)

第一,互聯(lián)網(wǎng)的骨干網(wǎng)上路由器的部署,不是直線點(diǎn)到點(diǎn),而是中間要經(jīng)過很多路由器的跳數(shù),實(shí)際上是在走“彎路”。所以,互聯(lián)網(wǎng)傳輸沒有辦法繞地球一圈正好300毫秒,最好的情況也需要要近400毫秒。

第二,公共互聯(lián)網(wǎng)上,路由器其實(shí)經(jīng)常出現(xiàn)故障。比如,在晚高峰的時(shí)候,網(wǎng)絡(luò)會(huì)比較慢。這是因?yàn)椴糠致酚善骺赡苓^載。因?yàn)槁酚善饔凶畲蟮奶幚砟芰ι舷?,一旦超過上限,就不能處理,會(huì)造成丟包、擁塞。

第三,無線網(wǎng)絡(luò)相對(duì)有線網(wǎng)絡(luò),可靠性較低。無線網(wǎng)絡(luò)普及度越來越高,,越來越多的手機(jī)、筆記本連接無線網(wǎng)。但是無線網(wǎng)絡(luò)相對(duì)有線網(wǎng)絡(luò)沒有那么可靠,同時(shí)也會(huì)引入信號(hào)污染。信號(hào)覆蓋不到的地方,效果較差。

第四,高并發(fā)挑戰(zhàn)。首先需要普及一個(gè)概念:并發(fā)和在線是有區(qū)別的。當(dāng)今的移動(dòng)互聯(lián)網(wǎng),大家都在講千萬級(jí)。當(dāng)我們談及海量用戶架構(gòu)這個(gè)話題時(shí),似乎如果不說到上億這個(gè)量級(jí),是落后了。但是實(shí)際上,前面這些說法都混淆概念了,它們都在說“在線”,而不是“并發(fā)”。以下圖為例:

左邊是QQ在線好友列表,圖中可以看到很多好友展現(xiàn),其實(shí)沒有交互,使用者不會(huì)有壓力。右邊是一個(gè)框同時(shí)和很多人聊天,使用者會(huì)感受到巨大壓力。同樣的,對(duì)于直播服務(wù)而已,如果用戶只是在線,很少會(huì)跟服務(wù)器有交流,最多偶爾發(fā)一個(gè)心跳包。

用戶在線時(shí),如果參與了“看”“說”,這就是并發(fā)。直播的并發(fā)峰值具有突發(fā)性,往往跟主播的活動(dòng)密切相關(guān)。比如,主播會(huì)跟粉絲約定直播時(shí)間,到了約好的時(shí)間,粉絲就會(huì)在短時(shí)間大量涌入一個(gè)直播頻道。觀眾慢慢進(jìn)入頻道,服務(wù)器沒有壓力,但如果瞬間涌入,后臺(tái)的壓力非常大。

本文,將重點(diǎn)介紹互動(dòng)直播的可用性問題。電信業(yè)務(wù)的可用性標(biāo)準(zhǔn)是四個(gè)九,我們期望做到五個(gè)九。雙十一時(shí),支付寶的處理能力非常強(qiáng),百度百科上提供的數(shù)據(jù)顯示,支付寶當(dāng)天處理了96%訂單。但是,我們對(duì)自己的互動(dòng)直播有更高的要求,期望做到99.999%。

實(shí)時(shí)互動(dòng)直播要保證高可用性,有巨大的難度,原因如下:

實(shí)時(shí)很難。互聯(lián)網(wǎng)基礎(chǔ)設(shè)施不是為實(shí)時(shí)通信設(shè)計(jì)的。

覆蓋很難。機(jī)房找點(diǎn),互聯(lián)互通。對(duì)通信云來說,覆蓋不好會(huì)影響到可用性。

高并發(fā)很難。不能看著看著就不動(dòng)了,沒聲了。

突發(fā)性很難。系統(tǒng)容量要高,還要防止雪崩。

這些挑戰(zhàn)我們?cè)谧稣麄€(gè)服務(wù)的時(shí)候,都需要全面考慮。

直播架構(gòu)的演進(jìn) 1、CDN直播架構(gòu)

這是當(dāng)前流行的直播架構(gòu),左下角是一個(gè)主播,主播通過手機(jī)或電腦等設(shè)備,把自己的視頻流上傳到服務(wù)器,接入目前流行的CDN服務(wù),通過CDN服務(wù)進(jìn)行網(wǎng)絡(luò)分發(fā),分發(fā)到各地的用戶。所有用戶都可以看到主播的表演。

2、單服務(wù)器實(shí)時(shí)互動(dòng)直播架構(gòu)

實(shí)時(shí)互動(dòng)直播,不能使用CDN方案,因?yàn)镃DN方案性質(zhì)決定了延時(shí)達(dá)不到實(shí)時(shí)的要求。下圖是我們認(rèn)為可以實(shí)現(xiàn)實(shí)時(shí)互動(dòng)的架構(gòu)。主播把自己的視頻流上傳到服務(wù)器,通過這臺(tái)服務(wù)器分發(fā)給其他用戶,再采用合適的傳輸協(xié)議,延時(shí)可以做到很小。從主播到服務(wù)器再到觀眾的延時(shí),加上編解碼和抖動(dòng)的延時(shí),可以做控制在幾百毫秒以內(nèi)。

這個(gè)架構(gòu)很簡單,但有一個(gè)缺點(diǎn),沒有考慮覆蓋不同地用戶的問題。并且一臺(tái)服務(wù)器支撐不了大規(guī)模用戶。這臺(tái)服務(wù)器如果宕機(jī),或者服務(wù)器機(jī)房出故障,整個(gè)傳輸都會(huì)受到影響。這必然達(dá)不到高可用架構(gòu)的標(biāo)準(zhǔn)。

3、分布式實(shí)時(shí)互動(dòng)直播架構(gòu)

主播的視頻流上傳到一個(gè)接入服務(wù)器,這個(gè)服務(wù)器會(huì)把這個(gè)視頻流分發(fā)到我們部署在世界各地的服務(wù)器。然后這些服務(wù)器接入本地的用戶,把視頻傳下去。

在這個(gè)架構(gòu)里面,首先可以解決的是覆蓋問題,部署在世界各地的服務(wù)器,可以讓用戶可以快速就近接入。整個(gè)視頻流通過我們?cè)诨ヂ?lián)網(wǎng)上做的分布式傳輸算法,把它實(shí)時(shí)的傳輸?shù)绞澜绺鞯氐臋C(jī)房。其次,可以避免機(jī)房甚至骨干網(wǎng)故障,對(duì)傳輸造成的影響。

如何實(shí)現(xiàn)高可用性

可用性可以分為兩個(gè)部分:接入可用性和使用可用性。你在使用服務(wù)的時(shí)候,能夠接得進(jìn)去,能夠聽得到,這是接入可用性。舉個(gè)例子,打電話的時(shí)候,有時(shí)會(huì)出現(xiàn)你所呼叫的用戶無法接通,因?yàn)橛脩舻氖謾C(jī)沒有接入電信服務(wù),這就是接入可用性問題。在通話的時(shí)候,聽不到對(duì)方說話了,使用中掉線了,這就是使用可用性。

為了實(shí)時(shí)監(jiān)測(cè)可用性,我們做了兩方面的監(jiān)測(cè):

1、主動(dòng)監(jiān)測(cè)

服務(wù)可用性不能依靠用戶數(shù)據(jù)反饋或者用戶主動(dòng)上報(bào),這樣你永遠(yuǎn)是最后一個(gè)知道的。況且初期用戶量小怎么辦?因此,我們需要自己給出我們的服務(wù)有多可靠。為此,我們研發(fā)主動(dòng)監(jiān)測(cè)系統(tǒng)來監(jiān)測(cè)整個(gè)服務(wù)。端到端監(jiān)測(cè),接入有沒有問題,在使用的過程中會(huì)不會(huì)出問題。

2、被動(dòng)監(jiān)測(cè)

用戶在使用我們的服務(wù)的時(shí)候,我們會(huì)收集用戶接入服務(wù)的整個(gè)過程,多長時(shí)間可以接入,接入時(shí)經(jīng)過了幾次請(qǐng)求,使用中有沒有掉線,中間有沒有聲音終端或卡頓。我們會(huì)收集這些數(shù)據(jù),據(jù)此了解服務(wù)的可用性。

有了監(jiān)測(cè)數(shù)據(jù),那么就可以據(jù)此來不斷改進(jìn)我們的服務(wù),解決前面所說的挑戰(zhàn)。

1、覆蓋問題

在中國做互聯(lián)網(wǎng)的人應(yīng)該都有一個(gè)感受,聯(lián)通跨電信,用戶之間是難以交互的。早期的QQ傳文件沒有做中轉(zhuǎn),如果聯(lián)通和電信的用戶要互相傳文件,速度非常慢,甚至?xí)袛?。玩網(wǎng)游的用戶,也會(huì)遇到有電信專區(qū)、網(wǎng)通專區(qū)。下圖是一個(gè)簡單的測(cè)試,當(dāng)跨運(yùn)營商的時(shí)候,發(fā)一個(gè)包,可以看到里面有很多丟包。這個(gè)數(shù)字是RTT,這個(gè)測(cè)試結(jié)果可以看出,最小是62毫秒,最大是840毫秒。

不但中國有網(wǎng)絡(luò)互通的問題,國外也有。很多人以為發(fā)達(dá)國家,比如美國、日本,互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施較好,所以不會(huì)有互聯(lián)互通的問題。但是,在我們做實(shí)際測(cè)試時(shí),美國的互聯(lián)網(wǎng)也存在互聯(lián)互通的問題,只是狀況比中國好一些。

上圖,展示了一個(gè)一個(gè)阿爾及利亞用戶的網(wǎng)絡(luò)狀況。他接入的是國家電信的服務(wù)商,從骨干網(wǎng)接入阿爾及利亞電信有很多線路,最下面的線路意大利電信是最直接的。如果不走意大利電信,那么中間就必須經(jīng)過很多運(yùn)營商跳轉(zhuǎn)。在這種情況下,要保證用戶有做最快的傳輸,就要保證傳輸走意大利電信。這必須依靠覆蓋來解決。

如何解決覆蓋問題?

首先,部署大量邊緣服務(wù)器。邊緣服務(wù)器的地理位置越接近用戶越好,二者的線路越接近約好,同一個(gè)SP最好。比如中國國內(nèi),我們會(huì)有大量電信、聯(lián)通、移動(dòng)服務(wù)器。當(dāng)我們發(fā)現(xiàn)一個(gè)接入的用戶是電信時(shí),我們會(huì)找電信線路,如果是聯(lián)通的會(huì)找聯(lián)通線路。再看回上一個(gè)圖,如果遇到阿爾及利亞的用戶要怎么辦?在現(xiàn)在的服務(wù)里面我們就要找一個(gè)意大利電信接入,而不是隨便找歐洲的機(jī)房。必須部署很多邊緣服務(wù)器才能做到這一點(diǎn)。

其次,要有分配服務(wù)。有邊緣服務(wù)器之后,用戶還是無法接入邊緣服務(wù)器,因?yàn)樗恢澜幽膫€(gè)。因此,必須有配套算法,根據(jù)用戶的SP,找到和他最匹配的邊緣服務(wù)器,來進(jìn)行接入分配。

2、跨地域問題

我們?cè)谌袊泻脦资畟€(gè)機(jī)房,其中有很多電信的機(jī)房,不同的電信用戶來使用我們的服務(wù),應(yīng)該給他哪個(gè)電信機(jī)房呢?如果把北京電信用戶接到廣州的電信機(jī)房,雖然大多數(shù)情況下丟包不會(huì)很高,但延時(shí)會(huì)比較大。為此,我們?cè)O(shè)計(jì)了就近接入算法,使用我們服務(wù)的每個(gè)用戶,都會(huì)接入到最靠近他,且線路最匹配的服務(wù)器。

當(dāng)我們就近按SP接入時(shí),遇到了一個(gè)新問題:假如一個(gè)香港用戶,接入的是香港機(jī)房,想看北京聯(lián)通用戶的表演,那么這個(gè)香港用戶怎么看到北京用戶的表演呢?我們就需要有一個(gè)分布式傳輸?shù)募軜?gòu)和算法,來把北京的流量傳到香港。

3、DNS解析問題

今天無線互聯(lián)網(wǎng)非常普及,使用無線網(wǎng)時(shí),有一個(gè)問題比有線網(wǎng)更嚴(yán)重:DNS解析。用戶接入時(shí),第一步是通過域名解析,解析到最近的服務(wù)器。但是,做DNS解析時(shí),無線網(wǎng)絡(luò)的信號(hào)會(huì)存在污染,導(dǎo)致DNS解析失敗。為此,我們優(yōu)先使用解析,解析不到再用靜態(tài)IP配置。

4、骨干網(wǎng)故障問題

我們發(fā)現(xiàn)在骨干網(wǎng)上,很多默認(rèn)的骨干網(wǎng)路由經(jīng)常出問題,同時(shí)有一些骨干網(wǎng)部分是不會(huì)擁堵的?;谶@樣的發(fā)現(xiàn),我們做了自己的路由網(wǎng)絡(luò)。

在默認(rèn)路由之外,我們會(huì)額外部署路由機(jī)房。比如,從上海到洛杉磯,假設(shè)默認(rèn)線路到晚上高峰期會(huì)比較擁堵,同時(shí)我們發(fā)現(xiàn)從上海經(jīng)過廣州再經(jīng)過香港再到洛杉磯,這條線路不會(huì)擁堵。那么,我們就會(huì)部署這樣一條路由線路,然后做自動(dòng)的適配。

如果骨干網(wǎng)上出故障了,我們通過路由的方式構(gòu)建Overlay應(yīng)對(duì)。首先,我們的應(yīng)用會(huì)先連接到分配服務(wù),分配服務(wù)會(huì)給出一批可接入的機(jī)房,當(dāng)接入的機(jī)房壞了,就立即切換到下一個(gè)可用機(jī)房,如果發(fā)現(xiàn)還是壞了,則再次接入到分配服務(wù),繼續(xù)尋找當(dāng)前可用服務(wù)器。

5、蜂擁

蜂擁是實(shí)時(shí)互動(dòng)直播里面特別突出的現(xiàn)象,短時(shí)間內(nèi)大量用戶進(jìn)入頻道或者使用服務(wù)。蜂擁對(duì)整個(gè)后臺(tái)的沖擊力非常強(qiáng)。大多數(shù)的互聯(lián)網(wǎng)的后臺(tái)服務(wù)器每秒接入大概千的量級(jí),但是對(duì)于蜂擁而來的用戶,處理量遠(yuǎn)遠(yuǎn)不夠。這時(shí)候就會(huì)遇到一個(gè)問題,后臺(tái)處理響應(yīng)速度越來越慢,很多用戶的請(qǐng)求會(huì)超時(shí)。超時(shí)之后就會(huì)進(jìn)入更多的請(qǐng)求,請(qǐng)求就會(huì)像滾雪球一樣越來越大,導(dǎo)致整個(gè)后臺(tái)系統(tǒng)不能響應(yīng),整個(gè)系統(tǒng)就會(huì)產(chǎn)生雪崩,這叫雪崩效應(yīng)。

如何防止雪崩效應(yīng)

1)要把性能上限提高。通常來說我們的性能上限會(huì)達(dá)到峰值處理能力10倍以上。性能上限提高要做分配服務(wù)性能擴(kuò)展,我們的做法一般是水平擴(kuò)展,因?yàn)榇怪睌U(kuò)展比較困難。

2)應(yīng)用里面做自動(dòng)的重復(fù)請(qǐng)求,它會(huì)不斷累計(jì)請(qǐng)求量,我們要做退避的策略。

3)保證整個(gè)接入服務(wù)本身的可用性問題,處理方法很簡單,多點(diǎn)備份,然后做并發(fā)的請(qǐng)求。我們有很多分配的服務(wù)器,們的應(yīng)用接入的時(shí)候會(huì)同時(shí)從幾個(gè)點(diǎn)請(qǐng)求分配,分配到一批邊緣服務(wù)器之后,會(huì)同時(shí)連接幾個(gè)邊緣服務(wù)器,哪個(gè)先響應(yīng)就處理哪個(gè)。

本文整理自聲網(wǎng)Agora.io 1號(hào)架構(gòu)師李偉,在ArchSummit深圳2016 全球架構(gòu)師峰會(huì) 的演講。

【李偉】

2006年-2008年,在PP live工作的時(shí)候研發(fā)了PP live(已更名PPTV),當(dāng)時(shí)最高有接近150萬人在線。
2008年到2010年,在新浪負(fù)責(zé)新浪視頻的研發(fā),2008年的歐冠直播,40萬人在線。
2010年到2013年在YY工作,主要負(fù)責(zé)YY的架構(gòu),最高在線是超過一千萬,最大的單人頻道達(dá)150萬左右。
2013年,加入聲網(wǎng),負(fù)責(zé)聲網(wǎng)音視頻的系統(tǒng)架構(gòu)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11741.html

相關(guān)文章

  • 新一代智能視頻云發(fā)展現(xiàn)狀分析:五大要素成關(guān)鍵

    摘要:遠(yuǎn)程醫(yī)療這一概念被提出后,已經(jīng)被廣泛應(yīng)用。但是,如何提高視頻傳輸性能,如何確保家庭基層醫(yī)療機(jī)構(gòu)和戶外應(yīng)急的遠(yuǎn)程醫(yī)療快速接入,是當(dāng)前的遠(yuǎn)程醫(yī)療業(yè)務(wù)系統(tǒng)面臨的主要挑戰(zhàn)。 編者按:近日,Gartner最新發(fā)布了一份《Five Key Essentials for the New Generation of Intelligent Video Cloud》白皮書報(bào)告,報(bào)告中針對(duì)各行業(yè)在視頻應(yīng)用...

    levy9527 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<