這個系列將主要介紹從服務端基於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...