聊天室服务端项目总体介绍
本项目是一个全栈的即时通信系统, 前端使用QT实现聊天客户端, 后端采⽤微服务框架设计, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端
拆分的微服务包含:
- 网关服务器:主要⽤于与客⼾端直接交互,接收客⼾端的各项请求提供服务。
- 用户管理子服务:主要⽤于管理⽤⼾的数据,以及关于⽤⼾信息的各项操作。
- 好友管理子服务:主要⽤于管理好友与聊天会话管理相关的数据与操作。
- 消息转发管理⼦服务:主要⽤于封装消息进⾏转存,然后告诉⽹关服务器⼀条消息应该发给谁。
- 消息存储子服务:主要⽤于进⾏消息元信息的存储与搜索功能。
- 文件管理子服务:主要⽤于管理系统中⽂件类型数据的存储,⽐如用户头像,⽂件消息等。
- 语音子服务:⽤于调⽤语⾳识别SDK,进⾏语⾳识别,将语⾳转换为⽂字
网关子服务
网关子服务负责和客户端进行交互
- 用户鉴权
网关要负责进行用户鉴权, 客户端登录成功后, 后端会返回一个会话id, 客户端以后的每次操作都要带上这个会话id, 网关每次都要检测这个会话id是否有效, 否则视为未登录,不予提供除注册/登录/验证码获取以外的所有服务 - 请求转发
这里的请求一般为HTTP请求, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端 - 消息推送
网关要主动推送一些数据, 比如用户的好友申请, 消息的到来等
用户子服务
用户管理子服务,主要用于管理用户的数据,以及关于用户信息的各项操作
- 用户注册/登录
用户输入用户名(昵称),以及密码进行用户名的注册/登录 - 短信验证码获取
用户进行手机号+验证码登录/注册时, 发送短信验证码 - 用户信息修改
修改用户的各项信息, 比如头像, 用户昵称, 用户签名, 手机号, 密码
文件子服务
文件管理子服务,主要用于管理用户的头像,以及消息中的文件存储
- 文件上传
文件的单次/批量上传, 返回文件id - 文件下载
通过文件id对文件的单次/批量下载
语音子服务
语音转换子服务,用于调用语音识别 SDK,进行语音识别,将语音转为文字后返回给网关
- 语音转文字
通过百度云的语音服务来处理
消息转发子服务
主要用于针对一条新消息内容,组织消息的 ID 以及各项所需要素,然后告诉网关服务器一条消息应该发给谁
- 获取转发列表
获取该消息应该转发到哪些会话, 除此之外,转发子服务将收到的消息,放入消息队列中,由文件子服务/消息子服务进行存储
消息储存子服务
消息管理子服务,主要用于管理消息元信息的存储
- 消息储存
对新消息进行存储 - 获取最近消息
获取最近的N条消息, 或者按照时间段获取消息 - 消息搜索
对消息进行搜索查找
好友管理子服务
主要用于管理好友和会话相关的数据与操作
- 好友列表的获取
当用户登录成功之后,获取自己好友列表进行展示 - 申请好友
搜索用户之后,点击申请好友,向对方发送好友申请 - 待处理申请的获取
当用户登录成功之后,会获取离线的好友申请请求以待处理 - 好友申请的处理
针对收到的好友申请进行同意/拒绝的处理 - 删除好友
删除当前好友列表中的好友 - 用户搜索
可以进行用户的搜索用于申请好友 - 聊天会话列表的获取
每个单人/多人聊天都有一个聊天会话,在登录成功后可以获取聊天会话,查看历史的消息以及对方的各项信息