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