【聊天室后端服务器开发】功能设计-框架与微服务

news/2025/2/25 10:23:09

服务器功能设计

微服务思想应用 

微服务架构

主要组成分析

客户端

  • 客户端通过 HTTP 协议与网关进行交互,进行操作如用户注册、好友申请等
  • 客户端只需要知道网关的地址,无需关心后端服务的具体实现

网关

  • 作为系统的统一入口,网关负责接收客户端的请求并将其转发给具体的微服务
  • 网关功能:
    1. 请求路由:将不同请求分发到对应的微服务
    2. 权限校验:检查客户端的请求是否具备合法的认证信息。
    3. 协议转换:可以支持不同客户端的协议需求(如 HTTP 转 gRPC)。
    4. 聚合数据:将多个微服务的结果汇总返回给客户端。

注册中心

  • 注册中心用于服务的注册与发现。
  • 每个微服务启动时会向注册中心注册自己的信息(如服务名称、地址和端口),网关通过注册中心实现动态服务发现。
  • 作用:
    • 解决微服务实例的动态变化(如扩容、缩容、失败)问题。
    • 使网关能够找到具体的服务实例。

微服务

  • 根据功能划分成多个子服务
  • 服务之间通过RPC(远程调用)通信

微服务拆分

实现逻辑

后台服务逻辑汇总

入口网关自服务接口

【聊天室后端服务器开发】 入口网关开发-CSDN博客

  • 客户端通信
    • HTTP通信:客户端主动向服务端发送请求
    • Websocket通信:服务器端主动向客户端进行推送
  • 网关服务器
    • 服务注册:子服务节点将自身注册到网关服务器
    • 服务发现:网关服务器根据客户端请求将客户端连接到指定的子服务模块上
  • 子服务
    • 子服务接收到业务请求后返回响应给网关服务器,然后网关服务将响应交给客户端
  • 登录信息
    • 登录成功后,用户子服务会通过Redis数据库验证一下该用户是否已经存在
    • 客户端与服务端后续通信中,会先将会话ID与Redis数据库中存储的信息进行比对,如果比对成功再进行服务
    • 主要功能就是判断用户是否已经成功登录

好友管理子服务

【聊天室后端服务器开发】 好友管理子服务测试-CSDN博客

【聊天室后端服务器开发】 好友管理子服务_后端好友互相关注怎么开发-CSDN博客

主要功能

  • 好友管理服务:文章详细描述了如何设计和实现聊天应用中的好友管理功能。该功能包括用户之间的互相关注、好友请求的发送与接收、好友列表的管理等
  • 请求管理:处理好友请求的模块,确保只有经过确认的请求才能成为好友,避免无效的或恶意的连接
  • 关系管理:通过建立清晰的用户与好友关系模型,可以便捷地查询某个用户的好友列表以及相互关系状态

设计架构总结

通过设计合理的数据库索引,文章使得好友管理服务的查询效率大大提升,尤其是在面对大量用户时,能够保持快速响应。简化了用户与系统的交互流程,减少了不必要的步骤,提高了用户体验。程序设计考虑到未来可能需要添加新的社交功能,比如黑名单、群组管理等,具备良好的扩展性。

性能优化

  • 异步处理:在请求的发送与接收过程中,采用了异步处理机制,避免了阻塞,提高了系统的响应速度
  • 数据缓存:使用缓存技术加速了常用数据(如好友列表)的读取操作,减少了数据库的负担

消息存储子服务

【聊天室后端服务器开发】消息存储子服务测试-CSDN博客

【聊天室后端服务器开发】消息存储子服务_后端语音存储怎么设置-CSDN博客

主要功能总结

  • 消息存储:支持将文本、图片、语音、文件等消息存储到MySQL、ES(Elasticsearch)以及文件存储系统中
  • 消息检索:提供接口获取最近消息、指定时间段的消息,并支持根据关键字搜索消息内容

主要亮点总结

  • MySQL和ES的结合:使用MySQL存储消息的元数据,ES用于快速搜索文本消息,提升查询效率
  • 数据持久化:通过ODB框架与MySQL进行数据的持久化管理,确保数据的可靠存储
  • 数据库操作封装:封装了数据库操作(如插入、删除、查询),使得操作更加简洁、安全
  • 高效的检索:通过ES进行文本消息的关键字搜索,大大提升了查找效率

消息转发子服务

【聊天室后端服务器开发】消息转发子服务-CSDN博客

主要功能

  • 服务注册与发现:通过服务注册模块将服务信息登记到服务中心,并通过服务发现模块获取可用服务
  • 消息传递流程:客户端发送消息请求,服务处理后构建消息对象并通过消息队列(RabbitMQ)进行可靠的消息传递
  • RPC服务:通过RPC接口进行客户端与服务端的通信,传递消息内容和请求
  • 消息构建与存储:消息通过RPC请求获取,处理后存入数据库并通过消息队列转发
  • 会话管理:文章通过MySQL数据库操作管理聊天会话成员,如增删查改成员信息

主要亮点

  • 高效的消息转发:通过引入RabbitMQ作为消息队列,保证了消息的可靠转发
  • 模块化与扩展性:消息传递、会话管理和RPC服务实现解耦,便于未来功能扩展
  • 事务管理:使用数据库事务确保消息操作的原子性与一致性

用户管理子服务

【聊天室后端服务器开发】用户管理子服务_后端用户数据要全部redis操作吗-CSDN博客

【聊天室后端服务器开发】用户管理子服务测试_聊天服务器在线用户管理部门管理用户管理日志管理服务器关-CSDN博客

