微服务即时通信系统---(一)项目介绍

目录

框架与微服务拆分设计

微服务架构设计思想

入口网关子服务

HTTP通信

WEBSOCKET通信

用户管理子服务

好友管理子服务

文件管理子服务

消息存储子服务

消息转发子服务

语音识别子服务

项目所使用到的技术栈/框架/库

后台技术框架图

整体框架

服务器层次图


本项目基于微信app模拟实现一个简易通信聊天系统。

框架与微服务拆分设计

本项目在设计之初,采用微服务框架设计。指将一个大的业务拆分为多个子业务,分别在多台不同的节点上提供不同的服务。

由网关服务,统一接收多个客户端的不同请求,然后将对应的请求分发到后台对应的机器节点上,等待处理。获取响应后,再返还给客户端应答。

因此,整个项目拆分为以下几个模块:

入口网关服务、用户管理子服务、好友管理子服务、文件管理子服务、消息存储子服务、消息转发管理、语音识别子服务。

微服务架构设计思想

服务拆分 将应用程序拆分成多个小型服务,每个服务负责一部分业务,具有独立的生命周期和部署。
独立部署 每个微服务可以独立于其它服务进行部署、更新和扩展。
语言和数据的多样性 不同的服务可以采取不同的编码和数据库,根据服务需求进行技术选型。
轻量级通信 服务之间通过定义良好的API进行相互通信,通常使用HTTP/REST、gRPC等协议。
去中心化数据管理 每个服务管理自己的数据库,数据在服务之间是私有的,有利于保持服务的独立性。
自动化部署 通过持续集成和持续部署(CI/CD)流程自动化服务的构建、测试和部署。
监控和日志 对每个服务进行监控和日志记录,以便于跟踪问题和性能瓶颈。
服务发现 服务实例可能动态变化,需要服务发现机制来动态地找到服务实例。
弹性和可扩展性 微服务架构支持服务的动态扩展和收缩,以适应负载的变化。
容错性 设计时考虑到服务可能会失败,通过断路器、重试机制等手段以提高系统的容错性。
去中心化治理 每个服务可以有自己的开发团队,拥有自己的技术栈和开发流程。
安全

每个服务需要考虑安全问题,包括认证、授权和数据传输的安全性。

入口网关子服务

提供与客户端进行直接交互的作用。

进行用户鉴权。

接收客户端的各项不同的请求,将请求分发到不同的子服务进行处理,收到响应后,再发送给客户端。

用户鉴权

客户端在登录之后,后台会为客户端创建 ”登录会话“ ,并向客户端返回一个登录会话ID。

往后,客户端发送的所有请求中都必须带有对应的会话ID 进行身份识别,否则视为未登录,不予提供除了 登陆/注册/获取验证码 之外的所有服务。

在入口网关子服务中,基于不同的使用目的(客户端主动向服务器发起请求,有时候服务器也需要主动向客户端推送消息),向客户端提供两种不同的通信模式:

你可能感兴趣的:(微服务即时通信系统,微服务,运维,架构)