本文在编写时参考了博客作者“鹿呦呦”和在线课程“即时消息技术剖析与实战”的相关资料,一并表示感谢。
1、系列文章引言IM系统看似简单(没错,很多土老板认为开发个qq和微信也就是几万块钱的事... ),实责是众多技术的应用合体,包括网络编程、移动开发、后端开发、高并发、高可用、高安全等技术范畴,再加上多端使用不同的编程语言,想要凑齐一个典型的IM产品技术栈那也不是个容易事。
而对于IM开发入门者来说,想要在众多的IM技术术语和概念中找到学习的方向和需要的资料,那也是件很让人抓狂的事。如果看到不该看的技术深水区文章,直接从入门到放弃——被活活吓退,那也是相当悲剧的。
本系列文章将尽量从理论概念入手,通俗易懂的梳理IM中的基础技术概念和热门技术点,希望能帮你理清看似一团乱麻的IM知识体系,助你找到清晰的IM技术学习方向,来日工资翻倍、迎娶白富美也未必不可能!
友情提示:本系列文章侧重于理论概念的讲述,篇幅有限,点到即止,如需系统、深入、具体地学习IM技术的方方面面,请从此文入手:《新手入门一篇就够:从零开发移动端IM》(史诗级文章,适合从入门到放弃)。
2、系列文章目录3、本文内容概述《IM开发快速入门(一):什么是IM系统?》(* 本文)
《IM开发快速入门(二):什么是IM系统的实时性? (稍后发布)》
《IM开发快速入门(三):什么是IM系统的可靠性? (稍后发布)》
《IM开发快速入门(四):什么是IM系统的一致性? (稍后发布)》
《IM开发快速入门(五):什么是IM系统的安全性? (稍后发布)》
《IM开发快速入门(六):什么是IM系统的的心跳机制? (稍后发布)》
《IM开发快速入门(七):如何理解并实现IM系统消息未读数? (稍后发布)》
《IM开发快速入门(八):如何理解并实现IM系统的多端消息漫游? (稍后发布)》
本文将带你快速了解一个主流IM系统的应用场景、典型架构、技术特点和功能组成,帮你快速建立对IM系统的主观认知。
如果你不想从技术的角度理解IM原理,可以尝试阅读此文:《知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)》。
本文已收入即时通讯网的入门纲领性文章《新手入门一篇就够:从零开发移动端IM》。
本文已同步发布于“即时通讯技术圈”公众号。
4、IM的应用场景IM其实并不局限于聊天、社交这类“典型”应用中,实际上它已经广泛运用于我们身边形形色色的软件中。
聊天、直播、在线客服、物联网等所有需要实时互动、高实时性的场景等等,都需要应用到 IM 技术。
下面这些场景是我们大家都熟悉的,都用到了IM技术:
1)微信、qq、钉钉等主流IM应用:这是IM技术的典型应用场景;
2)微博、知乎等社区应用:它们利用IM技术实现了用户私信等点对点聊天;
3)抖音、快手等直播/短视频应用:它们利用IM技术实现了与主播的实时互动;
4)米家等智能家居物联网应用:利用IM技术实现实时控制、远程监控等;
5)滴滴、Uber等共享家通类应用:利用IM技术实现位置共享;
6)在线教育类应用:利用IM技术实现在线白板。
5、IM的典型架构一个典型的IM架构类似于下图这样:
(本图引用自《即时消息技术剖析与实战》学习笔记1——IM系统的架构》一文)
如上图所示,IM架构中的各分层职责如下:
1)客户端:作为与服务端进行消息收发通信的终端;
2)接入层:也叫网关层,为客户端收发消息提供入口;
3)逻辑层:负责IM系统各功能的核心逻辑实现;
4)存储层:负责IM系统相关数据的持久化存储,包括消息内容、账号信息、社交关系链等;
5)第三方服务:保证APP在未打开或后台运行时也能收到消息通知(这主要是第第3方消息推送服务)。
尤其对于“接入层”,它的职责最为关键,具体是:
1)保持海量用户连接;
2)解析协议,对传输内容进行编解码;
3)维护客户端的连接(也叫“Session”);
4)推送消息。
以下文章适合IM架构设计入门,有兴趣可以读一读:
《浅谈IM系统的架构设计》
《简述移动端IM开发的那些坑:架构设计、通信协议和客户端》
《从游击队到正规军(一):马蜂窝旅游网的IM系统架构演进之路》
6、IM技术的特点M技术的特点主要就是以下4点: