IM项目的整体架构

目录

1.引言

2.项目架构

3.使用到的框架/库

4.结语


1.引言

这个项目会涉及到不少的第三方库或者中间件,很能锻炼人。在开始编写项目代码之前,首先对整体的架构有个了解。

2.项目架构

这个项目采用的是微服务架构,整体上分为七个子服务。分别是:

  1. 用户管理子服务: 主要用来管理用户数据,包括用户的登录注册、信息查询、 修改用户信息(比如头像、昵称、签名等)。
  2. 好友管理子服务:主要用来管理好友数据和聊天会话数据,包括添加好友、删除好友、创建聊天会话、删除聊天会话、获取聊天会话成员等操作。
  3. 文件管理子服务:主要用来管理系统中文件类型的数据,比如用户的头像、文件类型的消息等,提供单文件的上传和下载接口和多文件的上传和下载接口。
  4. 消息管理子服务:主要用来管理用户的消息,包括历史消息的获取、查询、持久化保存等。
  5. 转发管理子服务:主要用来告诉网关子服务消息的转发对象,同时将消息封装,添加必要信息后发送到消息队列,供消息管理子服务消费。
  6. 语音识别子服务:调用百度的语音识别SDK,将语音转换成文字。
  7. 网关子服务:主要用来和客户端进行直接交互,将客户端的请求转发到对应的子服务上进行处理,然后将处理结果返回给客户端。

3.使用到的框架/库

**gflags:**一个由谷歌开发的命令行参数解析库,主要用于解析程序运行时的命令行参数。

**gtests:**由谷歌开发的单元测试框架,用于单元测试。

**spdlog:**一个高性能的日志库,在项目中用于日志输出,但是由于日志输出没有带上文件名和行号,不好定位错误代码,因此在项目中封装了再使用。

**protobuf:**语言无关、平台无关的序列化协议。用于结构化数据的序列化和反序列化,相比于XML、JSON等格式,具有更小的体积、更快的速度、更强的兼容性。

**brpc:**百度研发的高性能RPC框架,具有高并发、低延迟的特性。

**Redis:**高性能的内存级数据库,项目中用于存储和管理用户的登录会话。

**MySQL:**关系型数据库,用于项目中业务数据的存储。

**ODB:**一个C++的对象关系映射系统,将C++类映射到数据库表,类的成员变量映射到表的字段。对象的创建、修改、查询、删除操作自动转换为对应的SQL语句。

**etcd:**一个开源的分布式存储系统,可以为存储的键值设置租约和续约,项目中用于搭建注册中心。

**cpp-httplib:**用于搭建HTTP服务器------接收客户端的HTTP请求。

**WebSocketpp:**用于搭建WebSocket服务器------和客户端之间建立持久化连接,并且服务器可以主动推送消息给客户端。

**语音云平台:**调用百度的语音识别SDK。

**短信云平台:**由于政策限制,采用固定的验证码。

**CMake:**项目构建工具。

**Docker:**项目部署工具。

4.结语

路漫漫其修远兮,吾将上下而求索!


完

相关推荐
深圳行云创新1 小时前
智能体架构之争:单Agent加Skills,还是多加几个Agent
人工智能·架构·软件工程
这个DBA有点耶1 小时前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
FII工业富联科技服务3 小时前
工业智能体技术架构解析:六级部署、核心模块与制造场景实践
人工智能·架构·制造
代码山河5 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
天远API6 小时前
零信任架构实战:基于天远租凭分期报告构建自动化智慧租房免押分期履约评估网关
运维·人工智能·架构·自动化
视频技术分享7 小时前
远程会诊产品设计复盘:音视频架构拆解与四大避坑
架构·音视频
Flynn Liang7 小时前
Spring AI 上生产:限流熔断、密钥与成本治理、私有化/混合部署、降级与 Prompt 灰度架构全解
人工智能·spring·架构·高可用·springai·成本治理·生产架构
夜雪一千8 小时前
Qwen3.8-Flash-Next 详细介绍:Qwen4架构先行版,125B总参、6B激活的稀疏MoE多模态模型
架构
FPGA小迷弟9 小时前
FPGA 千兆以太网帧格式全解:从 IEEE 802.3 帧结构到 Verilog 收发实现
人工智能·5g·fpga开发·架构·硬件架构