ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

简易版的微信聊天存储方式

2022-02-21 12:29:59  阅读:219  来源: 互联网

标签:群聊 微信 聊天记录 信箱 简易版 聊天 扩散 消息


1、写在前面

作者在本文研究websocket已经数月,分享一个亿级消息量、分布式 IM 系统这个技术前提下,分析和总结读写扩散的知识。本文将做到通俗易懂,不涉及任何代码讲解。

2、读扩散 vs 写扩散

IM 系统里经常会涉及到读扩散和写扩散这两个技术概念,我们来看看。

2.1 读扩散

如上图所示: A 与每个聊天的人跟群都有一个信箱 (有些博文会叫 Timeline ,见 《现代 IM 系统中聊天消息的同步和存储方案探讨》), A 在查看聊天信息的时候 需要读取所有有新消息的信箱。 读扩散的优点:可以看到,一个聊天记录需要一个信箱存放 1 )写操作(发消息)很轻量,不管是单聊还是群聊,只需要往相应的 信箱写一次就好了; 2 )每一个信箱天然就是两个人的聊天记录,可以方便查看聊天记录跟 进行聊天记录的搜索。 读扩散的缺点: 读操作(读消息)很重,在复杂业务下,一条读扩散消息源需要 复杂的逻辑才能扩散成目标消息。

2.2 写扩散

接下来看看写扩散。

如上图所示:在写扩散中,每个人都只从自己的信箱里读取消息,我们从中需要维护用户的信箱即可。

但写(发消息)的时候,对于单聊跟群聊处理如下: 1 )单聊:往自己的信箱跟对方的信箱都写一份消息,同时,如果需要 查看两个人的聊天历史记录的话还需要再写一份(当然,如果从个人信箱 也能回溯出两个人的所有聊天记录,但这样效率会很低); 2 )群聊:需要往所有的群成员的信箱都写一份消息,同时,如果需要 查看群的聊天历史记录的话还需要再写一份。可以看出,写扩散对于群聊 来说大大地放大了写操作。 写扩散优点: 1 )读操作很轻量; 2 )可以很方便地做消息的多终端同步。 写扩散缺点: 写操作很重,尤其是对于群聊来说(因为如果群成员很多的话, 1 条消息源要扩散写成 “ 成员数 ­1” 条目标消息,这是很恐怖的)

注:本文有参考于诸葛老师

 

标签:群聊,微信,聊天记录,信箱,简易版,聊天,扩散,消息
来源: https://blog.csdn.net/DrLai/article/details/123044530

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有