IM即時通訊 如何跳出傳統思維來設計聊天室架構?

2022-01-10 15:02:11 字數 2258 閱讀 1134

在實現這個功能時是如何做架構設計的。

高併發im系統架構優化實踐

常見的虛擬社群

在討論聊天室之前,我們先了解下幾種常見的虛擬社群形態。下表從參與人數、訊息送達即時性、離線訊息關注度等維度對論壇、im p2p、im群和聊天室這幾種常見的虛擬社群形態做了簡單對比,從這個對比可以看到聊天室是不同於論壇和群模式的一種虛擬組織,聊天室的架構需要跳出傳統思維來設計。

聊天室關鍵技術和難點

那麼,是否能從乙個已有的成熟技術框架上改造乙個聊天室出來呢?

經過前面的比較我們看到,聊天室和論壇及im群都具有一定的共性,看起來似乎可以將論壇架構改造成聊天室,也可以將im群改造成聊天室。

路徑一:將論壇架構改造成聊天室,首先需要提高訊息送達的即時性,由於論壇都是基於http協議的,為了保證訊息即時送達,需要客戶端不斷輪詢伺服器來獲取新的訊息,如果對即時性的要求越高,那輪詢的時間就需要縮短,這種模式在使用者量達到一定規模後是無法承載的。為了保證訊息的高效送達,客戶端與伺服器之間的需要採用長連線機制,新訊息的送達通過伺服器主動向客戶端下推來完成。

路徑二:將已有的im群改造成聊天室,由於群具有對離線訊息關注度高的特性,所有的群訊息在成員離線時需要持久化,因而群人數越多效率越低,也正是因為這個原因,一般的im群都是有人數上限的,如果想把群改造成聊天室,就不能存離線訊息,所以這種方式看起來也不是這麼順暢。

現在市場上很多提供聊天室類服務的產品其實都是基於群的模式來實現的,所以人數上限一直是乙個難以突破的瓶頸,甚至有的服務直接使用「超大群」或「千人群」這樣一種特殊群模式來滿足使用者對聊天室場景的需求。

下面我們來看下,如果要實現乙個人數無上限的聊天室服務,需要解決哪些難題。

第三:需要應對網路故障或服務單點故障的難題。開發者**寫得再好也無法避免硬體故障或是網路故障這種不可預知的問題,在產品積累了一定的使用者量之後,如果遇到服務可用性問題會造成使用者流失;

第四:架構需要具備足夠的彈性。在使用者量級上來之後能支援快速的水平擴充套件,不會因為架構的問題需要重構;

最後:訊息投遞慢。聊天室對訊息的即時性要求非常高,同一條訊息在投遞給不同成員時需要在毫秒級的延時完成,如果訊息投遞慢了會造成訊息時間線錯亂,聊天室裡的人無法理解上下文場景。

基於這些難點,我們提出聊天室需要具備這些指標:跨平台、資料加密、高可用、易擴充套件、高併發低延遲。

網易雲信聊天室的架構

上圖是網易雲信

的聊天室分層架構。

客戶端層:處理各種裝置的相容問題,包括對ios,android,windows, web等各種開發平台的語言適配;訊息通道的管理維護,包括移動裝置上的弱網路管理,斷線重連等;保證資料安全,所有上行下行的資料報都需要加解密處理,規避資料洩露或中間人攻擊等各種安全風險。

閘道器接入層:管理大量客戶端連線,單個節點可以維護的客戶端數量在數十萬量級;處理不同型別客戶端的協議相容,由於客戶端實現技術的多樣性,導致客戶端與閘道器之間底層的資料通訊協議存在差異,需要由不同的接入網關做協議轉換;處理資料安全邏輯;跨網路的高可用邏輯,網路級別的主備(誰知道哪天網線會被藍翔的畢業生挖斷呢?);廣播訊息的高效下行分發,將收到的廣播訊息分發到所有連線在本節點上的客戶端。

路由層:作為業務層接入的中轉,同時承擔負載均衡和高可用的作用,單個業務節點處理能力達到瓶頸時更方便的擴容,路由層使業務層擴容對前置閘道器層完全透明;當乙個網路的業務集群出現網路故障時,可以切換到備用網路,保證服務可用性。

業務層:處理聊天室內的業務訊息,乙個集群內有眾多節點,節點角色相互對等,任何乙個節點的故障會使整個集群的處理能力下降,但不會引起服務的中斷,因為其他節點可以繼續接管業務資料報的處理;業務集群同樣有多個網路環境的熱備,以應對可能出現的區域性網路故障。

看完文章還是不知道怎麼做?那麼可以嘗試借用目前已有的平台或工具,現在應用需要關注的是怎麼以最快的速度抓住使用者。網易雲信m哦~

即時通訊IM

mqtt message queuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支援所有平台,幾乎可以把所有聯網物品和外部連線起來,被用來當做感測器和致動器 比如通過twitter讓房屋聯網 的通訊協議。xmp...

即時通訊 IM

1 協議選型 2 im伺服器選型 3 對協議和伺服器做相應修改,通常來說直接拿個標準協議和開源伺服器是一定不能用到生產環境的 4 保證訊息到達率,絕不丟訊息 一 協議選型 常用做im的協議 mqtt協議 ibm開發的乙個即時協議 優點 多平台 缺點 簡單的訊息協議,要自己實現好友群組 用例 推送 s...

即時通訊 im

no.1 即時通訊 作用 即時通訊 instant message,im 是指能夠即時傳送和接收 網際網路 訊息等的業務。1998年即時通訊的功能日益豐富,逐漸整合了 電子郵件 部落格 電視 遊戲和 搜尋 等多種功能。即時通訊已經發展成集交流 資訊 娛樂 搜尋 電子商務 辦公協作和企業客戶服務等為一...