用t io從零寫乙個像微信的IM(05) 架構設計

2021-10-13 12:38:04 字數 904 閱讀 8125

將帥無能,累死三軍;架構不行,耗死碼農。

架構之於軟體,同地基之於大廈。

地基腐則大廈塌,架構爛則軟體敗

1. 多級快取

兩級是使用較多的乙個流程,所謂兩級快取指的是本地快取和分布式快取,當本地快取沒有命中時,則去分布式快取中獲取資料;而本架構中說到了多級快取,是將本地快取又分為***之前的快取和業務資料快取。***之前的快取指的是收到請求時,直接從請求路徑中獲取快取,如果命中則直接返回;業務資料快取比較大眾,本文略過介紹

2. 協議適配/轉換

web型的客戶端,用websocket會比較自然舒服;非web型的客戶端如安卓、ios,用普通的socket會比較舒服簡單。於是伺服器就需要同時支援普通socket和websocket,為了減化業務開發,統一訊息體結構,本架構特別放置了協議介面卡和協議轉換器,用於將不同協議的packet統一成業務需要的packet。好在t-io內建了協議轉換器,也提供了埠資料共享的機制,所以在實現本架構的意圖時就變得相對簡單。

3. 流量控制

流控是每個系統必備的乙個功能了,勿用多言,實現起來並不複雜

4. 任務佇列

為了提公升系統的流暢度,很多操作都會變成非同步的,佇列成為必不可少的乙個元件

5. t-io集群

t-io企業版的集群版,已經內建了集群能力,使用起來也相當簡單,本系統做了乙個集群開關,可隨時對集群和非集群進行切換

下集預告

從零寫乙個Java WEB框架(一)

從乙個簡單的servlet專案開始起步。對每一層進行優化,然後形成乙個輕量級的框架。每一篇,都是針對專案的不足點進行優化的。專案已放上github 乙個非常基礎的servlet專案。基本功能是 對資料表 客戶表進行資料處理。例如 客戶的資料獲取 controller 層 獲取客戶端的資料 思路 通過...

從零寫乙個Java WEB框架(一)

從乙個簡單的servlet專案開始起步。對每一層進行優化,然後形成乙個輕量級的框架。每一篇,都是針對專案的不足點進行優化的。專案已放上github 乙個非常基礎的servlet專案。基本功能是 例如 客戶的資料獲取 controller 層 獲取客戶端的資料 思路 server 層中的獲取所有客戶資...

GO從零構建乙個分布式IM系統

這個系列將主要介紹從服務端基於go語言從零開始構建乙個基於群聊分布式im系統。同時提供了對應的android客戶端作為功能的演示和驗證,前後端均開源,方便二次開發。基於go語言來構建的這個群聊系統被命令為schat,即 chat,首先需要滿足 簡單性。整個聊天系統以群聊為核心,所有功能均圍繞群展開,...