系統整體架構設計
本文繼續探討基於 TCP/IP 協議的局域網多用戶即時通信系統的實現方案。系統採用模組化設計,整體架構劃分為三大核心程序模組:
- 註冊/登錄服務器:專責用戶帳號註冊、身份驗證登錄及數據庫管理。
- 通信服務器:負責訊息轉發、在線用戶狀態維護及共享數據結構管理。
- 用戶端程序:提供註冊、登錄、好友列表、即時通訊等用戶交互界面。
為何將服務器拆分為兩部分?
這是基於系統擴展性與安全性的權衡:
- 解耦業務邏輯:註冊/登錄屬於低頻、高安全性操作;通信轉發屬於高頻、高併發操作。分離後可針對不同特性優化資源分配。
- 保護核心通信節點:只有通過身份驗證的合法用戶,才能建立與通信服務器的連接,有效阻擋未授權訪問對核心轉發邏輯的衝擊。
- 提升併發承載能力:註冊/登錄服務器可部署在輕量級節點,通信服務器可獨立擴展為叢集,支撐更大規模用戶在線。
通信任務流程詳解
用戶端完整的業務流程如下:
- 用戶註冊:客戶端向註冊/登錄服務器提交註冊信息(用戶名、密碼等),服務器寫入數據庫並返回結果。
- 用戶登錄:客戶端提交憑證,服務器核對數據庫,驗證成功後返回登錄成功標識及通信服務器地址/端口。
- 建立通信連接:客戶端攜帶驗證憑證連接通信服務器,進入在線狀態,開始收發訊息。
註冊/登錄服務器邏輯
服務器接收數據包後,首先判斷業務類型:
- 註冊請求:按預定格式寫入數據庫。任何異常(如用戶名衝突、寫入失敗)均返回註冊失敗,提示用戶重試。
- 登錄請求:提取用戶名與 ID,與數據庫比對。存在則返回登錄成功及通信服務器信息;否則返回失敗。
通信服務器核心職責
通信服務器的核心是訊息路由轉發。其工作機制:
- 接收發送方客戶端的數據包。
- 解析數據包中的目標用戶標識。
- 在共享數據結構中查找目標用戶對應的連接上下文。
- 利用多線程機制,將數據異步發送給目標用戶的發送線程。
下文將分三部分深入剖析各模組的具體實現細節。