7月29日-7月30日,由青雲科技舉辦的 CIC2021 雲計算峯會在北京成功舉辦,拍樂雲服務端專家沈偉鋒受邀出席峯會,並在音視頻技術論壇上以《大規模實時音視頻技術架構的實踐和演進》爲演講主題,分享了實時音視頻通信的幾種常見架構和網絡拓撲,構建實時音視頻實際場景的複雜性和多樣性,以及拍樂雲在超大規模實時音視頻系統的一些實踐。全球疫情持續反覆,線上互動依然是後疫情時代人們工做、生活、娛樂的常態,實時音視頻的需求還在增長。通過不斷的演進,拍樂雲能夠支持單房間萬人在線、千人視頻連麥、萬人音頻連麥,並作到99.95% 的高可用,服務於全球用戶。本篇演講實錄將由淺入深,一步一步帶你們瞭解時音視頻通信系統背後的技術細節。web
#01算法
實時音視頻常見架構編程
01瀏覽器
直連服務器
直連,也叫對等網絡(P2P)。這種結構中,每一個客戶端在啓動的時候,都須要註冊到註冊服務器,便於其餘人能找到本身,正常狀況下,在創建音視頻通信的時候不須要媒體服務器的介入,每一個客戶端相互鏈接,直接進行音視頻通信。但當一個或多個客戶端在 NAT 以後(甚至多層NAT以後)時,直連會變得比較困難,有時候甚至沒法聯通。這個時候須要經過 STUN 進行「打洞」來穿越 NAT 進行通信,若是「打洞」失敗,還須要引入服務器中繼才能通信。具體的NAT打洞,或服務中繼的細節能夠參考拍樂雲的系列文章《穿越防火牆的奧祕:ICE協議詳解》markdown
MCU網絡
MCU(Multipoint Conferencing Unit)方案出現得比較早,相應的技術也很是成熟,該方案由一個服務器和多個客戶端組成一個星形結構,各個端都將音視頻數據發送給服務端,服務端會把全部客戶端的音視頻數據通過解碼,同步,重採樣,佈局,混流,編碼等,最後把媒體數據推送給全部的客戶端。實際上服務器端就是一個音視頻混合器,這種方案服務器的計算壓力會很是大。通常狀況下,在音頻數據混流以前,服務端會把目標用戶本身的音頻數據移除,避免客戶端聽到本身的回聲。在視頻數據混流前,服務端可能檢測每一個目標用戶是否有自定義的佈局,不然就按系統默認的佈局混流編碼。在一些網絡比較複雜的環境下,MCU 也能夠按目標用戶的帶寬對視頻數據的編碼碼率作一些自適應的調整。架構
SFU併發
SFU(Selective Forwarding Unit)是最近幾年流行的新架構,SFU 的方案跟 MCU 相似,每一個客戶端都把音視頻數據發給服務端,而後由服務端轉發給不一樣的客戶端。跟 MCU 不一樣的地方,SFU 不對音視頻進行混流,收到某個客戶端的音視頻數據後,按需(目標客戶端是否訂閱)將音視頻數據原封不動的轉發給目標客戶端。它實際上就是一個音視頻路由轉發器。在這種方案裏,全部的混流都是在客戶端作的,對服務端的計算要求大大下降。在一些複雜的網絡環境,視頻的數據源端會使用 Simulcast 或 SVC 發送多層不一樣分辨率的視頻流數據,服務端根據目標客戶端的不一樣網絡帶寬和網絡情況轉發最合適的分辨率給目標客戶端,使每一個客戶端的體驗達到最佳。負載均衡
對比和總結
從上面的對比,咱們能夠看到,直連方案基本不大適合大會場景,並且沒法對網絡內容進行審覈,直連方案目前市場上基本只有在免費場景中看到。而隨着計算成本和帶寬成本的大幅度降低,及超大併發的需求,SFU方案的優點變得很是明顯,而MCU方案在一些企業內基於音視頻終端的通信等傳統應用場景目前仍是比較常見的。
上面的音視頻通信架構,是最基礎的音視頻服務架構,尚未辦法作到高可用和高併發,假設服務器宕機,服務就變的不可用了。
#02
構建實時通訊的網絡拓撲
01
環狀網絡結構
環型結構由網絡中若干節點經過點到點的鏈路首尾相連造成一個閉合的環,這種結構經過公共傳輸鏈路組成環型鏈接,數據在環路中沿着一個方向在各個節點間傳輸,信息從一個節點傳到另外一個節點。
這種網絡實現,構建和路由選路都很簡單,沒有中心依賴。但環狀網絡結構增長刪除節點比較困難,環中任何一個節點失效,環路傳輸就會中斷,致使整個網絡癱瘓。環狀網絡結構開始主要用於令牌網,目前已經不多被採用。
星型/樹型網絡結構 星型拓撲結構是一箇中心,多個分節點。它結構簡單,鏈接方便,管理和維護都相對容易,並且擴展性強,網絡延遲小。中心節點是瓶頸,一旦失效,整個網絡就癱瘓,單葉子結點互相獨立,互不影響。
樹形拓撲結構形狀像一棵倒置的樹,頂端是樹根,樹根向下分支,每一個分支還可再向下分支,樹根接收各站點發送的數據,而後再廣播發送到全網。好擴展,容易診斷錯誤,根節點是瓶頸。在音視頻服務架構中,當須要大規模擴展併發用戶的時候,通常都會採起部署多個邊緣計算控制節點,並經過樹型方式鏈接到中心DC。經過這樣方式接入的用戶,延遲會略有增長。
網狀網絡結構
在網狀拓撲結構中,網絡的每臺設備之間均有點到點的鏈路鏈接,網狀拓撲結構是應用最普遍的。它的優勢是沒有中心節點,可靠性高,容錯能力強,延遲低,但結構複雜,因有多條傳輸路徑,選路和流量控制比較複雜,消息的時序一致性沒法保證。
在音視頻服務架構中,咱們的設計目標是:極低的延遲,傳輸高效,吞吐量大,但對不一樣用戶來的媒體數據的時序性一致性並無要求。所以網狀結構通常是音視頻服務架構中主DC服務控制節點間組網的首選拓撲結構。
#03
實際場景的多樣性
01
網絡接入的多樣性
移動網絡: 3G/4G/5G的接入帶寬各不相同(3G:<2Mbps;4G:10~ 100Mbps;5G:~10Gbps),而且信號強弱,接入基站隨移動變化。
有線寬帶:LAN接入,共享出口帶寬,容易出現用戶間帶寬競爭;ADSL接入,上下行帶寬不對稱,上行帶寬低;PON & FTTH 直接光纖接入 ,帶寬穩定。
無線接入:主流路由器 < 150Mbps (2.4G頻段最大300Mbps,5G頻段最大867Mbps)。
02
傳輸路徑上設備的多樣性
傳輸路徑上路由器、交換機吞吐量各不相同,出現性能瓶頸時,丟包策略和資源預留策略會有差別。
03
終端設備的多樣性
咱們須要面對的設備有桌面設備、移動設備、穿戴設備、物聯網設備等,這些設備上的關鍵模塊的質量,性能良莠不齊。這些關鍵模塊包括:網絡模塊、媒體採集模塊(Camera/Mic)、計算模塊(CPU)、渲染模塊(GPU)等。
04
服務端接入的多樣性
BGP(Border Gateway Protocol)機房實現單IP多線接入,具有智能路由選擇,線路備份,故障後自動切換到可用線路等。多運營商專線接入,須要從應用層處理選路,故障時線路切換等。單運營商專線接入,沒法解決不一樣運營商之間的互聯互通的問題。
正是因爲實際場景的複雜性,多樣性致使了:網絡的動態變化:帶寬,丟包,抖動,延遲等;採集數據的動態變化:噪音(噪點),畸變,輸出數據抖動等。\
#04
架構演進和拍樂雲實踐
01
服務的高併發,高可用
要作到服務高併發,高可用,主要涉及到下面幾項技術:
高併發服務集羣咱們在音視頻服務基礎架構中講到,單機服務併發量受限於服務器的計算資源,當須要很是高併發的時候,咱們必須擴展服務端計算資源,組成服務集羣,並經過前面的負載均衡使客戶端來服務請求被均衡的分配到集羣中的每一個計算資源。
服務故障的自動恢復和降級咱們知道任何代碼都或多或少會存在邏輯缺陷,即便是世界上最厲害的大牛也沒法避免,所以,咱們須要一個機制來保障,當故障發生時,系統能自動捕獲錯誤,並恢復服務的可用性。當一些物理上的瓶頸出現的時候,好比服務計算資源,網絡帶寬出現瓶頸的時候,繼續按正常方式提供服務,可能會產生雪崩效應,致使整個服務不可用,在這個時候,咱們須要經過服務降級的方式來保障最主要的功能是可用的。好比關閉視頻並不會對溝通形成嚴重的影響,但關閉音頻可能使溝通沒法繼續,那就保留音頻,關閉視頻,來保證整個服務的可用性。服務資源彈性伸縮在虛擬化,SDN等技術的加持下,使得計算資源,網絡資源的動態分配成爲可能,所以在服務資源成爲瓶頸時,動態伸縮服務資源在技術上是可行的。異地容災備份在一些極端狀況下,好比咱們部署服務集羣的機房發生火災,如何來保證咱們的服務可用?這個時候,咱們會在不一樣地理位置部署多個服務集羣,在正常狀況下,不一樣地理位置的服務集羣都會同時提供服務,當某個集羣發生不可用的時候,咱們的服務監控會檢測到相應的事件,並及時調整路由,把新的服務請求調度到可用的其餘服務集羣。
在以上幾個主要技術的加持下,拍樂雲目前已經能夠作到99.95%的高可用,並服務於全球用戶。
02
服務的高質量
面對複雜多變的網絡環境,如何保證提供高質量的音視頻服務是音視頻服務系統很是重要的任務,在這方面,拍樂雲主要使用了這些技術來保證服務的高質量:帶寬評估、擁塞控制和平滑發送、丟包重傳和前向冗餘糾錯、錯誤隱藏和恢復、基於時域和空域的多層分發(SVC & Simulcast AVC)、基於圖像和語音的去噪和加強、迴音消除、音量自適應調整、網絡資源預留。經過這些技術的應用,拍樂雲即便在70%的丟包率下,依然能提供很是高質量的音視頻服務。
03
超大規模,超高併發
SFU 架構中的有選擇的數據轉發
你們知道,在SFU方案中,音視頻數據是全量轉發的,也就是說在10我的的會議中,服務端要把每一個人的數據轉發給其餘9個用戶(109),在用戶數小的時候,問題不會太嚴重,但隨着用戶量的增長,問題會變的愈來愈嚴重。假設會中有100我的,每一個人的視頻數據是1Mbps,實際服務端須要轉發的是10099 = 9.9Gbps,在現實狀況下,這幾乎是不可能的。在實際狀況中,受屏幕大小的限制,每一個人不可能同時去看另外99個用戶的視頻,最多見的狀況是1大+6小,或2二、3三、4四、55等幾種模式,這樣,經過按需轉發的方式,數據量能夠大幅度的減小。邊緣計算與加速節點在上面實時通信系統的網絡拓撲結構中咱們講到,經過部署多個邊緣計算節點,按樹型結構連接到主DC,能夠大幅度擴大會議的規模。邊緣計算節點也能夠經過就近接入來解決最後一千米的接入問題。
在單向直播的場景中,咱們也能夠經過第三方CDN網絡來擴展會議規模,但這種方案的延遲會比較大,會達到3~10秒的延遲,基本沒法互動溝通,只能單向直播,當須要互動溝通的時候,必須切換接入方式到邊緣計算節點或中心DC。
04
拍樂雲音視頻系統技術架構
架構圖的左邊主要是服務的註冊、認證、配置、發現、調度。右邊主要是大數據分析平臺,服務健康情況監控報警,服務資源彈性伸縮。中間是拍樂雲的產品服務:語音通話、視頻通話、互動白板、互動直播,雲端錄製等。
#05
業界動向與最新技術
近年來,音視頻通信領域的發展很是快,出現了各類前沿新興的技術,有的已經落地,有的還在深刻的研究之中,不少技術的應用前景都很是看好。在這裏咱們舉幾個例子:
01
WebRTC
2010年5月,Google收購Global IP Solutions的GIPS引擎,將其開源並更名爲WebRTC。2014年7月,WebRTC成爲W3C標準,併發布瀏覽器標準API1.0。自此之後,實時音視頻通信服務的門檻大幅度下降,不少基於WebRTC的實時音視頻服務如雨後春筍般蓬勃發展起來。能夠說WebRTC的出現改變了音視頻通信領域的市場格局。
WebRTC目前還在不停的演進之中,有興趣的能夠從下面的連接獲取最新的信息:webrtc.org/https://gro…
02
SDN
Software Defined Network即軟件定義網絡,最初是由美國斯坦福大學CLean State研究組提出的一種新型網絡創新架構,可經過軟件編程的形式定義和控制網絡,其控制平面和轉發平面分離及開放性可編程的特色,被認爲是網絡領域的一場革命,爲新型互聯網體系結構研究提供了新的實驗途徑,也極大地推進了下一代互聯網的發展。
其核心概念是:控制與轉發分離,管理與控制分離。其可編程和虛擬化特色能夠幫助快速定義網絡,並實現自動化部署和運維。控制和管理的集中,使得網絡路徑最優化變得更加容易實現。
03
基於機器學習的新算法
機器學習在不少領域都獲得了普遍的應用,在實時音視頻通信領域上也出現了不少應用方向,好比:
網絡傳輸相關:智能擁塞算法,智能帶寬評估算法,智能路由等;視頻圖像相關:虛擬背景,超分辯率,視頻融合,deepfake等;
語音相關的:語音識別,語音加強等。
04
虛擬現實、加強現實和 3D 技術
虛擬現實(Virtual Reality),就是虛擬和現實相互結合,是一種能夠建立和體驗虛擬世界的計算機仿真系統,它利用計算機生成一種模擬環境,使用戶沉浸到該環境中。加強現實(Augmented Reality)是一種將虛擬信息與真實世界巧妙融合的技術,真實環境和虛擬物體之間重疊以後,可以在同一個畫面以及空間中同時存在。經過VR,AR,3D技術的結合,相信不久的未來,實時音視頻通信能夠實現相似於現實世界中會議室一塊兒開會的效果。