0、开篇词:搞懂“实时交互”IM技术的新机遇

你好,我是袁武林。我来自新浪微博,目前在微博主要负责消息箱和直播互动相关的业务。接下来的一段时间,我会给你带来一个即时消息技术方面的专栏课程。 你可能会很好奇,为什么是来自微博的技术人来讲这个课程,微博会用到IM的技术吗? 在我回答之前,先请你思考一...

即时消息技术剖析与实战

1、架构与特性:一个完整的IM系统是怎样的?

你好,我是袁武林。在接下来的一段时间里,我将和你一起探索IM的相关知识。今天是第一节课,我们就先从IM的相关概念开始着手。 说起IM,我估计你会先愣一下,“IM是QQ或者微信这样的即时聊天系统吗?它是不是很庞大,也很复杂?” 今天我们以一个简单的Ap...

即时消息技术剖析与实战

2、消息收发架构:为你的App,加上实时通信功能

你好,我是袁武林。 前一篇文章中,我们从使用者的直观角度和从业者的实现维度,了解一个IM系统都应该具备哪些要素。但实际上,从我的角度来看,我更倾向于把“IM”看作是一门可以融入到各种业务系统中,为业务系统提供“实时交互”能力的技术模块。 比如,极客时...

即时消息技术剖析与实战

3、轮询与长连接:如何解决消息的实时到达问题?

你好,我是袁武林。 我在前面第一篇文章中,从使用场景的需求方面,讲到了IM系统的几个比较重要的特性。其中之一就是“消息到达的实时性”。 实时性场景是所有的IM系统绕不开的话题,为了支持互联网的“实时互联”的概念,大部分的App都需要实时技术的支持。 ...

即时消息技术剖析与实战

4、ACK机制:如何保证消息的可靠投递?

你好,我是袁武林。 在第一节的课程中,我们说到了即时消息系统中的四个重要特性,实时性、可靠性、一致性、安全性。 上一节课我们从如何保证消息实时性方面,了解了业界常用的一些方式以及背后具体的原理。那么今天我们接着来讲一讲,在即时消息的系统架构设计里,如...

即时消息技术剖析与实战

5、消息序号生成器:如何保证你的消息不会乱序?

你好,我是袁武林。 前面几节课,我们较为系统地介绍了如何解决消息实时到达的问题,也对保证消息可靠投递实战中常用的方式进行了一一讲解。 那么,今天的课程我们继续一起聊一聊,IM系统设计中另一个比较复杂,但又非常重要的话题:消息收发的一致性。需要提醒的是...

即时消息技术剖析与实战

6、HttpDNS和TLS:你的消息聊天真的安全吗?

你好,我是袁武林。 在开始之前,我们先回顾一下前面几篇的内容。我们陆续讲到了消息实时性、消息投递的可靠性、消息时序一致性在即时系统业务场景中的重要性和难点,以及相应的实现方案。 如果说消息的“实时性”“投递可靠性”“时序一致性”是评价一个即时消息服务...

即时消息技术剖析与实战

7、分布式锁和原子性:你看到的未读消息提醒是真的吗?

你好,我是袁武林。 在前面几节课程中,我着重把即时消息场景中几个核心的特性,进行了较为详细的讲解。在实际用户场景下,除了实时性、可靠性、一致性、安全性这些刚需外,还有很多功能对用户体验的影响也是很大的,比如今天我要讲的“消息未读数”。 消息未读数对用...

即时消息技术剖析与实战

8、智能心跳机制:解决网络的不确定性

你好,我是袁武林。 在前面的章节里,我讲到了在即时消息场景中非常重要的两个特性:“可靠投递”和“实时性”。 为了让消息能更加实时、可靠、快速地触达到接收方,大部分IM系统会通过“长连接”的方式来建立收发双方的通信通道,这些基于TCP长连接的通信协议,...

即时消息技术剖析与实战

9、分布式一致性:让你的消息支持多终端漫游

你好,我是袁武林。今天我们开始进入场景篇的部分,在这个部分中,我会介绍在几种典型的垂直业务场景下,IM系统具体是如何实现的。 在即时消息的场景里,消息的多终端漫游是一个相对比较高级的功能,所谓的**“多终端漫游”是指:用户在任意一个设备登录后,都能获...

即时消息技术剖析与实战