WeChat 聊天系统是一个基于分布式架构的即时通讯应用,包含服务器集群和跨平台客户端。该系统模仿了微信的核心功能,采用现代C++技术栈构建,支持用户注册、登录、好友管理、即时消息通信等功能。项目采用微服务架构设计,确保系统的高可用性、可扩展性和可维护性。
graph TD
WeChat["WeChat系统架构"]
%% 主要组件
Server["服务器集群"]
Storage["数据存储"]
Client["客户端应用"]
%% 服务器集群子组件
GateServer["GateServer (网关服务器)"]
VerifyServer["VerifyServer (验证服务器)"]
StatusServer["StatusServer (状态服务器)"]
ChatServer["ChatServer (聊天服务器)"]
%% 数据存储子组件
MySQL["MySQL"]
Redis["Redis"]
%% 客户端子组件
QtClient["Qt客户端"]
Login["登录/注册模块"]
ChatUI["聊天界面"]
FriendManage["好友管理"]
MessageHistory["消息历史查询"]
%% 服务器功能
GateServerFunc["处理HTTP请求,验证码生成,用户注册登录"]
VerifyServerFunc["提供身份验证服务,验证码校验"]
StatusServerFunc["管理用户状态,ChatServer分配"]
ChatServerFunc["处理实时消息,好友管理,聊天历史"]
%% 数据存储功能
MySQLFunc["用户信息,好友关系,消息历史"]
RedisFunc["令牌存储,验证码缓存,临时状态"]
%% 连接关系
WeChat --> Server
WeChat --> Storage
WeChat --> Client
%% 服务器连接
Server --> GateServer
Server --> VerifyServer
Server --> StatusServer
Server --> ChatServer
GateServer --> GateServerFunc
VerifyServer --> VerifyServerFunc
StatusServer --> StatusServerFunc
ChatServer --> ChatServerFunc
%% 数据存储连接
Storage --> MySQL
Storage --> Redis
MySQL --> MySQLFunc
Redis --> RedisFunc
%% 客户端连接
Client --> QtClient
QtClient --> Login
QtClient --> ChatUI
QtClient --> FriendManage
QtClient --> MessageHistory
WeChat 系统采用微服务架构,将不同功能拆分为独立的服务,通过gRPC和HTTP进行通信:
-
GateServer - 网关服务器
- 处理HTTP请求
- 用户注册与登录
- 验证码生成与发送
- 使用Boost.Beast实现HTTP服务器
-
VerifyServer - 验证服务器
- 验证码验证
- 提供gRPC接口供其他服务调用
- Redis缓存验证码
-
StatusServer - 状态服务器
- 用户状态管理
- ChatServer负载均衡
- Token认证与验证
- gRPC服务提供
-
ChatServer - 聊天服务器
- 实时消息处理
- 好友关系管理
- 消息历史记录存储
- 使用Boost.Asio实现TCP长连接
- 服务间通信:gRPC (Protobuf)
- 客户端与网关通信:HTTP
- 客户端与聊天服务器通信:自定义TCP协议
- MySQL:存储用户信息、好友关系、消息历史等持久化数据
- Redis:存储验证码、Token、临时会话信息等需要高速访问的数据
客户端采用Qt框架开发,实现跨平台支持:
- 使用Qt的信号槽机制实现异步通信
- 采用单例模式管理全局资源
- 基于TCP长连接实现消息的实时收发
- HTTP请求处理用户认证和注册
- 账号注册(用户名、密码、邮箱)
- 邮箱验证码验证
- 账号/邮箱登录
- 密码重置功能
- 搜索用户
- 发送好友请求
- 接受/拒绝好友申请
- 好友列表显示
- 实时文本消息收发
- 消息历史记录查询
- 好友在线状态显示
- 未读消息提醒
- 聊天服务器负载均衡
- 用户身份验证与授权
- 数据安全性保障
- 分布式服务自动发现与恢复
- 高性能架构:采用C++开发,结合Boost.Asio实现高并发处理能力
- 分布式设计:服务解耦,单个服务故障不影响整体系统运行
- 可扩展性:各服务可独立扩展,根据负载动态调整
- 数据安全:密码加密存储,通信加密,令牌验证
- 代码优化:使用现代C++特性,设计模式应用,提高代码质量
- 实时通信:基于TCP长连接,保证消息实时性和可靠性
- 跨平台支持:Qt客户端支持Windows、Linux、MacOS
- 用户体验:简洁直观的界面设计,操作流程优化
- 功能完整:覆盖即时通讯系统的核心功能
- 鲁棒性:完善的错误处理和异常机制
- C++ 17
- Boost (Beast, Asio)
- gRPC & Protobuf
- MySQL Connector/C++
- Redis (hiredis)
- nlohmann/json
- Qt 6
- C++
- QSS样式表
- Qt网络模块
- CMake
- Ninja
- vcpkg (依赖管理)
如有任何问题或建议,欢迎提交 Issue 或通过以下方式联系我:
- Email: 1989601704@qq.com

