程序聚合 软件案例 c++基于微服务的即时通讯系统

c++基于微服务的即时通讯系统

2026-01-16 14:52:52
行业:社交
载体:Windows应用
技术:C++、Qt、Docker、MySQL

业务和功能介绍

在聊天室项目的功能设计中,包含了以下功能:
1. 用户注册:用户输入用户名(昵称),以及密码进行用户名的注册
2. 用户登录:用户通过用户名和密码进行登录
3. 短信验证码获取:当用户通过手机号注册或登录的时候,需要获取短信验证码
4. 手机号注册:用户输入手机号和短信验证码进行手机号的用户注册
5. 手机号登录:用户输入手机号和短信验证码进行手机号的用户登录
6. 用户信息获取:当用户登录之后,获取个人信息进行展示
7. 头像修改:设置用户头像
8. 昵称修改:设置用户昵称
9. 签名修改:设置用户签名
10. 手机号修改:修改用户的绑定手机号
11. 好友列表的获取:当用户登录成功之后,获取自己好友列表进行展示
12. 申请好友:搜索用户之后,点击申请好友,向对方发送好友申请
13. 待处理申请的获取:当用户登录成功之后,会获取离线的好友申请请求以待处理
14. 好友申请的处理:针对收到的好友申请进行同意/拒绝的处理
15. 删除好友:删除当前好友列表中的好友
16. 用户搜索:可以进行用户的搜索用于申请好友
17. 聊天会话列表的获取:每个单人/多人聊天都有一个聊天会话,在登录成功后可以
获取聊天会话,查看历史的消息以及对方的各项信息
18. 多人聊天会话的创建:单人聊天会话在对方同意好友时创建,而多人会话需要调
用该接口进行手动创建
19. 聊天成员列表的获取:多人聊天会话中,可以点击查看群成员按钮,查看群成员
信息
20. 发送聊天消息:在聊天框输入内容后点击发送,则向服务器发送消息聊天请求
21. 获取历史消息:
a. 获取最近 N 条消息:用于登录成功后,点击对方头像打开聊天框时显示最近的消息
b. 获取指定时间段内的消息:用户可以进行聊天消息的按时间搜索
22. 消息搜索:用户可以进行聊天消息的关键字搜索
23. 文件的上传
a. 单个文件的上传:这个接口基本用于后台部分,收到文件消息后将文件数据转发给文 件子服务进行存储
b. 多个文件的上传:这个接口基本用于后台部分,收到文件消息后将文件数据转发给文件子服务进行存储
24. 文件的下载
a. 单个文件的下载:在后台用于获取用户头像文件数据,以及客户端用于获取文件/语音/图片消息的文件数据
b. 多个文件的下载:在后台用于大批量获取用户头像数据(比如获取用户列表的时候),以及前端的批量文件下载
25. 语音消息的文字转换:客户端进行语音消息的文字转换。
除了以上的与客户端之间交互的功能之外,还包含一些服务器后台内部所需的功能:
1. 消息的存储:用于将文本消息进行存储起来,以便于进行消息的搜索,以及离线
消息的存储。
2. 文件的存储:用于存储用户的头像文件,以及消息中的文件/图片/语音文件数据。
3. 各项用户,好友,会话数据的存储管理

项目实现

基于 C++ 实现⼀个客⼾端-服务器结构的聊天程序.
• 客⼾端: 基于 Qt 实现.
• 服务器: 基于 C++ 的分布式微服务架构 + 主流后端组件.
该项⽬在设计的时候采⽤微服务框架设计,指将⼀个⼤的业务拆分称为多个⼦业务,分别在多台不同的机器节点上提供对应的服务,由⽹关服务统⼀接收多个客⼾端的各种不同请求,然后将请求分发到不同的⼦服务节点上进⾏处理,获取响应后,再转发给客⼾端。
技术要点:
gflags:针对程序运⾏所需的运⾏参数解析/配置⽂件解析框架。
gtest:针对程序编写到⼀定阶段后,进⾏的单元测试框架。
spdlog:针对项⽬中进⾏⽇志输出的框架。
protobuf:针对项⽬中的⽹络通信数据所采⽤的序列化和反序列化框架。
brpc:项⽬中的rpc调⽤使⽤的框架。
redis:⾼性能键值存储系统,⽤于项⽬中进⾏⽤⼾登录会话信息的存储管理。
mysql:关系型数据库系统,⽤于项⽬中的业务数据的存储管理。
ODB:项⽬中mysql数据库操作的ORM框架(Object-Relational Mapping,对象关系映射)
Etcd:分布式、⾼可⽤的⼀致性键值存储系统,⽤于项⽬中实现服务注册与发现功能的框架。
cpp-httplib:⽤于搭建简单轻量HTTP服务器的框架。
websocketpp:⽤于搭建Websocket服务器的框架。
rabbitMQ:⽤于搭建消息队列服务器,⽤于项⽬中持久化消息的转发消费。
elasticsearch:⽤于搭建⽂档存储/搜索服务器,⽤于项⽬中历史消息的存储管理
语⾳云平台:采⽤百度语⾳识别技术云平台实现语⾳转⽂字功能。
短信云平台:采⽤阿⾥云短信云平台实现⼿机短信验证码通知功能。
cmake:项⽬⼯程的构建⼯具。
docker:项⽬⼯程的⼀键式部署⼯具。
服务拆分:
⼊⼝⽹关服务器:主要⽤于与客⼾端直接交互,接收客⼾端的各项请求提供服务。
⽤⼾管理⼦服务:主要⽤于管理⽤⼾的数据,以及关于⽤⼾信息的各项操作。
好友管理⼦服务:主要⽤于管理好友与聊天会话管理相关的数据与操作。
转发管理⼦服务:主要⽤于封装消息进⾏转存,然后告诉⽹关服务器⼀条消息应该发给谁。
消息存储⼦服务:主要⽤于进⾏消息元信息的存储与搜索功能。
⽂件管理⼦服务:主要⽤于管理系统中⽂件类型数据的存储,⽐如⽤⼾头像,⽂件消息等。
语⾳转换⼦服务:⽤于调⽤语⾳识别SDK,进⾏语⾳识别,将语⾳转换为⽂字。
项目完成说明:
本项目由本人独立完成。

