当前位置: 首页 > news >正文

即时通信系统项目总览

聊天室服务端项目总体介绍

    本项目是一个全栈的即时通信系统, 前端使用QT实现聊天客户端, 后端采⽤微服务框架设计, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端
拆分的微服务包含:

  • 网关服务器:主要⽤于与客⼾端直接交互,接收客⼾端的各项请求提供服务。
  • 用户管理子服务:主要⽤于管理⽤⼾的数据,以及关于⽤⼾信息的各项操作。
  • 好友管理子服务:主要⽤于管理好友与聊天会话管理相关的数据与操作。
  • 消息转发管理⼦服务:主要⽤于封装消息进⾏转存,然后告诉⽹关服务器⼀条消息应该发给谁。
  • 消息存储子服务:主要⽤于进⾏消息元信息的存储与搜索功能。
  • 文件管理子服务:主要⽤于管理系统中⽂件类型数据的存储,⽐如用户头像,⽂件消息等。
  • 语音子服务:⽤于调⽤语⾳识别SDK,进⾏语⾳识别,将语⾳转换为⽂字
    项目大概

网关子服务

    网关子服务负责和客户端进行交互

  1. 用户鉴权
        网关要负责进行用户鉴权, 客户端登录成功后, 后端会返回一个会话id, 客户端以后的每次操作都要带上这个会话id, 网关每次都要检测这个会话id是否有效, 否则视为未登录,不予提供除注册/登录/验证码获取以外的所有服务
  2. 请求转发
        这里的请求一般为HTTP请求, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端
  3. 消息推送
        网关要主动推送一些数据, 比如用户的好友申请, 消息的到来等

用户子服务

    用户管理子服务,主要用于管理用户的数据,以及关于用户信息的各项操作

  1. 用户注册/登录
        用户输入用户名(昵称),以及密码进行用户名的注册/登录
  2. 短信验证码获取
        用户进行手机号+验证码登录/注册时, 发送短信验证码
  3. 用户信息修改
        修改用户的各项信息, 比如头像, 用户昵称, 用户签名, 手机号, 密码

文件子服务

    文件管理子服务,主要用于管理用户的头像,以及消息中的文件存储

  1. 文件上传
        文件的单次/批量上传, 返回文件id
  2. 文件下载
        通过文件id对文件的单次/批量下载

语音子服务

    语音转换子服务,用于调用语音识别 SDK,进行语音识别,将语音转为文字后返回给网关

  1. 语音转文字
        通过百度云的语音服务来处理

消息转发子服务

    主要用于针对一条新消息内容,组织消息的 ID 以及各项所需要素,然后告诉网关服务器一条消息应该发给谁

  1. 获取转发列表
        获取该消息应该转发到哪些会话, 除此之外,转发子服务将收到的消息,放入消息队列中,由文件子服务/消息子服务进行存储

消息储存子服务

    消息管理子服务,主要用于管理消息元信息的存储

  1. 消息储存
        对新消息进行存储
  2. 获取最近消息
        获取最近的N条消息, 或者按照时间段获取消息
  3. 消息搜索
        对消息进行搜索查找

好友管理子服务

    主要用于管理好友和会话相关的数据与操作

  1. 好友列表的获取
        当用户登录成功之后,获取自己好友列表进行展示
  2. 申请好友
        搜索用户之后,点击申请好友,向对方发送好友申请
  3. 待处理申请的获取
        当用户登录成功之后,会获取离线的好友申请请求以待处理
  4. 好友申请的处理
        针对收到的好友申请进行同意/拒绝的处理
  5. 删除好友
        删除当前好友列表中的好友
  6. 用户搜索
        可以进行用户的搜索用于申请好友
  7. 聊天会话列表的获取
        每个单人/多人聊天都有一个聊天会话,在登录成功后可以获取聊天会话,查看历史的消息以及对方的各项信息

相关文章:

即时通信系统项目总览

聊天室服务端项目总体介绍 本项目是一个全栈的即时通信系统, 前端使用QT实现聊天客户端, 后端采⽤微服务框架设计, 由网关子服务统一接收客户端的请求, 再分发到不同的子服务上处理并将结果返回给网关, 网关再将响应转发给客户端 拆分的微服务包含: 网关服务器&…...

QT获取tableview选中的行和列的值

