回覆列表
  • 1 # 使用者3426396362174

    一、場景

    常見的即時通訊場景包括文字聊天、語音訊息傳送、檔案傳輸、音影片播放等。通俗的說,就是發簡訊。

    實時通訊的場景包括語音、影片電話會議、網路電話等。通俗的說,就是打電話。

    二、產品需求點

    即時通訊:主要要求可靠,考核送達率。要是你發一條簡訊,結果丟了,對方沒收到!你再也不相信簡訊了吧。

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

    低延時:你打一通電話,每說一句話,對方得幾秒鐘才有迴應,這電話你也講不下去了吧。接通率:你打電話,你這邊聽到接通了,實際上對方的手機毫無反應,這實際上就沒接通。這跟簡訊沒送到,造成的惡劣影響是一樣的。

    三、技術環節

    四、傳輸協議

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

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

    UDP:User Data Protocol,使用者資料報協議,是與TCP相對應的協議。它是面向非連線的協議,它不與對方建立連線,而是直接就把資料包傳送過去。 存在丟包、抖動、延遲的特徵。

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

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

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

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

    五、成本

    二者成本會產生差異的環節有:

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

    從成本上來看,傳輸同樣資訊量的資料,基於TCP的即時通訊方式,更側重於可靠性,會優先採用多線機房的傳輸方式,成本比較高;

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

  • 中秋節和大豐收的關聯?
  • 王剛尖椒豆皮的做法?