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

相关推荐
qq_12498707531 小时前
基于微信小程序的茶叶茶具销售和管理系统(源码+论文+部署+安装)
微服务·微信小程序·小程序·毕业设计
穿西装的水獭2 小时前
python将Excel数据写进图片中
开发语言·python·excel
老友@3 小时前
Java Excel 导出:EasyExcel 使用详解
java·开发语言·excel·easyexcel·excel导出
淀粉肠kk3 小时前
【C++】map和set的使用
c++
tryCbest3 小时前
Python基础之爬虫技术(一)
开发语言·爬虫·python
hixiong1233 小时前
C# OpenCVSharp实现Hand Pose Estimation Mediapipe
开发语言·opencv·ai·c#·手势识别
集成显卡3 小时前
AI取名大师 | PM2 部署 Bun.js 应用及配置 Let‘s Encrypt 免费 HTTPS 证书
开发语言·javascript·人工智能
AI小云3 小时前
【Numpy数据运算】数组间运算
开发语言·python·numpy
是苏浙4 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法