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

相关推荐
Chester_19991 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
2601_962218471 小时前
万象生鲜系统区块链溯源技术帮助生鲜企业搭建食品安全数字化体系
大数据·运维·微服务·云原生·架构
EXI-小洲2 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员3 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导3 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan3 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子3 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化3 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
m0_695251493 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
大衛說4 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习