第13章IM服务——13.1 IM的意义与核心能力

IM (Instant Messaging,即时通信)是一种实时的通信方式,它可以使用户通过互联网快速、安全、低成本地相互交换即时信息。本章将详细讲解IM服务作为用户即时通信后台的功能与技术方案,具体的学习路径如下。

  • 13.1节介绍IM的意义与核心能力。
  • 13.2节介绍与IM相关的一些概念。
  • 13.3节介绍IM服务合格的消息投递应该具有的特点,以及如何存储、接收消息。
  • 13.4节初步介绍IM服务应该存储哪些数据。本节内容可以作为后续章节的导论。
  • 13.5节介绍消息乱序的原因,以及在服务端和客户端分别保证消息有序收发的思路。
  • 13.6节介绍如何创建一个新会话,以及如何处理用于管理会话的命令消息,比如撤回消息、管理群组成员等。
  • 13.7节介绍消息回执功能的实现原理。
  • 13.8节详细介绍存储系统的数据模型设计。
  • 13.9节介绍在高并发架构下,IM服务在高并发收发消息场景中的应用,以及直播间弹幕模式应有的高并发设计。
  • 13.10节介绍IM服务的最终架构,这一节内容也是本章的总结。

本章关键词:读扩散、写扩散、推拉结合、消息有序、消息回执、单聊、群聊、弹幕。

13.1 IM的意义与核心能力

通俗地说,所谓IM就是聊天,许多互联网应用都支持在应用内用户聊天的功能,因为聊天功能会为用户和产品提供极大的便利性。但是这些应用并不一定是即时通信软件,下面列举几种定位不同的应用。

  • 电商类应用:买家可以通过聊天功能向卖家咨询商品细节、物流问题、售后处理情况等,好友之间也可以分享商品、促销活动、优惠券等。
  • 求职类应用:求职者与企业主之间可以通过聊天功能方便地在线沟通工作意愿,求职者也可以相互交流工作心得、面试体验等。
  • 内容类应用:比如抖音、微博,用户可以通过聊天功能与好友分享有趣的视频,给感兴趣的创作者投票等。

总之,聊天功能是最快的信息传递方式之一。在互联网应用中,不同角色的用户通过聊天可以建立更为紧密和深入的联系,维系自己的社交关系,增强用户对产品的忠诚度和用户黏性。

不同互联网应用的产品侧重点不同,故而聊天功能的丰富程度也不同。由于纯粹的即时通信软件就是以聊天功能为卖点的,所以其往往是聊天功能的集大成者,它们拥有的能力通常如下。

  • 实时投递。在在线情况下,用户会实时收到其他用户发给自己的消息,就像当面聊天一样。
  • 单聊模式和群聊模式:不仅两个用户之间可以聊天,而且若干用户可以拉群聊天。
  • 消息撤回。用户在发出消息后,在一段时间内可以选择撤回消息。
  • 消息回执。在单聊模式下,用户可以看到对方是否已经阅读了自己发出的消息;在群聊模式下,用户可以看到哪些用户已经阅读了自己发出的消息。
  • 消息勿扰。用户可以对指定的用户或指定的聊天群做勿扰处理,虽然用户仍然可以接收其发出的消息,但是并不会收到提醒。

虽然有些互联网应用的产品定位可能并不是通信软件,并不完全需要上述能力,但是它们已经涵盖了聊天功能的大部分核心能力。假设我们正在做关于即时通信软件的事情,即时通信软件的后台就是本章要设计的IM服务。