天天看點

即時通訊IM和實時通訊的差別

作者:音視訊開發老舅

即時通訊(IM)和實時通訊是一套網絡通訊系統,其本質都是對資訊進行轉發。最大的不同點是對資訊傳遞的時間規定。二者的差別可以從以下幾個方面:

一、場景

常見的即時通訊 場景包括文字聊天、語音消息發送、檔案傳輸、音視訊播放等。通俗講就是發短信。

即時通訊IM和實時通訊的差別

常見的實時通訊 場景包括語音電話、視訊電話會議、網絡電話等。通俗講就是打電話。

即時通訊IM和實時通訊的差別

C++音視訊開發學習資料:點選領取→音視訊開發(資料文檔+視訊教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

二、産品需求點

即時通訊: 主要要求可靠,考核送達率。假如發一條短信,結果對方沒收到!你還相信短信嗎?

實時通訊: 主要要求低延時和接通率。

低延時: 你打電話每說一句,對方得幾秒鐘才有回應,這電話你也講不下去了吧。

接通率: 打電話時你這邊顯示接通了,實際上對面的手機毫無反應,就是沒接通。這跟短信沒送到,造成的惡劣影響是一樣的。

可以參考下anyRTC的通訊技術文檔,我們是覆寫全媒體的,而且我們的編解碼技術在超低延時方面有很顯著的效果。

三、技術環節

即時通訊技術環節: 消息發送和确認,【消息接入端、服務端消息邏輯處理,服務端消息緩存和存儲,轉發,服務端使用者狀态管理,心跳機制,消息發送端】、消息接收和确認。

實時通訊技術環節: 采集、前處理、編碼、【服務端接入、轉發、服務端接入】、解碼、播放和渲染。這些技術環節重合的部分是:資訊轉發。

四、傳輸協定

公共網際網路上,最常用的通訊協定有TCP、UDP。

TCP: Transmission Control Protocol,傳輸控制協定是基于連接配接的協定,也就是說,在正式收發資料前,必須和對方建立可靠的連接配接。有延時不可控的特點。

UDP: User Data Protocol,使用者資料報協定,是與TCP相對應的協定。它是面向非連接配接的協定,它不與對方建立連接配接,而是直接就把資料包發送過去。 存在丢包、抖動、延時的特征。

即時通訊IM和實時通訊的差別

即時通訊 系統為了保證連接配接的可靠性,最常用的是TCP協定或者類TCP連接配接協定。這類協定的特點是追求連接配接的可靠性,而造成了延時的不可控性,超過2秒的延時響應是常态,甚至幾十分鐘的延時響應,而電信級的實時通訊标準是400ms,而基于網際網路的實時通訊需要另辟蹊徑,開創出新的傳輸解決方案。這又與應用場景相關了。發短信,延時幾秒鐘送達,對使用者影響不大。

實時通訊 會采用 UDP 作為基礎傳輸協定。在設計低延時的實時通訊服務時,UDP 表現要比 TCP 好得多。因為實時通訊中,低延時比可靠性更重要。打電話,幾秒的延遲是不能忍受的。

TCP協定封裝了消息的重傳機制,在丢包的情況下,采用TCP協定的應用程式幾乎無法優化這個重傳機制,來達到低延時的效果。特别是在移動網際網路絡中,超過30%丢包時,TCP 的延時可以到幾十分鐘, 超過 50%丢包時,甚至很容易斷開。 在同樣丢包30%的鍊路上,UDP還可以傳輸資料,TCP就無法進行實時通訊了。

基于UDP協定,加上對丢包的情況開發了各種算法進行補償,一方面盡量保證和恢複資料的連續性。另外一方面,當某些資料包無法恢複時,會丢棄對應的音視訊資料包,而不會影響後續的實時通訊服務。

C++音視訊開發學習資料:點選領取→音視訊開發(資料文檔+視訊教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

五、成本

成本涉及到的環節有:服務端接入、存儲和轉發。 二者成本會産生差異的環節有:

服務端 方面,從它的接入方式來看,即時通訊采用TCP協定來保證可靠性,可能會建立多個連接配接,相比無連接配接的UDP傳輸方式,這是一種昂貴的傳輸方式。實時通訊可以基于UDP協定,與服務端建立靈活的、快速的接入機制。

存儲 方面,實時通訊在服務端是實時轉發,不會在服務端存儲資料,而即時消息系統一般會将緩存轉為存儲資料,包括富媒體資料,會占用大量的存儲空間,産生更多的存儲成本。

成本 方面,傳輸同樣資訊量的資料,基于TCP的即時通訊方式,更側重于可靠性,會優先采用多線機房的傳輸方式,成本比較高。

而基于UDP的實時通訊方式,會優先選取最優路徑進行傳輸資料,并可以動态調整傳輸路徑,這樣能夠高效的利用帶寬,提高傳輸效率,降低成本。

六、開源項目

即時通信:XMPP,MQTT

實時通信:WebRTC、 Tokbox

七、實時通信有哪些開創性的應用場景

雖然前面一直在拿打電話舉例子,但基于網際網路的實時通信與打電話有本質的差別。

實時通信是富媒體通信,不但有語音,還有視訊,這就賦予了很多傳統場景新的想象力。

互動直播:

傳統直播是基于CDN的一對多直播,主播演、觀衆看。主播與觀衆之間的互動,僅限于送花、打賞,很難實作主播與觀衆對話。

電視台新聞節目,基于電視網絡傳播。演播廳裡的主播與場外的外景主持人有對話,這實際上中間是有導播的參與。導播聽到外景主持人開始說話,就立刻告訴主播趕緊開始說話。給觀衆造成了演播廳在和外景主持人“對話”的假象。

如果基于實時通信技術來進行直播,那麼主播和觀衆之間的對話,就是真正意義上的對話。還可以有更多開創性的互動直播場景,比如:身處異地的雙人主播辯論。

互動線上教育:

老師和學生可以實時對話,不懂就問,問了就答。這是教育的剛需,誰可以解決這個問題,誰就能大幅度的提高教學品質。

線上視訊問診

醫生和患者,可以通過視訊就進行診斷。患者在偏遠地區,醫生在國外,通過視訊就可以完成初步診斷。整形美容術前咨詢,醫生可以通過視訊對患者完成首次初診。

繼續閱讀