【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++服务端开发微服务架构实时通信系统的设计与实现。

相关推荐
快乐zbc9 小时前
【C++ 基础】:给定一个指针 p,你能判断它是否指向合法的对象吗?
c++
岁忧9 小时前
GoLang五种字符串拼接方式详解
开发语言·爬虫·golang
tyatyatya9 小时前
MATLAB基础数据类型教程:数值型/字符型/逻辑型/结构体/元胞数组全解析
开发语言·matlab
sulikey9 小时前
C++类和对象(下):初始化列表、static、友元、内部类等核心特性详解
c++·static·初始化列表·友元·匿名对象·内部类·编译器优化
心无旁骛~9 小时前
python多进程和多线程问题
开发语言·python
星云数灵9 小时前
使用Anaconda管理Python环境:安装与验证Pandas、NumPy、Matplotlib
开发语言·python·数据分析·pandas·教程·环境配置·anaconda
kaikaile199510 小时前
基于遗传算法的车辆路径问题(VRP)解决方案MATLAB实现
开发语言·人工智能·matlab
四问四不知10 小时前
Rust语言进阶(结构体)
开发语言·后端·rust
q***99410 小时前
index.php 和 php
开发语言·php
oioihoii10 小时前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++