查询数据库数据放入tableview(tableView_database)后 QSqlQueryModel* sql_model new QSqlQueryModel(this);sql_model->setQuery("select * from dxxxb_move_lot_tab");sql_model->setHeaderData(0, Qt::Horizontal, tr("id&quo…...

GDPU 人工智能 期末复习

1、python基础 2、回归、KNN、K-Means、搜索方法思想及算法实现步骤 3、知识表示基本概念 4、状态空间的相关概念、表示方法及应用 5、图搜索策略及应用 6、问题归约概念、与或图搜索、博弈树搜索与剪枝 7、决策树、贝叶斯决策算法及其应用 8、神经网络与深度学习基本概念 一、…...

编程之路,从0开始:补充篇

Hello大家好&#xff01;很高兴和大家又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《题海拾贝》、《数据结构与算法之美》 欢迎点赞&#xff0c;关注&#xff01; 这篇…...

使用缓存提升Web应用性能:从新手到高手的实践指南

引言 在现代Web开发中&#xff0c;性能优化是确保用户体验和系统稳定性的关键。使用缓存是提升网站性能的有效手段之一&#xff0c;可以显著减少数据库访问和计算开销。根据“网站优化第一定律”&#xff0c;缓存可以提升网站的响应速度&#xff0c;减少延迟&#xff0c;从而改…...

【数字电路与逻辑设计】实验一 序列检测器

文章总览&#xff1a;YuanDaiMa2048博客文章总览 【数字电路与逻辑设计】实验一 序列检测器 一、实验内容二、设计过程&#xff08;一&#xff09;作出状态图或状态表&#xff08;二&#xff09;状态化简&#xff08;三&#xff09;状态编码 三、源代码&#xff08;一&#xff…...

运动模糊效果

1、运动模糊效果 运动模糊效果&#xff0c;是一种用于 模拟真实世界中快速移动物体产生的模糊现象 的图像处理技术&#xff0c;当一个物体以较高速度移动时&#xff0c;由于人眼或摄像机的曝光时间过长&#xff0c;该物体会在图像中留下模糊的运动轨迹。这种效果游戏、动画、电…...

养老护理员培训考试题库;免费题库;大风车题库

下载链接&#xff1a;大风车题库-文件 大风车题库网站&#xff1a;大风车题库 大风车excel&#xff08;试题转excel&#xff09;&#xff1a;大风车excel...

Python-配置模块configparser使用指南

configparser 是 Python 标准库中的模块&#xff0c;用于处理配置文件&#xff08;如 .ini 文件&#xff09;。它适合管理程序的配置信息&#xff0c;比如数据库连接参数、应用程序设置等。 1. 配置文件的基本结构 配置文件通常是 .ini 格式&#xff0c;由 节&#xff08;Sec…...

C++的HDF5库将h5图像转为tif格式:szip压缩的图像也可转换

本文介绍基于C 语言的hdf5库与gdal库&#xff0c;将.h5格式的多波段HDF5图像批量转换为.tif格式的方法&#xff1b;其中&#xff0c;本方法支持对szip压缩的HDF5图像&#xff08;例如高分一号卫星遥感影像&#xff09;加以转换。 将HDF5图像批量转换为.tif格式&#xff0c;在部…...

【JAVA】Java第十三节:String类(String相关方法,以及StrinBuftrer , StringBulder相关方法)

本文详细介绍了String类以及常用的String相关方法&#xff0c;以及StrinBuftrer , StringBulder相关方法的使用&#xff0c;建议有印象即可&#xff0c;不需要都记住&#xff0c;使用时去查取即可 一、创建一个String类型的变量 我们平时创建String类型的变量一般是第一种形式…...

WordPress安装或访问时出现数据库连接错误的处理方式

一、在安装时出现数据库连接错误 1、如果数据库名称、用户名或密码错误&#xff0c;或者主机设置不正确&#xff08;如数据库服务器不是在本地localhost&#xff0c;而是在远程服务器&#xff0c;需要正确填写远程服务器的 IP 地址或域名&#xff09;&#xff0c;就会导致连接错…...

JAVA-面向对象基础

文章目录 概要封装多态抽象类接口内部类为什么需要内部类 概要 面向对象是一种编程范式或设计哲学&#xff0c;它将软件系统设计为由多个对象组成&#xff0c;这些对象通过特定的方式相互作用 封装 将数据和操作数据的方法封装在一个类中&#xff0c;并通过访问修饰符控制对…...

[Java]项目入门

这篇简单介绍一些入门的有关项目和行业的知识&#xff0c;并带着实现一个小项目。便于已经编程入门的各位准备进阶到下一个阶段。 先大致地介绍&#xff0c;一个完整的项目(不看客户端、服务端的分类)基本可以划分为三部分&#xff1a; 1.前端。比如你现在看到的CSDN页面就是一…...

opencv Mat To Heif

高效率图像文件格式&#xff08;英语&#xff1a;High Efficiency Image File Format, HEIF&#xff1b;也称高效图像文件格式&#xff09;是一个用于单张图像或图像序列的文件格式。它由运动图像专家组&#xff08;MPEG&#xff09;开发&#xff0c;并在MPEG-H Part 12&#x…...

二刷代码随想录第24天

93. 复原 IP 地址 确定函数is_ip的实现细节&#xff0c;start不能超过end&#xff0c;没有0开头的非0数字&#xff0c;每个字符都在0-9之间,每段字符小于255在原字符串s上做操作会更简单一些 class Solution { public:vector<string> result;vector<string> rest…...

Java设计模式之状态模式架构高扩展的订单状态管理

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…...

Yagmail邮件发送库:如何用Python实现自动化邮件营销?

目录 一、Yagmail简介 二、安装Yagmail 三、基本使用示例 1. 发送简单文本邮件 2. 发送HTML邮件 3. 发送带有附件的邮件 4. 多收件人处理 5. 自定义邮件头 四、高级功能 1. SMTP配置 2. 邮件模板 3. OAuth2认证 五、自动化邮件营销案例 六、错误处理和调试 七、…...

李宏毅深度学习-Pytorch Tutorial2

什么是张量&#xff1f; 张量&#xff08;Tensor&#xff09;是深度学习和机器学习中一个非常基础且重要的概念。在数学上&#xff0c;张量可以被看作是向量和矩阵的泛化。简单来说&#xff0c;张量是一种多维数组&#xff0c;它可以表示标量&#xff08;0维&#xff09;、向量…...

SaaS财务软件:赋能企业数字化转型

在数字化浪潮的推动下&#xff0c;企业财务管理正逐步迈向智能化、高效化的新阶段。在这个过程中&#xff0c;SaaS财务软件应运而生&#xff0c;成为许多企业的首选。以易舟云财务软件为例&#xff0c;这款软件不仅集成了众多先进的财务管理功能&#xff0c;而且在用户体验上做…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...