大家好,我是蝎子莱莱爱打怪,今天和大家分享一個我個人歷時多年設計和開發的開源項目——xzll-im分布式即時通訊系統。
(本文是我對項目中 README 的摘抄,發表此文目的為了讓更多人看到並參與到此項目中)
與IM結緣是在2022年,因為此類系統有足夠大的挑戰性,所以我對此如痴如醉。之前做過架構以及細節方面的設計,但一直沒有落地。不落地的設計不是好設計,所以有了這個項目。
端側 | 技術棧 | GitHub地址 | 描述 |
---|---|---|---|
🖥️ 伺服器端 | Java + Spring Cloud + Dubbo + Netty | xzll-im-server | 分布式IM後端服務 |
📱 客戶端 | Flutter + Dart | xzll-im-flutter-client | 跨平台移動客戶端 |
想要設計一個好的IM系統,是很有難度的,本專案將盡可能達到以下幾點:
我自己從0-1搭建了個人伺服器,所有程式均在跑在這個ESXI伺服器上。
磁碟情況:
虛擬機 (已開機6台) 情況:
整個系統採用微服務架構,主要包含以下核心服務:
節點IP | 節點角色 | 部署組件 | 端口 | 用途 |
---|---|---|---|---|
192.168.1.101 | 負載均衡+代理 | Nginx, FRP Client, IM服務(規劃) | 80/443 | 流量入口、內網穿透 |
192.168.1.102 | 監控節點 | Prometheus, Grafana, Skywalking, IM服務(規劃) | 9090/3000/8080 | 系統監控、鏈路追蹤 |
192.168.1.150 | 應用服務 | IM微服務群、Nacos、Jenkins、Docker | 8081-8085/10001/8848 | 核心業務邏輯 |
192.168.1.130 | 集群主節點 | ZK Master, RMQ Master, HBase Master, HDFS NameNode, MySQL Master | 2181/9876/3306 | 集群協調、數據管理、主數據庫 |
192.168.1.131 | 集群從節點1 | ZK Follower, RMQ Follower, HBase RegionServer, Redis, MySQL Slave | 2181/9876/6379/3306 | 數據存儲、快取、從數據庫 |
192.168.1.132 | 集群從節點2 | ZK Follower, RMQ Follower, HBase RegionServer, ES | 2181/9876/9200 | 數據存儲、搜尋 |
技術層次 | 技術選型 | 狀態 | 用途說明 |
---|---|---|---|
📱 客戶端層 | Flutter + Dart | ✅ | 跨平台移動客戶端開發 |
🌐 接入層 | Nginx | ✅ | 負載均衡、反向代理、HTTPS終結 |
🚪 網關層 | Spring Cloud Gateway | ✅ | 統一API網關、路由分發、限流熔斷 |
🔧 業務層 | Spring Boot + Spring Cloud | ✅ | 微服務應用框架、服務治理 |
🔗 通訊層 | Netty + WebSocket + Dubbo | ✅ | 長連接通訊、RPC服務調用 |
🔐 安全層 | OAuth2 + Spring Security + JWT | ✅ | 身份認證、權限控制、令牌管理 |
⚙️ 中間件層 | Nacos + ZooKeeper + RocketMQ | ✅ | 服務註冊發現、消息隊列、配置管理 |
💾 存儲層 | MySQL + HBase + Redis + ES | ✅ | 關係數據、大數據、快取、搜尋 |
📊 監控層 | Prometheus + Grafana + Skywalking | ✅/⏳ | 性能監控、鏈路追蹤、可視化 |
🚀 部署層 | Jenkins + Docker Compose | ✅ | CI/CD流水線、容器編排部署 |
分類 | 技術 | 版本 | 狀態 | 說明 |
---|---|---|---|---|
📱 前端 | Flutter | 3.24+ | ✅ | 跨平台UI框架,支持Android/iOS |
📱 前端 | Dart | 3.4.4+ | ✅ | 現代化編程語言,強類型安全 |
🖥️ 後端 | Java | 11 | ✅ | 核心編程語言 |
🖥️ 後端 | Spring Boot | 2.7.0 | ✅ | 應用開發框架 |
🖥️ 後端 | Spring Cloud | 2021.0.3 | ✅ | 微服務治理框架 |
🖥️ 後端 | Spring Cloud Alibaba | 2021.0.1.0 | ✅ | 阿里雲微服務套件 |
🖥️ 後端 | Netty | 4.1.75 | ✅ | 高性能網絡通訊框架 |
🖥️ 後端 | Dubbo | 3.0.7 | ✅ | 高性能RPC框架 |
⚙️ 中間件 | Nacos | 2.0.3 | ✅ | 微服務註冊中心、配置中心、服務發現 |
⚙️ 中間件 | RocketMQ | 5.3.0 | ✅ | 分布式消息隊列、削峰填谷 |
💾 存儲 | MySQL | 8.0.23 | ✅ | 關係型數據庫、主從複製 |
💾 存儲 | HBase | 2.6.1 | ✅ | 分布式NoSQL、海量消息存儲 |
💾 存儲 | Redis | 6.2.6 | ✅ | 記憶體數據庫、快取、分布式鎖 |
💾 存儲 | Elasticsearch | 7.17.5 | ✅ | 搜尋引擎、消息全文檢索 |
項目提供了線上測試環境,相關依賴的中間件都已經部署在伺服器上,公網可流暢連接。
直接下載此項目main分支,一鍵啟動即可:
# 1. 克隆项目
git clone https://github.com/598572/xzll-im-server.git
cd xzll-im-server
# 2. 導入IDEA項目
# 打開IntelliJ IDEA,選擇"Open",選擇項目根目錄
# 等待Maven依賴下載完成(首次可能需要5-10分鐘)
重要: 必須按以下順序啟動,確保服務依賴關係正確:
im-auth/src/main/java/com/xzll/auth/IMAuthServiceApplication.java
im-connect/im-connect-service/src/main/java/com/xzll/connect/IMConnectServiceApplication.java
im-business/im-business-service/src/main/java/com/xzll/business/IMBusinessServiceApplication.java
im-console/im-console-service/src/main/java/com/xzll/console/IMConsoleServiceImplApplication.java
im-data-sync/src/main/java/com/xzll/datasync/IMDataSyncApplication.java
# 1. 克隆Flutter客戶端
git clone https://github.com/598572/xzll-im-flutter-client.git
cd xzll-im-flutter-client
# 2. 安裝依賴
flutter pub get
# 3. 檢查Flutter環境
flutter doctor
# 4. 啟動應用(確保設備已連接)
flutter run
# 創建功能分支
git checkout -b feature/your-feature-name
# 示例分支命名
feature/group-chat # 群聊功能
feature/friend-system # 好友系統
feature/message-search # 訊息搜尋
bugfix/connection-issue # 連接問題修復
docs/api-documentation # API文檔編寫
# 格式: type(scope): description
# 功能開發
feat(auth): 添加OAuth2認證功能
feat(chat): 實現群聊訊息發送
# 問題修復
fix(connect): 修復WebSocket連接斷開問題
fix(ui): 修復聊天介面滾動卡頓
# 文檔更新
docs(api): 更新REST API文檔
docs(readme): 完善部署說明
圖例說明:
功能 | 當前進度 | 實現者 | 備註 |
---|---|---|---|
註冊 | 後端✅,前端✅ | 蝎子莱莱爱打怪 | 用戶註冊功能完整實現 |
登入 | 後端✅,前端✅ | 蝎子莱莱爱打怪 | 登入成功後按算法選取可用長連接服務 |
功能 | 當前進度 | 實現者 | 備註 |
---|---|---|---|
單聊(發文字) | 後端✅,前端⏳ | 後端(蝎子莱莱爱打怪),前端(蝎子莱莱爱打怪) | 🔥 高優先級 |
單聊(發圖片) | 後端⬜,前端⬜ | - | 🔥 高優先級 |
單聊(發語音) | 後端⬜,前端⬜ | - | 🔥 高優先級 |
單聊(撤回) | 後端✅,前端⬜ | 後端(蝎子莱莱爱打怪) | 🔥 高優先級 |
單聊(ACK確認) | 後端✅,前端⬜ | 後端(蝎子莱莱爱打怪) | 🔥 高優先級 |
功能 | 當前進度 | 備註 |
---|---|---|
群聊(方案/表設計) | ⬜ | 🚀 高級任務 - 採用寫擴散模型 |
群聊(發文字) | 後端⬜,前端⬜ | 🚀 高級任務 |
群聊(群管理) | 後端⬜,前端⬜ | 🚀 高級任務 - 創建/退出/解散/角色管理 |
功能 | 當前進度 | 備註 |
---|---|---|
最近會話列表 | 後端⏳,前端⏳ | 🔥 高優先級 |
置頂 | 後端⬜,前端⬜ | 🌟 中優先級 |
刪除會話 | 後端⬜,前端⬜ | 🌟 中優先級 |
功能 | 當前進度 | 備註 |
---|---|---|
離線訊息 | 後端✅,前端⬜ | Push✅+Pull⬜ |
客戶端斷線重連 | 前端⬜ | 🔥 高優先級 - 後端無需參與 |
聊天訊息搜尋 | 後端⬜,前端⬜ | 🌟 中優先級 - 基於ES |
訊息失敗重試 | 後端✅,前端⬜ | 🔥 高優先級 |
蝎子莱莱爱打怪
微信:15230853779
加我微信 我拉入群。
加入步驟:
這個專案承載著我對技術的熱愛和對開源精神的信仰。每一行程式碼都經過深思熟慮,每一個架構決策都有其考量。我希望這個專案不僅僅是一個IM系統,更是一個學習和交流的平台。
如果你對分布式系統、即時通訊、微服務架構感興趣,或者想要參與開源項目,歡迎加入我們!無論你是資深開發者還是初學者,都能在這裡找到適合自己的任務。
讓我們一起打造優秀的開源IM系統! 🚀
如果這個專案對你有幫助,請給個⭐Star支持一下!