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

2021-10-12 12:53:49 字數 1335 閱讀 3131

這個系列將主要介紹從服務端基於go語言從零開始構建乙個基於群聊分布式im系統。同時提供了對應的android客戶端作為功能的演示和驗證,前後端均開源,方便二次開發。

基於go語言來構建的這個群聊系統被命令為schat,即****** chat,首先需要滿足******,簡單性。

整個聊天系統以群聊為核心,所有功能均圍繞群展開,目前包括以下功能:

下面是schat的基本服務拓撲圖,如下所示:

對拓撲圖裡的程序功能及部署進行說明

disp_serv

作為星形拓撲的包分發中心,負責分派各業務程序之間的資料報**,這樣每個業務程序不需要維護其他多餘的程序通訊位址,只需要和disp程序組連線即可。一般需要與其他業務程序組互相通訊的程序組與disp_serv程序組建議通訊;disp_serv可以平行擴充套件

online_servfile_serv

靜態檔案服務程序,目前主要有以下功能:

儲存使用者頭像。

程序可以設定安全等級,作為一般的服務驗證。每個file_serv需要配置唯一的servindex作為檔案url的一部分,同時方便資料遷移而保持所有群聊檔案資料。檔案服務程序亦可平行擴充套件,更具體說明可以參考wiki

chat_serv

聊天管理程序,這裡會快取所有活躍(主要是聊天等)的群組資料,群組資料按群id hash分布到chat_serv上。同時用於同步**聊天資訊.

db_chat_serv

服務於chat_serv的db**,

dir_serv

用於connect_serv前端的負載均衡,同時作為file_serv的相關位址資訊管理

後面的章節將詳細介紹schat服務端的具體安裝及各項功能的實現

安裝部署

通訊協議

資料傳輸

從構建分布式秒殺系統聊聊分布式鎖

摘要 前言 最近懶成一坨屎,學不動系列一波接一波,大多還都是底層原理相關的。上周末抽時間重讀了周志明大濕的 jvm 高效併發部分,每讀一遍都有不同的感悟。路漫漫,藉此,把前段時間搞著玩的秒殺案例中的分布式鎖深入了解一下。最近懶成一坨屎,學不動系列一波接一波,大多還都是底層原理相關的。上周末抽時間重讀...

如何構建乙個分布式爬蟲 基礎篇

繼上篇我們談論了celery的基本知識後,本篇繼續講解如何一步步使用celery構建分布式爬蟲。這次我們抓取的物件定為celery官方文件。首先,我們新建目錄distributedspider,然後再在其中新建檔案workers.py,裡面內容如下 from celery import celery...

如何構建乙個分布式爬蟲 基礎篇

繼上篇我們談論了celery的基本知識後,本篇繼續講解如何一步步使用celery構建分布式爬蟲。這次我們抓取的物件定為celery官方文件。首先,我們新建目錄distributedspider,然後再在其中新建檔案workers.py,裡面內容如下 from celery import celery...