我們將探討Agora.io實(shí)時(shí)云如何通過端到端的虛擬網(wǎng)絡(luò)體系結(jié)構(gòu)來處理全球“移動(dòng)端到端”Web實(shí)時(shí)通信(WebRTC)的挑戰(zhàn)。本文的一個(gè)版本最初發(fā)布在《WebRTCWorld》(WebRTC世界)(參見:http://bit.ly/Mobile2Mobile)中;此前,Agora.io剛剛宣布融資0.2億美元并推出首款產(chǎn)品(參考資料1)。
如今,應(yīng)用程序和用戶的主要特點(diǎn)是全球化和移動(dòng)化,而且通常具有“移動(dòng)端到端”的性質(zhì)。實(shí)際上,“移動(dòng)爆發(fā)點(diǎn)”發(fā)生在2014年,就在這一年,移動(dòng)智能手機(jī)用戶達(dá)到近20億人,超過了全球的臺(tái)式機(jī)用戶數(shù)量(參考資料2)。這些統(tǒng)計(jì)數(shù)據(jù)表明,80%的互聯(lián)網(wǎng)用戶擁有智能手機(jī),并且這些移動(dòng)用戶的在線時(shí)間更長(zhǎng),內(nèi)容消費(fèi)量也大幅增多。諸如Facebook和Twitter等社交媒體平臺(tái)指出,如今移動(dòng)交互次數(shù)顯著多于臺(tái)式機(jī)交互次數(shù),而且大多數(shù)新的社交媒體應(yīng)用程序(例如Instagram、WhatsApp、WeChat、Snapchat等)主要都是移動(dòng)應(yīng)用程序。
最近的研究表明,我們使用手機(jī)的時(shí)間超過了睡眠時(shí)間(參考資料3),更不用說看電視或進(jìn)行其他活動(dòng)的時(shí)間!眾所周知,我們的在線社交、游戲和信息社區(qū)都是全球化的——我們每天都在與散布全球的人們分享信息和溝通交流。
在應(yīng)用程序中加入實(shí)時(shí)通信功能,讓參與者可根據(jù)需要在任何地方與對(duì)方交談并能看到對(duì)方,這種全球化的和移動(dòng)化的實(shí)時(shí)通信無疑是一個(gè)巨大的挑戰(zhàn)。第一家真正切實(shí)簡(jiǎn)化互聯(lián)網(wǎng)全球通信的公司是Skype,正因?yàn)槿绱,我們中的許多人仍在使用Skype與遠(yuǎn)在其他國(guó)家/地區(qū)的親屬進(jìn)行交談。然而,Skype已成為一個(gè)僵化的孤立平臺(tái),由于其API較少,因此無法以靈活、隱形的方式輕易嵌入在其他應(yīng)用程序中。此外,Skype現(xiàn)已納入Microsoft麾下,已經(jīng)成為Microsoft為擴(kuò)展MSOffice并取代MSLync而重點(diǎn)開發(fā)的Skype-For-Business中的關(guān)鍵一環(huán),似乎不會(huì)再回過頭來加入可以輕易嵌入的通信功能。
那么,對(duì)于自行構(gòu)建應(yīng)用程序來直接納入通信功能的應(yīng)用程序開發(fā)人員而言,有什么替代方案呢?過去四年來,在Google和Mozilla以及最近Microsoft和其他公司(參考資料4)的推動(dòng)下,在IETF(參考資料5)和W3C(參考資料6)開展的標(biāo)準(zhǔn)制定計(jì)劃的支持下,WebRTC登上了歷史舞臺(tái),成為一種可將通信功能輕松集成到應(yīng)用程序中的全新開放式標(biāo)準(zhǔn)。
本博文將探討標(biāo)準(zhǔn)的WebRTC方案在為真正的全球化、移動(dòng)化的應(yīng)用程序交付可靠、一致的體驗(yàn)質(zhì)量(QoE)方面所面臨的挑戰(zhàn),并討論可化解這些挑戰(zhàn)并針對(duì)全球化而優(yōu)化的體系結(jié)構(gòu)。
“標(biāo)準(zhǔn)的”對(duì)等WebRTC體系結(jié)構(gòu)所面臨的挑戰(zhàn)
WebRTC應(yīng)用程序的基礎(chǔ)體系結(jié)構(gòu)模式是“三角形”模式,如下所示。
無論應(yīng)用程序位于移動(dòng)應(yīng)用程序之中,還是位于瀏覽器的JavaScript代碼中,都會(huì)與集中式的Web應(yīng)用程序服務(wù)器進(jìn)行通信,這些服務(wù)器為每個(gè)設(shè)備提供在各設(shè)備之間協(xié)調(diào)通信所需的信息。在每個(gè)設(shè)備上,API用于根據(jù)需要獲取對(duì)麥克風(fēng)、揚(yáng)聲器和攝像頭的訪問,并計(jì)算設(shè)備之間的網(wǎng)絡(luò)路徑,此過程可能會(huì)因?yàn)榉阑饓、NAT和其他機(jī)制而變復(fù)雜。建立通信后,語音、視頻和數(shù)據(jù)通信媒體將以對(duì)等端到對(duì)等端的方式直接在設(shè)備之間流動(dòng)。一切看似完美無缺。
然而,雖然互聯(lián)網(wǎng)對(duì)等通信因?yàn)楹?jiǎn)便、免費(fèi)且不需要其他基礎(chǔ)架構(gòu)而堪稱是“理想的”方案,但是用戶能否在整個(gè)通信過程中獲得出色的體驗(yàn)質(zhì)量,則完全取決于網(wǎng)絡(luò)連接的質(zhì)量以及此質(zhì)量在整個(gè)通信會(huì)話期間的穩(wěn)定性。
理想的WebRTC使用情形通常表述如下:兩個(gè)端點(diǎn)均為瀏覽器,二者分別基于具有適當(dāng)性能且配備WiFi或有線網(wǎng)絡(luò)連接的筆記本電腦,并通過具有適當(dāng)一致性的網(wǎng)絡(luò)在同一國(guó)家/地區(qū)內(nèi)進(jìn)行通信。在這種情況下,不會(huì)有什么問題。但是,如果這些設(shè)備是具有3G、4G或WiFi連接且可能在這些連接之間切換的手機(jī),帶寬在用戶移動(dòng)過程中經(jīng)常波動(dòng),而且這些設(shè)備處于完全不同的國(guó)家/地區(qū),其中某些國(guó)家/地區(qū)的網(wǎng)絡(luò)很不通暢,那么通信質(zhì)量就可能非常糟糕!因此,許多具有跨國(guó)家/地區(qū)通信經(jīng)歷的應(yīng)用程序開發(fā)人員發(fā)現(xiàn),WebRTC的體驗(yàn)質(zhì)量是一個(gè)真正的挑戰(zhàn)。標(biāo)準(zhǔn)互聯(lián)網(wǎng)不對(duì)實(shí)時(shí)通信提供任何類型的“服務(wù)質(zhì)量”保證,這一點(diǎn)可從私有企業(yè)網(wǎng)絡(luò)中看出;因此,只要存在某種連接,就不會(huì)對(duì)用戶之間傳輸語音和視頻數(shù)據(jù)包的方式進(jìn)行任何重新路由或更改。即使?fàn)顩r很糟,也會(huì)照舊進(jìn)行。
就本質(zhì)而言,WebRTC提供了各種庫和編解碼器,它們包括在某些Web瀏覽器中,或者由不同公司打包為SDK以供移動(dòng)應(yīng)用程序使用,但是WebRTC并不為這些端點(diǎn)提供針對(duì)QoE優(yōu)化的網(wǎng)絡(luò)。網(wǎng)絡(luò)質(zhì)量完全取決于您以及用戶之間變化莫測(cè)的諸多移動(dòng)網(wǎng)絡(luò)和互聯(lián)網(wǎng)連接!
全球性的“移動(dòng)到移動(dòng)”應(yīng)用程序
HelloTalk是一款典型的全球性移動(dòng)應(yīng)用程序,同時(shí)適用于AppleIoS和Android,可為任何國(guó)家/地區(qū)的用戶提供一個(gè)交互式社交環(huán)境來學(xué)習(xí)新的語言。我們?cè)谥瓣P(guān)于HelloTalk的博文中深入探討過HelloTalk,因此本文不再贅述(參考資料7)。案例研究已經(jīng)說明了對(duì)于像HelloTalk這樣的公司,為何必須要讓全球性的“移動(dòng)端到端”通信每次都得提供卓越的體驗(yàn)質(zhì)量,并且無論用戶處于哪個(gè)國(guó)家/地區(qū),無論采用何種網(wǎng)絡(luò)連接。
Agora.ioCaaS——針對(duì)RTC優(yōu)化的全球網(wǎng)絡(luò)
對(duì)于“移動(dòng)端到端”的WebRTC挑戰(zhàn),其解決方案在于提供一個(gè)針對(duì)RTC優(yōu)化的全球虛擬網(wǎng)絡(luò),盡可能以本地方式連接各個(gè)移動(dòng)設(shè)備,然后確保這些用戶之間的全球連接在整個(gè)通信會(huì)話期間都保持出色的QoE。
此體系結(jié)構(gòu)包含兩個(gè)重要部分:
- 即使在移動(dòng)中的最后一英里,也能通過“高速通道”從移動(dòng)設(shè)備接入網(wǎng)絡(luò)。
- 網(wǎng)絡(luò)中的各個(gè)設(shè)備之間建立全球性連接。
移動(dòng)設(shè)備可通過3G、4G或WiFi和寬帶連接至Agora.io網(wǎng)絡(luò),延遲和連接類型可能會(huì)在用戶移動(dòng)中不斷變化。因此,這里的重點(diǎn)是容錯(cuò),并基于網(wǎng)絡(luò)狀況不斷調(diào)優(yōu)音頻/視頻。由于預(yù)計(jì)會(huì)出現(xiàn)“數(shù)據(jù)包丟失”和“抖動(dòng)”等技術(shù)問題,因此體系結(jié)構(gòu)在設(shè)計(jì)上也必須能夠處理它們。這需要對(duì)編解碼器和傳輸協(xié)議進(jìn)行創(chuàng)新,使之針對(duì)移動(dòng)設(shè)備而高度優(yōu)化。對(duì)于特定的設(shè)備,即使是回聲消除這類功能,也必須高度調(diào)優(yōu),確保從一開始就提供最佳語音質(zhì)量。
為確保從當(dāng)?shù)剡M(jìn)行快速訪問,需要提供大量的訪問節(jié)點(diǎn)——Agora.io目前在全球擁有超過65個(gè)數(shù)據(jù)中心,而且還在不斷擴(kuò)張。通信將會(huì)直接進(jìn)入Agora.io網(wǎng)絡(luò),而不是在全球進(jìn)行隨機(jī)的對(duì)等傳輸。這使得“虛擬”Agora.io網(wǎng)絡(luò)可以自動(dòng)、持續(xù)地針對(duì)QoE進(jìn)行優(yōu)化。
當(dāng)通信抵達(dá)Agora.io網(wǎng)絡(luò)節(jié)點(diǎn)后,如何將此通信路由至目標(biāo)就成了關(guān)鍵問題。為確保在全球保持較低的成本,Agora.io采用全球的互聯(lián)網(wǎng)(因此任何人都不需要為專用線路支付電信層面的成本),但其路由和優(yōu)化并不是完全依賴互聯(lián)網(wǎng)。Agora.io不斷監(jiān)視其所有節(jié)點(diǎn),知道全球在每一時(shí)刻的最佳實(shí)時(shí)通信網(wǎng)絡(luò)路徑。因此,在路由過程中,系統(tǒng)會(huì)根據(jù)需要?jiǎng)討B(tài)重新路由實(shí)時(shí)通信,從而繞開瓶頸并確保實(shí)現(xiàn)良好的QoE。Agora.io網(wǎng)絡(luò)節(jié)點(diǎn)還直接管理低層級(jí)冗余選項(xiàng)和重新傳輸決策,對(duì)實(shí)時(shí)語音和視頻通信提供最適當(dāng)?shù)奶幚恚@一點(diǎn)不同于普通的Web需求或單向流式傳輸需求。
此方式對(duì)于處理網(wǎng)絡(luò)“不良”(Brown-Out)狀況具有重要意義。在網(wǎng)絡(luò)狀況不良時(shí),各互聯(lián)網(wǎng)路徑仍然有效,但狀況很糟,無法滿足實(shí)時(shí)通信對(duì)于低延遲和低數(shù)據(jù)包丟失率的需求。“中斷”(Black-Out)則與此不同,其中各連接均已中斷,互聯(lián)網(wǎng)可自行(緩慢)確定建立新路由的必要性。Agora.io虛擬網(wǎng)絡(luò)可快速發(fā)現(xiàn)整個(gè)網(wǎng)絡(luò)中較好和較差的通信狀況,并實(shí)時(shí)采取相應(yīng)的措施。
因此,在整個(gè)會(huì)話期間,大部分Agora.io通信并非采取對(duì)等傳輸(盡管在本地可實(shí)現(xiàn)此功能),而是接受動(dòng)態(tài)管理;Agora.io的全球分布式節(jié)點(diǎn)(超過65個(gè))以虛擬網(wǎng)絡(luò)層的形式在標(biāo)準(zhǔn)互聯(lián)網(wǎng)之上運(yùn)行。
其結(jié)果則是一款真正的端到端全球SDK和網(wǎng)絡(luò)管理解決方案,可確保為語音和視頻通信提供出色的體驗(yàn)質(zhì)量,尤為注意滿足移動(dòng)設(shè)備的嚴(yán)苛要求。
結(jié)論——優(yōu)化的體驗(yàn)質(zhì)量
為支持新一代“移動(dòng)端到端”的全球性應(yīng)用程序,以及臺(tái)式機(jī)/瀏覽器和移動(dòng)混合情形實(shí)現(xiàn)實(shí)時(shí)通信,開發(fā)人員需要一種針對(duì)RTC優(yōu)化的全球網(wǎng)絡(luò)。當(dāng)今的大多數(shù)WebRTC方案只是提供相應(yīng)的庫,而網(wǎng)絡(luò)是否夠好則完全取決于您!而且,這些庫和工具通常針對(duì)瀏覽器使用情形而優(yōu)化,不一定適合性能和網(wǎng)絡(luò)連接質(zhì)量均波動(dòng)劇烈的移動(dòng)設(shè)備。
Agora.io提供了一種富有創(chuàng)新的全球RTC網(wǎng)絡(luò),其Agora。io移動(dòng)SDK中已內(nèi)置移動(dòng)優(yōu)化,因此Agora客戶可直接受益于這些功能。Agora將繼續(xù)納入更多WebRTC標(biāo)準(zhǔn),以便輕松連接至標(biāo)準(zhǔn)的WebRTC瀏覽器,同時(shí)通過SDK保持最佳的“移動(dòng)到移動(dòng)”體驗(yàn)。這使得Agora客戶(例如HelloTalk等)能夠?yàn)槠淙蛴脩籼峁└噙x擇,并大幅提升體驗(yàn)質(zhì)量。
- 參考資料1:http://cn.agora.io/press-releases/%E5%A3%B0%E7%BD%91agora%E5%AE%A3%E5%B8%83%E8%8E%B7%E5%BE%972000%E4%B8%87%E7%BE%8E%E5%85%83b%E8%BD%AE%E8%9E%8D%E8%B5%84/
- 參考資料2:http://www.smartinsights.com/mobile-marketing/mobile-marketing-analytics/mobile-marketing-statistics/
- 參考資料3:http://www.dailymail.co.uk/health/article-2989952/How-technology-taking-lives-spend-time-phones-laptops-SLEEPING.html
- 參考資料4:http://www.agora.io/webrtc-video-and-quality-of-experience/
- 參考資料5:https://tools.ietf.org/wg/rtcweb/
- 參考資料6:https://www.w3.org/2011/04/webrtc/