教你微信IM即时消息系统的架构设计(上)

简介: IM系统组成用户账号聊天的参与需要用户,所以需要有一个用户账号,用来给用户提供唯一标识,以及头像、昵称等可供设置的选项账号关系账号之间通过某些方式(比如加好友、互关等)构成账号间关系网联系人列表你的好友列表或聊天对象的列表。其中你可选择一个联系人进行聊天互动等操作消息在聊天互动这个环节产生了消息聊天会话你和对方的聊天消息记录就组成了一个聊天会话,在会话里能看到你们之间所有的互动消息

1 用户视图的IM

IM系统组成

  • 用户账号
    聊天的参与需要用户,所以需要有一个用户账号,用来给用户提供唯一标识,以及头像、昵称等可供设置的选项
  • 账号关系
    账号之间通过某些方式(比如加好友、互关等)构成账号间关系网
  • 联系人列表
    你的好友列表或聊天对象的列表。其中你可选择一个联系人进行聊天互动等操作
  • 消息
    在聊天互动这个环节产生了消息
  • 聊天会话
    你和对方的聊天消息记录就组成了一个聊天会话,在会话里能看到你们之间所有的互动消息

2 研发视图的IM

2.1 组成

客户端

用户收发消息的终端,内置的客户端程序和服务端进行网络通信,用来承载用户的互动请求和消息接收功能。

接入服务

为客户端提供消息收发的出入口,即网关层服务。

接入层避免业务可使用统一协议的header,body部分直接透传二进制,或把body的编码分委托给其他的编解码api。另外对于protobuf还不够紧凑的问题可以再gzip一下后再下推客户端。

发送的消息先由客户端通过网络给到接入服务,然后再由接入服务递交到业务层进行处理。

接入服务的功能:

保持连接

消息推送

当服务端有消息需要推送给客户端时,也是将经过业务层处理的消息先递交给接入层,再由接入层通过网络发送到客户端。

协议的编解码

编解码实际主要是为了节省网络流量,系统会针对传输的内容进行紧凑的编码(比如Protobuf),为了让业务处理时不需要关心这些业务无关的编解码工作,一般由接入层来处理。

session维护

session的作用是标识“哪个用户在哪个TCP连接”,用于后续的消息推送能够知道,如何找到接收人对应的连接来发送。

接入服务还负责最终消息的推送执行,即通过网络连接把最终的消息从服务器传输送达到用户设备。

业务处理服务

消息业务逻辑处理,比如消息的存储、未读数变更、更新最近联系人等。

存储服务

账号信息、联系人关系链,以及消息本身,都需服务端存储持久化存储。还有一些用户消息相关的设置,比如:用户可以设置不接收某些人的消息,还有附件。


服务端可以只是维护一个用于暂存消息和信令的离线buffer,至于存多久和产品需求以及监管需求相关。


即时消息可以放到MQ中,或者缓存中,使用数据抽取工具周期性的将数据提交服务器,进行持久化。服务器存储历史数据和近实时的数据。其实就是通过 MQ来异步化解耦消息存储逻辑。

作用

  • 会话一方用户不在线,上线时进行消息推送
  • 内容审查,监管,电子证据,法律要求
  • 数据分析,舆情分析

目录
相关文章
|
9月前
|
小程序 Java 关系型数据库
基于微信小程序的智慧养老服务系统
本系统基于Java、MySQL和Spring Boot技术,构建高效、安全的养老院管理系统,提升信息处理速度与管理规范性,实现数据自动化备份与网络化管理,助力养老机构信息化升级。
|
10月前
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
|
10月前
|
JSON 文字识别 BI
如何开发车辆管理系统中的加油管理板块(附架构图+流程图+代码参考)
本文针对中小企业在车辆加油管理中常见的单据混乱、油卡管理困难、对账困难等问题,提出了一套完整的系统化解决方案。内容涵盖车辆管理系统(VMS)的核心功能、加油管理模块的设计要点、数据库模型、系统架构、关键业务流程、API设计与实现示例、前端展示参考(React + Antd)、开发技巧与工程化建议等。通过构建加油管理系统,企业可实现燃油费用的透明化、自动化对账、异常检测与数据分析,从而降低运营成本、提升管理效率。适合希望通过技术手段优化车辆管理的企业技术人员与管理者参考。
|
9月前
|
数据采集 机器学习/深度学习 运维
量化合约系统开发架构入门
量化合约系统核心在于数据、策略、风控与执行四大模块的协同,构建从数据到决策再到执行的闭环工作流。强调可追溯、可复现与可观测性,避免常见误区如重回测轻验证、忽视数据质量或滞后风控。初学者应以MVP为起点,结合回测框架与实时风控实践,逐步迭代。详见相关入门与实战资料。
|
9月前
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
10月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
10月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
1262 52
|
9月前
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
795 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
9月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
1692 23

热门文章

最新文章