主要架构分析

  • MySQL:用于存储用户的结构化数据,如用户信息和好友关系
  • Redis:管理会话信息、登录状态、验证码等数据,提高系统响应速度
  • Elasticsearch:索引和检索用户数据,提供高效的查询功能

主要功能

  • 用户注册与管理:包括用户的注册、信息修改、登录验证等功能
  • 数据存储与查询:通过ODB库进行MySQL数据库的操作,管理用户数据
  • 会话与状态管理:使用Redis记录用户的登录状态与会话信息

主要亮点

  • 多数据库系统结合使用:合理结合MySQL、Redis和Elasticsearch,充分发挥各自优势,提供高效的用户数据管理和查询
  • 高效的数据访问和管理:使用ODB封装数据库操作,提高了代码的可维护性与数据操作的效率
  • 模块化设计

文件存储子服务

【聊天室后端服务器开发】文件存储子服务_客户端后端文件服务器-CSDN博客

核心架构设计

  • 文件上传:支持单个和多个文件上传,文件上传后生成唯一的ID,并将文件内容存储在指定路径
  • 文件下载:支持单个和多个文件的下载,根据文件ID返回文件内容
  • RPC服务:使用brpc框架搭建RPC服务,支持文件操作
  • Protobuf:定义了文件上传和下载的数据结构,确保数据传输的高效和规范
  • 服务注册与发现:通过etcd进行服务的注册和发现,确保其他服务或客户端可以调用文件服务

主要特点总结

  • 文件操作的高效性:通过精确的文件ID和文件存储路径管理,保证了文件操作的高效性
  • 模块化设计:文件上传与下载分别处理,便于扩展与维护
  • 错误处理:实现了详细的错误返回机制,提高了服务的健壮性

语音转换子服务

【聊天室后端服务器开发】语音转换子服务-CSDN博客

主要架构

  • Protobuf接口:定义了语音识别请求和响应的消息格式
  • RPC服务:通过brpc框架搭建RPC服务,处理语音识别请求并返回结果
  • ASRClient:用于实际的语音识别,调用外部平台进行处理
  • SpeechRecognition方法:提取语音数据并通过ASRClient进行识别,返回识别结果或错误信息

亮点

  • 模块化设计:清晰分离了语音识别的服务实现和RPC服务器管理,提高了代码的可维护性
  • 灵活的服务构建:通过构建者模式,灵活配置和扩展语音识别服务
  • 高效的语音识别:将语音内容转换为文本,增强了聊天系统的互动性


http://www.niftyadmin.cn/n/5865377.html

相关文章

开源分布式存储系统在云原生数据库领域的实践与应用

本文深入探讨了Curve项目,一个专为云原生环境设计的开源分布式存储系统。文章详细介绍了Curve的块存储架构、其在云原生数据库领域的实际应用,并展望了项目的未来发展方向。 一、Curve项目介绍 Curve项目致力于打造一个云原生、高性能、稳定且易运维的开…

ARCGIS国土超级工具集1.4更新说明

ARCGIS国土超级工具集V1.4版本,功能已增加至54 个。本次更新在V1.3版本的基础上,新增了“拓扑问题修复工具”并同时调整了数据处理工具栏的布局、工具操作界面的选择图层下拉框新增可选择位于图层组内的要素图层功能、数据保存路径新增了可选择数据库内的…

Bybit最大资金盗窃事件技术分析 by CertiK

事件概述 2025年2月21日UTC时间下午02:16:11,Bybit的以太坊冷钱包(0x1db92e2eebc8e0c075a02bea49a2935bcd2dfcf4[1])因恶意合约升级遭到资金盗取。根据Bybit CEO Ben Zhou的声明[2],攻击者通过钓鱼攻击诱骗冷钱包签名者错误签署恶意交易。他提到,该交易被伪装为合法操作:…

【够用就好006】-PC桌面管理ECS服务器的实操步骤

背景介绍解决思路拓展知识 背景介绍 #够用就好#知其然知其所以然#aigc创意人左边 我计划搭建个人网站,计划格式化我的ECS服务器,但是里面有我之前的实践项目,我舍不得删除,我想要保存到本地。 通常我都是在vscode中用remotes ssh…

【react】基础教程

目录 一、React 简介 二、环境搭建 1. 创建 React 项目 2. 项目结构 三、核心概念 1. JSX 语法 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 5. 条件渲染 6. 列表渲染 四、Hooks(函数组件的核心) 1. useState 2. useE…

深入讲解微信小程序 <canvas> 标签的 type=“2d“属性

在微信小程序开发中&#xff0c;<canvas> 组件是一个非常强大的工具&#xff0c;允许开发者创建动态图形和动画。然而&#xff0c;正确设置 <canvas> 的 type 属性是确保其正常工作的关键之一。本文将深入探讨 type"2d" 属性的重要性、使用场景及其在实际…

AI人工智能之机器学习sklearn-数据预处理和划分数据集

1、概要 本篇学习AI人工智能之机器学习sklearn数据预处理和划分数据集&#xff0c;从代码层面讲述如何进行数据的预处理和数据集划分。 2、简介 本片讲述数据预处理的标准化处理、归一化处理&#xff0c;以常用的两个类为例 标准化处理类 StandardScaler归一化处理类 MinMax…

【Spark+Hadoop】基于Spark大数据小说数据分析推荐系统(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅

目录 一、项目背景 二、项目目标 三、项目功能 四、项目优势 五、开发技术介绍 六、算法介绍 七、启动部署教程​ 八、项目展示 九、权威教学视频 需要全部项目资料&#xff08;完整系统源码等资料&#xff09;&#xff0c;主页即可。 一、项目背景 随着网络小说行业…