【C++】: C++基于微服务的即时通讯系统(1)

🧩 一、项目简介

这是一个基于 C++ 开发的聊天室后台服务器系统 ,采用微服务架构,支持用户注册、登录、好友管理、消息收发、文件上传下载、语音转文字等功能。

📦 代码仓库:
https://gitee.com/bitedu-tech/cpp-chatsystem


🧩 二、功能模块概览

1. 用户相关

  • 用户名/手机号注册与登录
  • 短信验证码获取
  • 用户信息获取与修改(头像、昵称、签名、手机号)

2. 好友相关

  • 好友列表获取
  • 搜索用户、发送好友申请
  • 处理好友申请(同意/拒绝)
  • 删除好友

3. 聊天相关

  • 获取聊天会话列表(单聊/群聊)
  • 创建多人会话
  • 获取群成员列表
  • 发送消息(文字、图片、文件、语音)
  • 获取历史消息(最近N条、按时间段、关键词搜索)

4. 文件相关

  • 单文件/多文件上传与下载
  • 头像、图片、语音文件存储

5. 语音识别

  • 将语音消息转换为文字

🧩 三、微服务拆分

服务名称 功能描述
🚪 网关服务 接收客户端请求,鉴权,分发到子服务
👤 用户管理 用户注册、登录、信息修改
👥 好友管理 好友列表、申请、处理、搜索、会话管理
📁 文件管理 文件上传、下载、存储
💬 消息管理 消息存储、历史消息、消息搜索
🔁 转发管理 消息转发、目标用户识别
🎤 语音转换 调用语音识别SDK,语音转文字

🧩 四、通信方式

1. HTTP 通信

  • 用于客户端主动请求(如登录、发消息、上传文件)
  • 使用 Protobuf 格式传输数据

2. WebSocket 通信

  • 用于服务端主动推送(如新消息、好友申请通知)
  • 客户端建立长连接并发送身份验证

🧩 五、使用的技术栈

类别 技术/框架
网络通信 brpc, cpp-httplib, websocketpp
序列化 protobuf
数据库 MySQL(业务数据), Redis(会话管理)
消息队列 RabbitMQ
搜索存储 Elasticsearch(消息搜索)
日志 spdlog
测试 gtest
部署 Docker, CMake
云服务 百度语音识别、阿里云短信

🧩 六、部分接口定义(Protobuf示例)

1. 用户注册请求

cpp 复制代码
message UserRegisterReq {
    string request_id = 1;
    string nickname = 2;
    string password = 3;
    string verify_code_id = 4;
    string verify_code = 5;
}

2. 发送消息请求

cpp 复制代码
message NewMessageReq {
    string request_id = 1;
    string chat_session_id = 4;
    MessageContent message = 5;
}

3. 文件上传请求

cpp 复制代码
message PutSingleFileReq {
    string request_id = 1;
    FileUploadData file_data = 4;
}

🧩 七、服务发现与注册

每个子服务(如用户服务、好友服务)在启动时向 Etcd 注册自己的地址,网关通过服务名称(如 /service/user)发现可用服务实例。


🧩 八、总结

该项目是一个功能完整、架构清晰的分布式聊天系统 ,涵盖了从用户管理到实时通信、文件处理、语音识别等多个方面,适合学习C++服务端开发微服务架构实时通信系统的设计与实现。

相关推荐
时见先生7 小时前
Python库和conda搭建虚拟环境
开发语言·人工智能·python·自然语言处理·conda
a努力。7 小时前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
Yvonne爱编码7 小时前
Java 四大内部类全解析:从设计本质到实战应用
java·开发语言·python
wqwqweee7 小时前
Flutter for OpenHarmony 看书管理记录App实战:搜索功能实现
开发语言·javascript·python·flutter·harmonyos
yongui478348 小时前
基于MATLAB的NALM锁模光纤激光器仿真实现
开发语言·matlab
-To be number.wan9 小时前
Python数据分析:numpy数值计算基础
开发语言·python·数据分析
imX2G9 小时前
爆破小游戏2.0
c++
Cx330❀9 小时前
【优选算法必刷100题】第41-42题(模拟):Z 字形变换,外观数列
c++·算法
Cx330❀10 小时前
【优选算法必刷100题】第038题(位运算):消失的两个数字
开发语言·c++·算法·leetcode·面试
Loo国昌10 小时前
深入理解 FastAPI:Python高性能API框架的完整指南
开发语言·人工智能·后端·python·langchain·fastapi