設計乙個高併發IM即時通訊軟體的思路要點

2021-05-26 18:45:01 字數 752 閱讀 5989

假如要我設計乙個qq,訪問量在百萬級別併發。

大致功能點:

1、上線通知

2、群的訊息顯示

3、傳送訊息

4、良好擴充套件性。增加使用者能直接通過增加機器解決

5、穩定性

6、高效能

相關資料效能。

1、單個節點能支援一萬左右的使用者登入

2、使用mysql資料庫儲存使用者資訊

處理策略:

1、資料庫上如果是百萬級別,可以做表分割槽處理。可以使用hash分割槽處理成100分割槽表。保證查詢速度

2、在伺服器端建立100個hashset,每個hashset建立大小為10000,分配到100個伺服器上。按照使用者登入後取得的id與這100個hash建立乙個對應關係,保證指定的使用者id只能在乙個hash上進行註冊

3、上線通知:註冊後查詢當前使用者的好友以及群,逐個通知高亮顯示

4、群的訊息顯示:傳送訊息後,查詢群的好友,逐個傳送提示訊息

5、下線通知:退出後,執行如上步驟,逐個傳送退出訊息

6、傳送訊息:傳送訊息給指定好友,根據好友的id找到對應的伺服器和hash,然後做訊息推送

7、擴充套件性:每增加10000個客戶,增加一組hash,增加乙個伺服器。如果超過100萬的使用者,可以做1000個大小的hash雜湊

8、穩定性:通過單個hash節點的負載完成

9、可以擴充套件使用者的地區屬性以及是否活躍的屬性,建立兩組hash雜湊。將活躍和非活躍使用者推送到不同的雜湊伺服器上。也可以通過地區屬性將使用者動態調整到不同的雜湊伺服器上。

即時通訊軟體設計 一

做一款軟體,首先需要明確的不是你是單機的還是分布式的,cs的還是bs的。這些都是後話。第乙個遇到的問題是這款軟體要實現什麼功能,也即是市場以及設計者開發者對於這款軟體的需求預期是什麼。因為即時通訊軟體是比較成熟的了。所以功能就很好列出來。對於功能,最實惠一目了然的描述方法就是用例圖了。不過悲劇的是公...

IM即時通訊設計技術點總結

與傳統的c s b s架構不同,im架構是c s c架構的 im系統最重要的指標就是實時性 可靠性。如何保證訊息的可靠投遞 ack響應機制,超時 重傳 確認 去重的機制保證訊息的可靠投遞 訊息已讀未讀狀態 1 擴散寫方式 直接更新訊息表中的read status 2 擴散讀方式 根據ack回執更新訊...

如何實現乙個可靠的IM即時通訊應用

目前的im即時應用很多,可以有以下幾種思路 假如你有伺服器,可以採用多個客戶端連線到伺服器上,伺服器進行訊息 使用長連線的方式。可以採用xmpp協議,伺服器可以參考開源openfire。假如你沒有伺服器,可以借助第三方的im平台,通過客戶端連線到平台上,讓平台代為 訊息。這個的優勢是,不用自己開發維...