新四季網

融雲和騰訊雲即時通訊(兼具高效與易用)

2023-10-09 03:10:24 2

無論是 PC 端還是移動端,接入網絡實現通信都需要建立雙端的連接。關注【融雲全球網際網路通信雲】了解更多

客戶端和服務端建立連接後不斷開,然後進行通信(也就是發送報文)的方式就是長連接。

與之相反,短連接是創建一個連接,在程序執行完畢後,就會自動斷掉。

二者相比,短連接會頻繁地創建和釋放連接,比較耗費資源。長連接就可以避免每次請求都創建連接的開銷,節省了時間和消耗,提高了性能。

本文梳理自 8 月 2 日的「IM 進階實戰高手課」內容,通過分析對比常見長連接協議、長連接協議的演進過程來拆解長連接協議設計要點,及融雲的最佳實踐。

長連接常見問題

安全性

首先是傳輸上的安全性,數據傳輸時需要經過通道層及應用層的加密,如 IPSec、TLS、PB 等。

其次,還需保證數據的實效性,具備防重放的特性。類似 5G 終端的認證是通過 SQN 帶上時間戳進行矢量校驗,保證數據的完整性和加密性。

最後會進行異常客戶端的檢測,通過動態認證密鑰,保證客戶端是可信的。

(長連接安全性)

可靠性

包括連接保持、快速重連和消息可達。主要通過心跳保活、弱網處理、就近接入等進行連接保持,設計快速認證重連策略實現低開銷,並由 QoS 質量保障確保消息可達。

(長連接可靠性)

低開銷

低開銷最根本的就是保證協議包體的大小合適,減少流量消耗,以及在解析協議包的時候,減少電量消耗。

並且,在應用及數據存儲上減少資源的消耗,以獲得更高的吞吐量和接入數。

(長連接低開銷)

長連接協議設計要點

長連接協議的設計要點,其實就是主要圍繞如何做到低開銷、安全性、可靠性以及協議的擴展性、完備性展開的。

(長連接協議設計要點)

業界常見的長連接協議如下:

我們詳細看看其中常用的幾種,SIP 是一個文本協議,支持 TCP、UDP、IPSec,比較符合國際規範,主要的應用領域是在電信領域如手機簡訊、手機音視頻通話、5G 消息(RCS)、SIP 話機、話務臺,它的協議設計規範和業務規範都是咱們可以去參考的。

XMPP 是一個文本協議,通過 XML 傳輸,具備一定的通信協議規範,易讀性比較高,主要應用在即時通訊系統、遊戲平臺、協作空間以及語音和視頻會議系統。這個協議的冗餘係數特別高,會帶來比較大的流量消耗。

MQTT 是一個開放消息協議,簡單易實現。採用發布訂閱模式,一對多消息發布。基於 TCP/IP 網絡連接,提供有序、無損的雙向連接。相較於上面兩種協議,它的協議包體特別小。1 字節固定報頭,2 字節心跳報文,最小化傳輸開銷和協議交換,有效減少網絡流量。

MQTT 協議廣泛應用於物聯網、移動網際網路、智能硬體、車聯網、電力能源等領域。

接下來咱們看一下這幾種協議一般在哪些場景或者層次上應用。

首先手機連網後如果要打電話,會通過 GTP 發送通話或者音視頻相關的數據信息。如果需要調用像運營商等技術能力,會通過類似於 XMPP 或者 SIP 去調一些開發能力。

在搭建雲平臺的時候,需要有長連接通道,一般會有導航或者配置服務去下發地址,然後通過這個地址連上長連接服務。業務的內部通信,一般通過 RPC 進行,比如單聊、群聊、聊天室和超級群。如果要將這些能力開放出來,就需要有一個開放網關,針對長連接的一些技術做能力開放。

整體而言,常見協議的擴展性和完備性是相反的。

SIP 主要應用在電信領域,它的完備性或者標準業務的設計規範比較高,與此相應,它的擴展性會相對不足。

XMPP 雖然本身協議的開銷比較大,但是它的業務接口規範以及邏輯模型是可以參考的。

MQTT 協議的開銷比較少,但是它整個上層業務的架設並不是特別豐富。

從演進歷史的角度看,網絡演進基本上是 10 年一個迭代,每個階段都會催生不同的應用。

為了解決不同階段的相應需求問題,傳輸層協議的演進也有其階段性。

UDP 和 GDP 的產生基本上是在相同的時間,分別保證傳輸的速率和可靠性。SCTP 是保證可靠的同時,又保證吞吐量。但是因為它的基礎網絡相對來說比較穩定,針對時延的考慮不是特別多,後來又有了低時延多鏈路數據傳輸的 QUIC 協議。

比起傳輸層的協議,應用層協議的變化就不是特別大了。它們大部分是在上世紀 90 年代末產生,分別應用於不同的領域,像 HTTP 主要是 WEB,MQTT 主要是物聯網,SIP 主要是電信領域在用,XMPP 主要是即時通訊。

融雲長連接特性

融雲的長連接協議主要考慮了高效性易用性兩大方面。其中,高效性包括對安全性、可靠性、完備性、擴展性以及低消耗的綜合考量設計。

安全性主要通過通道加密保證通道傳輸的安全,但是如果架設了中間層和中間人,就需要通過消息體加密保證數據傳輸的可靠性;在保證了傳輸層的安全性之後,還需要通過動態密鑰和認證碼去保證客戶端認證的安全性;最後就是保證數據的防重放

可靠性就是需要通過客戶端和服務端的雙向心跳保活保證電路的可靠性;通過全球網絡電路的架設,比如節點之間架設專線,讓客戶端通過一個比較可靠的就近地址接入,保證數據傳輸的高效和低時延;然後通過包括 QoS 質量保障、狀態送達和弱網優化等來做應用層的消息送達保障

完備性方面,融雲提供內容、通知等多種消息類型,單群聊、聊天室、超級群等多種業務類型服務。另外,為了保證排查問題的高效,融雲還在協議上進行了全鏈路消息的串聯,實現全鏈路消息的追蹤。

融雲在長連接協議的設計上,參考了業界常見協議的優勢特點,在保證數據傳輸低開銷的同時,又通過自定義消息類型和多層級消息通道、自定義業務流轉去保證擴展性

在保證高效性的同時,融雲長連接設計還要通過豐富、多端、簡便、擴展、統一等特點實現易用性。

業務豐富,單群聊、聊天室、超級群等經典和新興的業務類型都能滿足,同時具備消息的多樣性,包括文本、圖片、音視頻、表情包等消息類型及其他業務場景的自定義消息。

多端覆蓋,原生的 Android、iOS,跨平臺的 RN、Flutter 等全平臺覆蓋,保證各端協議的一致性,多端覆蓋且易於迭代。

多方統一,保證多端的統一性,長期協議的技術能力與融雲通信服務的開放能力是統一的。

開箱即用,通道簡便、協議簡潔。

高擴展性,在協議層保證業務架設可擴展。

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了