知识卡片

IM系统区别于普通Web系统的四大特性

普通读书笔记卡

内容

即时通信(IM)系统在架构上和普通的请求/响应型系统(电商、搜索)存在四个根本性差异,理解这四点是设计IM架构的起点。第一是实时性:这里的”实时”是相对概念而非绝对时间,快慢由用户预期决定——秒级、毫秒级的响应就足以让用户感知为”快”,不同业务场景对实时性的容忍度完全不同(IM要求几百毫秒到一秒内,普通站点应用可以接受更长延迟)。第二是推送性:这是IM区别于电商、搜索最本质的一点——普通系统是客户端主动发起请求、服务端被动响应;IM系统里服务端要在消息产生的瞬间主动把消息推给客户端,客户端完全不需要发起请求就能收到新消息。第三是消息可达性,即消息投递的可靠性问题,这背后有理论上界(见[[SMC定理与系统层重复换业务层不丢不重]])。第四是状态一致性:IM系统里几乎所有请求都和”在线/离线”这类状态相关(在线才能实时转发,离线要存离线消息),而好友和群这种社交关系网络会让状态变更的扩散规模变得很大(一个用户上线可能要通知上千人),如何高效、一致地扩散状态变更是独立的架构难题(见[[状态扩散的推拉分层策略]])。这四点共同决定了IM系统不能照搬普通Web系统的三层架构和请求/响应模型,必须专门设计消息推送、状态同步和可靠投递机制。

参考来源

- 位置:《高可用架构(第1卷)》第2章《高可用架构原理与分布式实践》"2.4 从零开始搭建高可用IM系统"节,"2.4.1 什么是IM"(源文件:_epub-src/OEBPS/Text/Chapter2_4_2.xhtml) - 结论依据:原文列出IM系统相对其他系统的四个特点"实时性""推送性""消息可达性""状态一致性"并分别举例说明,直接支撑本卡片的四点归纳。 - 原始内容:IM系统相对其他系统而言有几个如下所示的个性化特点:(1)实时性……(2)推送性……IM不是请求/响应的方式,而是主动推送消息……(3)消息可达性……(4)状态一致性……几乎所有的IM请求都和状态相关。