示例图片视频


橙子师兄
30天前活跃
方向: 后端-C++、
交付率:100.00%
相似推荐
“海防杯” 国防知识竞赛初赛线上答题系统-海防杯国防知识竞赛答题系统
【项目背景】 应项目承办方邀请,为2023年(第32届)和2024年(第33届)上海某区“海防杯”国防知识竞赛初赛主导设计并实现了一套B/S架构的内网竞赛答题系统,替代传统纸质答题模式,实现无纸化竞赛,显著提升组织效率,保障考试公平性、数据保密性及赛场秩序。系统支持多题型管理、考生批量导入、考试规则灵活配置、自动/手动判卷及成绩导出等核心能力,适配内网环境,确保数据安全隔离。 【业务流程】 管理员创建试卷与考试任务,导入考生信息;考生在指定时间内登录内网系统参与答题,系统按规则自动判卷或提交后由管理员手动判卷;最终导出考生成绩及答题详情,用于竞赛统计与公示。
springboot和vue3的写字楼物业管理数字化平台
立项背景与目标:本项目为写字楼物业管理数字化平台,旨在替代传统线下台账和分散表格管理方式,解决企业入驻信息分散、合同与缴费跟踪不及时、访客与停车记录难追溯、管理权限边界不清晰等问题。系统目标是建立统一的数据中台和标准化业务流程,实现“可视化运营、可追踪审批、可统计分析、可权限管控”,提升物业日常运营效率与服务质量,降低人工沟通和管理成本。 软件功能与核心模块:系统包含仪表盘、企业管理、楼层/空间管理、合同管理、缴费管理、访客管理、停车管理、公告通知、管理员管理与个人中心等模块。仪表盘展示企业数量、空间使用率、欠缴金额、访客统计、到期合同提醒等核心指标;企业管理维护企业档案与入驻信息;空间管理维护楼层、房间、面积及使用状态;合同管理支持合同新增、续签、状态流转和到期预警;缴费管理支持费用类型、应缴实缴、状态标识和记录追踪;访客/停车模块支持登记、状态管理与查询;管理员模块支持角色与权限配置,保障系统安全可控。 业务流程与功能路径:管理员登录后进入仪表盘查看整体运营数据;在企业管理录入或维护企业信息,并在空间管理中分配楼层与房间;企业签约后在合同管理录入合同并自动进入履约周期;系统按周期在缴费管理生成或维护应缴记录并跟踪实缴状态;外部人员来访时通过访客管理登记并关联被访企业/人员,车辆信息在停车管理登记并同步状态;公告通知用于发布缴费、安全或运营类通知;管理员管理模块负责账号、角色和权限维护。整体形成“基础档案维护→业务办理→状态跟踪→统计预警→运营优化”的闭环管理流程。
IBMS智慧建筑
IBMS智慧建筑用来实现人,设备,建筑之间的互联互通,并能实时更新,即时显示,结合数据分析,性能分析等方法,提供一个全面的可视化运营平台,集成接入公司内部的能源管理系统以及第三方子系统,分为四个一级模块,系统管理,报警管理,接入管理,综合监控平台管理,每个一级模块下又有多个子级模块。
公司内部项目管理系统
项目面向“调研—需求分析—任务落地”全流程,解决人工整理效率低、口径不一致、追溯困难的问题。核心目标是把调研内容结构化为“片段/功能/技术”需求,并形成可执行任务建议。功能模块包含调研记录与附件管理、AI 分析与拆分、需求清单与详情、需求确认与状态管理、任务建议生成与任务列表、项目与模块管理等。业务路径为:创建调研→上传内容→触发分析→产出需求清单→人工调整与确认→生成任务建议→任务列表落地。后续扩展任务安排
售后管理系统
企业管理产品售后的各项服务流程,包括客户咨询、维修请求、退换货处理、投诉管理、满意度调查、保修期管理、售后服务团队的工作分配与跟踪等。一个高效的售后管理系统能够提升客户满意度,增强企业的市场竞争力
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服