首页
学习
活动
专区
圈层
工具
发布
首页视频🔥 现代IM系统中聊天消息的同步和存储方案探讨

🔥 现代IM系统中聊天消息的同步和存储方案探讨原创

播放38
⭐️ 本文内容主要涉及IM即时通讯系统中的消息系统架构,探讨一种适用于大用户量的消息同步以及存储系统的架构实现,能够支持消息系统中的高级特性『多端同步』以及『消息漫游』。在性能和规模上,能够做到全量消息云端存储,百万TPS以及毫秒级延迟的消息同步能力。 1️⃣ 架构设计 👈️ 传统架构下,消息是先同步后存储。现代架构下,消息是先存储后同步。现代架构中最核心的就是两个消息库『消息同步库』和『消息存储库』,是消息同步和存储最核心的基础。 2️⃣ 消息存储模型 👈️ 基于Timeline的消息存储模型,消息存储要求每个会话都对应一个独立的Timeline。 3️⃣ 消息同步模型 👈️ 读扩散消息存储模型中,每个会话的Timeline中保存了这个会话的全量消息。读扩散的消息同步模式下,每个会话中产生的新的消息,只需要写一次到其用于存储的Timeline中,接收端从这个Timeline中拉取新的消息。 优点是消息只需要写一次,相比写扩散的模式,能够大大降低消息写入次数,特别是在群消息这种场景下。但其缺点也比较明显,接收端去同步消息的逻辑会相对复杂和低效。 写扩散的消息同步模式,需要有一个额外的Timeline来专门用于消息同步,通常是每个接收端都会拥有一个独立的同步Timeline,用于存放需要向这个接收端同步的所有消息。 写扩散同步模式的优点是,在接收端消息同步逻辑会非常简单,只需要从其同步Timeline中读取一次即可,大大降低了消息同步所需的读的压力。其缺点就是消息写入会被放大,特别是针对群这种场景。 4️⃣ 消息库设计 👈️ 基于Timeline的消息库设计中,消息同步库用于存储所有用于消息同步的Timeline,每个Timeline对应一个接收端,主要用作写扩散模式的消息同步。 消息存储库用于存储所有会话的Timeline,每个Timeline包含了一个会话中的所有消息。这个库主要用于消息漫游时拉取某个会话的所有历史消息,也用于读扩散模式的消息同步。 (👉️ 全文阅读:http://52im.net/thread-1230-1-1.html)
视频文本
展开

我来说两句

0 条评论
登录 后参与评论

作者

JackJiang

相关推荐

8分22秒
electron38+vue3+arco.design仿window桌面版os系统
375
3分32秒
最新自研Electron38+Vite7桌面版OS系统【体验版】
383
4分58秒
原创新作Vite7+Electron38.2+Arco电脑端os管理系统
386
4分43秒
自研electron38+vue3+arco.design客户端仿macOS界面os系统
391
10分29秒
最新原创Vue3.5+Electron38.2跨平台桌面版os后台系统【源码演示版】
406
8分7秒
vite7+electron38-wechat桌面客户端聊天exe应用【完整演示】
475
领券