日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IM即时通讯:如何跳出传统思维来设计聊天室架构?

發(fā)布時間:2025/3/8 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IM即时通讯:如何跳出传统思维来设计聊天室架构? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

因為視頻直播業(yè)務的大規(guī)模擴張,聊天室這種功能在最近幾年又火了起來。本篇文章將會重點挑選聊天室這個典型場景,和大家分享一下網(wǎng)易云信在實現(xiàn)這個功能時是如何做架構(gòu)設計的。

?

相關推薦閱讀
幾十萬人同時在線的直播間聊天,如何設計服務端架構(gòu)?

高并發(fā)IM系統(tǒng)架構(gòu)優(yōu)化實踐

?

常見的虛擬社群

聊天室的應用場景非常廣,除了傳統(tǒng)的圖文聊天外,時下流行的視頻彈幕、在線秀場、在線教育、游戲互動等各式各樣產(chǎn)品中都有類似的應用場景。

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

聊天室跟普通的IM群(微信群,QQ群等)相比最大的不同點在于它是一個比較開放的虛擬組織。我們可以將聊天室比喻成一個廣場,廣場是開放無邊界的,所有的人都可以隨進隨出,而群就像一個房間,是一個有邊界有容量上限的私密組織,并且進入這個房間需要一定條件,一般是主動申請加入或被邀請加入。聊天室對比BBS論壇這種虛擬組織來說,它既具有了IM群消息即時送達的特性又有論壇參與人數(shù)無上限的特性。

?

聊天室關鍵技術和難點

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

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

路徑一:將論壇架構(gòu)改造成聊天室,首先需要提高消息送達的即時性,由于論壇都是基于HTTP協(xié)議的,為了保證消息即時送達,需要客戶端不斷輪詢服務器來獲取新的消息,如果對即時性的要求越高,那輪詢的時間就需要縮短,這種模式在用戶量達到一定規(guī)模后是無法承載的。為了保證消息的高效送達,客戶端與服務器之間的需要采用長連接機制,新消息的送達通過服務器主動向客戶端下推來完成。

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

現(xiàn)在市場上很多提供聊天室類服務的產(chǎn)品其實都是基于群的模式來實現(xiàn)的,所以人數(shù)上限一直是一個難以突破的瓶頸,甚至有的服務直接使用“超大群”或“千人群”這樣一種特殊群模式來滿足用戶對聊天室場景的需求。

下面我們來看下,如果要實現(xiàn)一個人數(shù)無上限的聊天室服務,需要解決哪些難題。

首先:客戶端多樣性。近幾年來移動互聯(lián)網(wǎng)發(fā)展得非常快,現(xiàn)在推出的APP一般都需要同時具備iOS版、安卓版和Web版、PC版等不同的版本,跨平臺的開發(fā)需求一直是攔在創(chuàng)業(yè)團隊面前的一座大山;

第二:數(shù)據(jù)安全保障。當前的網(wǎng)絡環(huán)境異常復雜,我們的APP在客戶端與服務器之間的數(shù)據(jù)通信都暴露在復雜的公網(wǎng)環(huán)境中,消息經(jīng)過哪些節(jié)點,中間有沒有被抓包,數(shù)據(jù)是否被惡意采集,這些問題普通用戶開和發(fā)者都容易忽略。如果數(shù)據(jù)通信過程中忽視了安全需求,很容易造成用戶數(shù)據(jù)的泄露,數(shù)據(jù)的安全保障對于產(chǎn)品而言也很重要;

第三:需要應對網(wǎng)絡故障或服務單點故障的難題。開發(fā)者代碼寫得再好也無法避免硬件故障或是網(wǎng)絡故障這種不可預知的問題,在產(chǎn)品積累了一定的用戶量之后,如果遇到服務可用性問題會造成用戶流失;

第四:架構(gòu)需要具備足夠的彈性。在用戶量級上來之后能支持快速的水平擴展,不會因為架構(gòu)的問題需要重構(gòu);

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

基于這些難點,我們提出聊天室需要具備這些指標:跨平臺、數(shù)據(jù)加密、高可用、易擴展、高并發(fā)低延遲。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 網(wǎng)易云信聊天室的架構(gòu)

上圖是網(wǎng)易云信的聊天室分層架構(gòu)。

客戶端層:處理各種設備的兼容問題,包括對ios,Android,Windows, Web等各種開發(fā)平臺的語言適配;消息通道的管理維護,包括移動設備上的弱網(wǎng)絡管理,斷線重連等;保證數(shù)據(jù)安全,所有上行下行的數(shù)據(jù)包都需要加解密處理,規(guī)避數(shù)據(jù)泄露或中間人攻擊等各種安全風險。

網(wǎng)關接入層:管理大量客戶端連接,單個節(jié)點可以維護的客戶端數(shù)量在數(shù)十萬量級;處理不同類型客戶端的協(xié)議兼容,由于客戶端實現(xiàn)技術的多樣性,導致客戶端與網(wǎng)關之間底層的數(shù)據(jù)通信協(xié)議存在差異,需要由不同的接入網(wǎng)關做協(xié)議轉(zhuǎn)換;處理數(shù)據(jù)安全邏輯;跨網(wǎng)絡的高可用邏輯,網(wǎng)絡級別的主備(誰知道哪天網(wǎng)線會被藍翔的畢業(yè)生挖斷呢?);廣播消息的高效下行分發(fā),將收到的廣播消息分發(fā)到所有連接在本節(jié)點上的客戶端。

路由層:作為業(yè)務層接入的中轉(zhuǎn),同時承擔負載均衡和高可用的作用,單個業(yè)務節(jié)點處理能力達到瓶頸時更方便的擴容,路由層使業(yè)務層擴容對前置網(wǎng)關層完全透明;當一個網(wǎng)絡的業(yè)務集群出現(xiàn)網(wǎng)絡故障時,可以切換到備用網(wǎng)絡,保證服務可用性。

業(yè)務層:處理聊天室內(nèi)的業(yè)務消息,一個集群內(nèi)有眾多節(jié)點,節(jié)點角色相互對等,任何一個節(jié)點的故障會使整個集群的處理能力下降,但不會引起服務的中斷,因為其他節(jié)點可以繼續(xù)接管業(yè)務數(shù)據(jù)包的處理;業(yè)務集群同樣有多個網(wǎng)絡環(huán)境的熱備,以應對可能出現(xiàn)的區(qū)域性網(wǎng)絡故障。

?

看完文章還是不知道怎么做?那么可以嘗試借用目前已有的平臺或工具,現(xiàn)在應用需要關注的是怎么以最快的速度抓住用戶。網(wǎng)易云信是一個面對開發(fā)者的很好的IM云平臺。十余年的研發(fā)積累,使其在即時通訊技術方面處于全國領先水平。網(wǎng)易云信至今已申請了60余項IM專利,遠超市場同類產(chǎn)品。歡迎大家與我們討論IM技術,也歡迎大家多多關注網(wǎng)易云信。

另外,想要獲取更多產(chǎn)品干貨、技術干貨,記得關注網(wǎng)易云信博客哦~

總結(jié)

以上是生活随笔為你收集整理的IM即时通讯:如何跳出传统思维来设计聊天室架构?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。