实时互动业务
實時互動業(yè)務
對于傳統(tǒng)的頁面,點播業(yè)務,到近兩年來興起的直播,都是依賴于 CDN 網(wǎng)絡的單向數(shù)據(jù)傳播業(yè)務。隨著業(yè)務場景需求,實時互動正在扮演著越來越重要的場景。我們已經(jīng)看到很多直播中都加入了實時互動的元素:
- 直播中最早的互動方式,直播間里觀眾通過消息,彈幕等方式刷屏和主播進行互動
- 直播連麥,兩個或多個主播進行實時互動,然后把互動內(nèi)容通過 CDN 進行直播
- 抓娃娃機,通過安裝在抓娃娃機的攝像頭,讓抓娃娃設備與游戲者進行實時互動,完成游戲
- 直播答題,主播在直播過程中插入題目(配合導播完成),觀眾進行答題,并獲取最終的獎勵
- ……
我們可以看到加入實時互動以后,直播的業(yè)務場景得到了大大的豐富。隨著技術(shù)的逐步成熟,技術(shù)門檻和網(wǎng)絡成本的逐步降低,人類日常的社交方式也將逐步從文字,語音開始向視頻方式轉(zhuǎn)換
本篇主要對實時互動技術(shù)做一個簡單的探討
最簡單的架構(gòu)
實時互動技術(shù)總的來說主要是兩個方面:
- 消息類的實時互動
- 媒體類的實時互動,媒體類包含語音和視頻兩種
一般在用戶量比較小的時候,多數(shù)業(yè)務方都會采用 BGP 作為業(yè)務核心系統(tǒng),覆蓋所有終端用戶
連麥:
聊天室:
以上架構(gòu),一般滿足小規(guī)模業(yè)務場景是沒有任何問題,如果業(yè)務規(guī)模較大,可能會出現(xiàn)很多問題:
CDN 融合架構(gòu)
其實從業(yè)務模式來說,直播和實時互動有一定的相通性:直播有主播推流的上行流程和觀眾拉流的下行流程,而實時互動對于每個參與方來說,既是主播也是觀眾
而從網(wǎng)絡層面上來說,分層架構(gòu)可以基本解決網(wǎng)絡不可達問題。這種分級架構(gòu),其實并不是 CDN 特有的,在電信系統(tǒng)里面,分級架構(gòu)是其傳輸網(wǎng)絡的基礎架構(gòu)。其實無論是 IM 聊天室,還是會議服務,其實更多的是電信業(yè)務的模式,這里提的 CDN 融合架構(gòu),實際上是利用 CDN 天生的網(wǎng)絡優(yōu)勢,去融合實時互動甚至是實時通信的業(yè)務
連麥
直播 CDN 會有多個匯聚核心,分別用于覆蓋不同區(qū)域,通過鏈路選優(yōu)服務,每個區(qū)域的邊緣節(jié)點到匯聚核心都能保證較高的網(wǎng)絡質(zhì)量。
選點上,將實時互動的業(yè)務服務器與直播 CDN 核心部署在一起,邊緣傳輸節(jié)點與直播 CDN 邊緣部署在一起。直播和實時互動的選優(yōu)服務主要測量指標為延遲和丟包率,這點上面兩個服務是通用的,所以在調(diào)度層面上,可以進行一部分的復用
對于不同區(qū)域的實時互動參與者,會進到不同核心的業(yè)務服務器上,而這些服務器之間再做一層橋接,實現(xiàn)跨區(qū)域的音視頻會議
以上,通過 API Server 對主會議室進行搶占,未搶占到主會議室的核心向主會議室核心進行橋接,各會議室向 API Server 定時發(fā)送心跳,一旦主會議室出現(xiàn)異常,從會議室會搶占成為主會議室恢復
WS edge 是 websocket 邊緣,turn server 可以和 websocket 邊緣部署在一起,分布在 CDN 邊緣節(jié)點,保證到用戶終端的可達性。用戶終端可以通過 IP 調(diào)度或者 DNS 調(diào)度找到離自己最近的邊緣節(jié)點
一般音視頻會議參與方有人數(shù)上限,所以對于這類業(yè)務,不需要在邊緣進行匯聚,直接通過核心匯聚
當邊緣到核心連通性不好時,需要考慮加一級中轉(zhuǎn)節(jié)點,這個中轉(zhuǎn)節(jié)點可以稱作 media gateway,該網(wǎng)元會將用戶的 signalling 直接橋接到最近的核心,在這里也需要做一次 SDP 映射。功能可參考 IMS 中的 SBC
聊天室
對于聊天室,其實是一種大規(guī)模的消息分發(fā),可以參考直播中主播房間中觀眾的文字互動或者彈幕消息(這里暫時不考慮必達消息的處理方式)。如果全部匯聚到一個核心服務器,這個消息量是很可觀的,核心連接數(shù)必然會影響到核心服務器的性能,這里就需要考慮多級匯聚的架構(gòu)方式。
通過多級匯聚后,到核心的連接數(shù)和消息數(shù)都會大大減少
性能上的改進
對于規(guī)模較小的情況,使用 websocket 基本可以滿足要求,各種 http 架構(gòu)對 websocket 的支持也較好。如果服務器連接處理成為瓶頸,則需要考慮使用 UDP 通道的方式替代 websocket
總結(jié)
- 上一篇: 智慧警务:如何利用视频智能分析技术助力城
- 下一篇: Kafka 的 Lag 计算误区及正确实