IM系統架構設計之淺見

2021-09-08 17:50:46 字數 997 閱讀 3209

**:

背景:除去大名鼎鼎的qq這款即時聊天工具,還有許多細分行業的im,比如**阿里旺旺、網易泡泡、yy語音......。恰巧公司 產品也要開發一款基於我 們自己行業的類im系統,很有幸我擔當了這個產品的架構師,核心**編寫、實現者。下面把我近年來從技術上我對im系統(即時訊息的傳輸,不包括語音,視 頻,檔案的傳輸)的理解和設計分享出來,淺薄之見,望大家別見笑,歡迎給出批評意見。

目前我知曉的所有im系統傳輸即時訊息無外乎使用udp、tcp、基於tcp的http這幾種協議中的一種或幾種。比如qq主要採用udp協議,msn主要採用tcp協議,而且他們也都支援http協議的**模式。更多資料,請參加這篇文章《一些常用軟體的網路埠協議分類介紹》。

我們該如何選擇呢?

tips: qq 為什麼採用 udp 協議,而不採用 tcp 協議實現?

二進位制格式?文字格式?這個話題轉到我的這篇文章《網路傳輸資料格式的選擇》,從我們當前的需求和產品週期上我覺得選擇json形式的資料協議是最好的。

架構考量:

後台架構簡化圖

架構示意圖

架構細化圖

說明對於部分業務服務:做到網路層、業務層、資料層的完全分離。首先對於tcp短連線來說不會如長連線那般消耗資源,即使後期遇到海量的併發訪問請求依然可以從容的通過負載均衡策略和資料分布式部署策略進行解決。參見我的這篇文章《服務端架構中的「閘道器伺服器」》

服務端平台及技術選型

部分熱點問題考量

系統的高可用性:(防止單點故障)

主要學習資料: 請自行google。

《basicdb的架構演變》;

IM系統架構設計之淺見

一.網路傳輸協議的選擇 目前我知曉的所有im系統傳輸即時訊息無外乎使用udp tcp 基於tcp的http這幾種協議中的一種或幾種。比如qq主要採用udp協議,msn主要採用tcp協議,而且他們也都支援http協議的 模式。更多資料,請參加這篇文章 一些常用軟體的網路埠協議分類介紹 我們該如何選擇呢...

IM系統架構設計之淺見

一.網路傳輸協議的選擇 目前我知曉的所有im系統傳輸即時訊息無外乎使用udp tcp 基於tcp的http這幾種協議中的一種或幾種。比如qq主要採用udp協議,msn主要採用tcp協議,而且他們也都支援http協議的 模式。更多資料,請參加這篇文章 一些常用軟體的網路埠協議分類介紹 我們該如何選擇呢...

系統設計之架構設計

架構設計這個詞聽的非常的多,但真正何謂架構設計呢?可能要你真的來講還真的講不太清楚,很多人都知道架構設計是對系統進行分層 分模組進行設計,但又有多少人知道這步應該怎麼去做呢,往往很多的programmer在剛進入架構設計這個領域的時候,受到以前做模組的那種影響,把自己的眼光限定到了具體的模組實現上去...