活動回顧 WebRTC服務端工程實踐和優化探索

2022-07-11 19:45:10 字數 1617 閱讀 3435

接下來進入主題,今天的分享主要分為三個部分:

第一,webrtc伺服器架構介紹及設計思路;

第二,我們開發乙個伺服器所需要的技術和面臨的難點;

第三,qos服務質量的實現及優化。

一、webrtc伺服器架構介紹和設計思路

我們首先要想一下,為什麼需要webrtc伺服器?webrtc伺服器它的作用是什麼?在大家的認知裡面,webrtc是谷歌開發的乙個專案或者是協議,是現在大家比較熟悉的乙個點對點通訊方案。點對點方案是指雙方瀏覽器之間是直接互聯的,如果我們在多方會議的多方通話的情況下,我們各個通話者之間都是直連的,沒有經過第三方。

下面來大概看一下它的優劣勢:

優勢第一,簡單。這個模型非常簡單,點對點,沒有經過中間的一些伺服器。

第二,延遲小。既然是直連的,我們可能理所當然地認為中間除了這些路由節點之外,就沒有其他地方會增加延時了。但是我後面加了乙個問號,也就是說未必是這樣的。熟悉我們國內運營商網路情況的都知道,聯通,移動,電信之間的通訊可能是不對稱的,如果我是聯通,你是移動,咱們直連的話,延遲未必是小的,這個就是我加了乙個問號的原因。

第三,端對端頻寬適應。這個指的是webrtc可以根據會話者之間的網路情況、頻寬情況進行適應。比如當你的接收頻寬不夠時,我可以降低上行編碼位元速率來適應你,從而達到乙個更好的通話效果。

劣勢第一,連通效能差。點對點之間,由於所有的網路不是在乙個防火牆後,我們可能需要打洞,甚至有一些防火牆非常嚴格的話,我們連打洞都沒辦法完成,這會極大的影響服務的連通性。我們首先要發現對方,然後要打洞,如果打洞不成功,還需要通過中轉伺服器來進行**的傳輸,這個過程可能會快則幾秒鐘,慢則幾分鐘。也就是說我們從會話開始到雙方建立通訊,整個過程是非常複雜、耗費非常長的時間。

第三,編譯碼壓力大。既然每個人的流要單獨傳送給其他與會者,那麼也要單獨編譯碼,要傳送n路就要編n路,並且編譯碼壓力是非常大的,不僅移動端沒辦法承受,甚至我們的pc端也是沒辦法承受的,這是它很大的乙個劣勢。

所以這裡就要引入乙個伺服器方案架構,根據剛才提到的點對點三大劣勢,我們來重點看看新方案是如何解決的。

連通性通常我們的伺服器都會架構在公網上,所以各個會話者是直接跟我們在公網上的伺服器建立連線,省掉了打洞,直接一步到位。

網路頻寬占用高

假設當前我們這個會議有四方會話,那我的與會者有三路,我只需發一路到伺服器上,通過伺服器把我這一路**給其他三路的與會者就可以了,不需要再去多發兩路,這樣我的上行頻寬就從原本的三路變成了一路了;而接收端,引入mcu的概念,為了節省下行頻寬,我們可以將這三路混流,再**給我,那麼我的下行也只有一路。

編譯碼壓力小

通過優化架構頻寬,編譯碼從原來的n路變成一路,也同步緩解了編譯碼壓力。

既然伺服器能更好的滿足我們的實際應用,那麼webrtc伺服器應該怎麼進行架構設計呢?開發webrtc伺服器需要哪些技術以及可能會面臨哪些難點?webrtc服務端qos(服務質量)的實現及優化有哪些重點要注意的?

活動召集服務端設計

思路 1 佇列儲存活動10000大小,成員裡面有當前人數,總人數 2 所有活動入庫,佇列中沒有的資料,嘗試從資料庫中獲取,獲取到了則加入佇列 3 佇列滿,先入先出原則,將第乙個從佇列中刪除入庫 4 佇列中參加的人數變化不入庫 5 活動id由伺服器自動生成,生成規則 使用者id 系統當前時間,避免重複...

服務端開發重點回顧

想要完成完整的 web 還需要學習什麼?一台安裝特定軟體的公共計算機,用於提供特定的服務。安裝了apache就是web伺服器,安裝了mysql就是資料庫伺服器 安裝web伺服器軟體 執行幾個命令列 1.3.1 ip位址 1.3.2 網域名稱 ip的別名,方便記憶 1.3.3 dns 1.3.4 埠 ...

HTTP服務端JSON服務端

最後更新日期 2014 5 18 author kagula 內容簡介 cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一...