Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

        

联系锋哥QQ:3320160706

AI编程,程序员挑战年入30~100万高级指南 - 职业规划

Java、Python项目定制找Java1234_小锋老师,专业又靠谱 QQ:3320160706

SpringBoot+SpringSecurity+Vue权限系统高级实战课程        

Java微信小程序电商实战课程(SpringBoot+VUe)

     

AI人工智能学习大礼包

     

PyCharm永久激活

66套java实战课程无套路领取

     

Cursor+Claude AI编程 1天快速上手视频教程

     
当前位置: 主页 > Java文档 > Java基础相关 >

即时通讯亿级消息量分布式IM系统架构设计:读写扩散模式与多端同步关键技术研究 PDF 下载


时间:2026-05-16 11:58来源:http://www.java1234.com 作者:转载  侵权举报
即时通讯亿级消息量分布式IM系统架构设计:读写扩散模式与多端同步关键技术研究 PDF 下载
失效链接处理
即时通讯亿级消息量分布式IM系统架构设计:读写扩散模式与多端同步关键技术研究 PDF 下载 


转载自:
 
相关截图:
 


主要内容:

本文不会给出一套通用的IM方案,也不会评判某种架构的好坏,而是讨论设计 IM系统的常见难题跟业界的解决方案。
因为也没有所谓的通用IM架构方案,不同的解决方案都各有其优缺点,只有最满足业务的系统才是一个好的系统。
在人力、物力、时间资源有限的前提下,通常需要做出很多权衡,此时,一个能够支持快速迭代、方便扩展的IM系统才是最优解。

3IM常见术语
0)用户:系统的使用者。
1)消息:是指用户之间的沟通内容(通常在IM系统中,消息会有以下几类:文本消息、表情消息、图片消息、视频消息、文件消息等等)。
2)会话:通常指两个用户之间因聊天而建立起的关联。
3)群:通常指多个用户之间因聊天而建立起的关联。
4)终端:指用户使用IM系统的机器(通常有Android端、iOS端、Web端等等)。
5)未读数:指用户还没读的消息数量。
6)用户状态:指用户当前是在线、离线还是挂起等状态。
7)关系链:是指用户与用户之间的关系,通常有单向的好友关系、双向的好友关系、关注关系等等(这里需要注意与会话的区别:用户只有在发起聊天时才产
生会话,但关系并不需要聊天才能建立。对于关系链的存储,可以使用图数据库(Neo4j等等),可以很自然地表达现实世界中的关系,易于建模)。
8)单聊:一对一聊天。
9)群聊:多人聊天。
10)客服:在电商领域,通常需要对用户提供售前咨询、售后咨询等服务(这时,就需要引入客服来处理用户的咨询)。
11)消息分流:在电商领域,一个店铺通常会有多个客服,此时决定用户的咨询由哪个客服来处理就是消息分流(通常消息分流会根据一系列规则来确定消息会分流给哪个客服,例如客服是否在线(客服不在线的话需要重新分流给另一个客服)、该消息是售前咨询还是售后咨询、当前客服的繁忙程度等等)。
12)信箱:本文的信箱我们指一个Timeline、一个收发消息的队列。

4、读扩散 vs 写扩散
IM系统里经常会涉及到读扩散和写扩散这两个技术概念,我们来看看。
4.1 读扩散
如上图所示:A与每个聊天的人跟群都有一个信箱(有些博文会叫Timeline,见《现代IM系统中聊天消息的同步和存储方案探讨》),A在查看聊天信息的时候需要读取所有有新消息的信箱。
需要注意与Feeds系统的区别:在Feeds系统中,每个人都有一个写信箱,写只需要往自己的写信箱里写一次就好了,读需要从所有关注的人的写信箱里读。但 IM系统里的读扩散通常是每两个相关联的人就有一个信箱,或者每个群一个信箱。
读扩散的优点:
1)写操作(发消息)很轻量,不管是单聊还是群聊,只需要往相应的信箱写一次就好了;
2)每一个信箱天然就是两个人的聊天记录,可以方便查看聊天记录跟进行聊天记录的搜索。
读扩散的缺点:读操作(读消息)很重,在复杂业务下,一条读扩散消息源需要复杂的逻辑才能扩散成目标消息。



 


 
------分隔线----------------------------


锋哥推荐