| 失效链接处理 |
|
即时通讯亿级消息量分布式IM系统架构设计:读写扩散模式与多端同步关键技术研究 PDF 下载
转载自:
相关截图:
![]() 主要内容: 本文不会给出一套通用的IM方案,也不会评判某种架构的好坏,而是讨论设计 IM系统的常见难题跟业界的解决方案。 因为也没有所谓的通用IM架构方案,不同的解决方案都各有其优缺点,只有最满足业务的系统才是一个好的系统。 在人力、物力、时间资源有限的前提下,通常需要做出很多权衡,此时,一个能够支持快速迭代、方便扩展的IM系统才是最优解。 3、IM常见术语 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系统里的读扩散通常是每两个相关联的人就有一个信箱,或者每个群一个信箱。 读扩散的优点: 读扩散的缺点:读操作(读消息)很重,在复杂业务下,一条读扩散消息源需要复杂的逻辑才能扩散成目标消息。 |


苏公网安备 32061202001004号
