首页
TVP 最新优惠活动
学习
活动
专区
工具
返回腾讯云官网
本文在编写时参考了博客作者“鹿呦呦”和在线课程“即时消息技术剖析与实战”的相关资料,一并表示感谢。
IM系统看似简单(没错,很多土老板认为开发个qq和微信也就是几万块钱的事... ),实责是众多技术的应用合体,包括网络编程、移动开发、后端开发、高并发、高可用、高安全等技术范畴,再加上多端使用不同的编程语言,想要凑齐一个典型的IM产品技术栈那也不是个容易事。
而对于IM开发入门者来说,想要在众多的IM技术术语和概念中找到学习的方向和需要的资料,那也是件很让人抓狂的事。如果看到不该看的技术深水区文章,直接从入门到放弃——被活活吓退,那也是相当悲剧的。
本系列文章将尽量从理论概念入手,通俗易懂的梳理IM中的基础技术概念和热门技术点,希望能帮你理清看似一团乱麻的IM知识体系,助你找到清晰的IM技术学习方向,来日工资翻倍、迎娶白富美也未必不可能!
友情提示:本系列文章侧重于理论概念的讲述,篇幅有限,点到即止,如需系统、深入、具体地学习IM技术的方方面面,请从此文入手:《 新手入门一篇就够:从零开发移动端IM》(史诗级文章,适合从入门到放弃)。
《 IM开发快速入门(一):什么是IM系统?》(* 本文) 《IM开发快速入门(二):什么是IM系统的实时性? (稍后发布)》 《IM开发快速入门(三):什么是IM系统的可靠性? (稍后发布)》 《IM开发快速入门(四):什么是IM系统的一致性? (稍后发布)》 《IM开发快速入门(五):什么是IM系统的安全性? (稍后发布)》 《IM开发快速入门(六):什么是IM系统的的心跳机制? (稍后发布)》 《IM开发快速入门(七):如何理解并实现IM系统消息未读数? (稍后发布)》 《IM开发快速入门(八):如何理解并实现IM系统的多端消息漫游? (稍后发布)》
本文将带你快速了解一个主流IM系统的应用场景、典型架构、技术特点和功能组成,帮你快速建立对IM系统的主观认知。
如果你不想从技术的角度理解IM原理,可以尝试阅读此文:《 知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)》。
本文已收入即时通讯网的入门纲领性文章《 新手入门一篇就够:从零开发移动端IM》。
本文已同步发布于“即时通讯技术圈”公众号。
IM其实并不局限于聊天、社交这类“典型”应用中,实际上它已经广泛运用于我们身边形形色色的软件中。
聊天、直播、在线客服、物联网等所有需要实时互动、高实时性的场景等等,都需要应用到 IM 技术。
下面这些场景是我们大家都熟悉的,都用到了IM技术:
一个典型的IM架构类似于下图这样:
(本图引用自《即时消息技术剖析与实战》学习笔记1——IM系统的架构》一文)
如上图所示,IM架构中的各分层职责如下:
尤其对于“接入层”,它的职责最为关键,具体是:
以下文章适合IM架构设计入门,有兴趣可以读一读:
IM技术的特点主要就是以下4点:
▶ 1)实时性:
对于IM系统,“实时”二字是精髓,也是这项技术存在关键意义所在。它保证的是消息的实时触达。
举个例子:如果跟你的好友微信或qq聊天,我发的消息他不能即时收到,或者他发的信息你也不知道什么时候能收到,这基本上也就没法聊下去了(干吗不痛快打个电话呢)。
▶ 2)可靠性:
保证消息的不丢失和不重复,是IM系统的另一个关键技术特点。试想,当你在用qq或微信跟女朋友聊天,好不容易鼓起勇气向“她”表白,结果这消息要是丢包了,那肯定得卸载应用了,搞不好砸手机都有可能。当然,好话不说二遍,消息重复也同样恼人。
以下文章对消息的不丢/不重问题进行了深入探讨,有兴趣可以详读:
▶ 3)一致性:
对于单聊消息而言,保证同一个设备的时间顺序、不同设备的漫游同步,也是相当重要的一环。
IM系统中的消息交互,就到底就是人跟人在“说话”,前言不搭理后言、或者胡言乱语式的消息展现,那不是人疯了就是程序疯了,总之就是没法再聊下去了。
以下文章对消息时序问题进行了深入探讨,有兴趣可以详读:
▶ 4)安全性:
保证数据传输安全、数据存储安全、消息内容安全,也是IM系统必不可少的特性。尤其在私聊场景下,如果不能做到安全性,聊天的体验跟被人偷窥的感觉是没有区别的。
以下文章对IM的安全问题进行了深入探讨,有兴趣可以详读:
浅显的角度讲,一个典型的IM功能组成,无非就是以下5样:
我们一样一样来说说各自的用途。
▶ 1)联系人列表:
这个很好理解,使用IM系统的第一步,就是要解决“跟谁聊”的问题。从功能表象上来说,联系人列表也就是社交关系列表,无非就是个信息列表界面,有什么特殊的地方?
联系人列表看似简单,实际上它是一系列IM系统的社交关系确立动作的结果体现。
要想建立联系人列表,你可能需要实现以下逻辑:
总的来说,联系人列表的建立,是一个IM系统聊天关系确立的表现,不可或缺。
▶ 2)聊天界面:
聊天界面看似很平常,实际它就是IM系统客户端的核心功能所在,所有主要的IM功能都是通过它展现。
它应该具备的能力有:
以上只是简单罗列,这看似简单的聊天界面,能把上面列表的事情做好,工作量也不小吧。
▶ 3)消息发送通道:
下图是一个典型的IM消息收发通道示意:
如上图所示,消息发送通道这个比较好懂,最浅显易懂的理解就是用tcp或udp,建立socket长连接,需要发消息的时候,wirte一下就过去了,好简单!
但,事情往往不是想象的这么简单:
这么一说,事情还挺多(那不废话吗。。。)。
▶ 4)消息接收通道:
正如上节中的消息收发通道示意图所示,消息接收通道也很好理解,对方通过消息发送通道write的消息,我得收到并显示啊。
要实现一个可靠的消息接收通道,也并非易事:
▶ 5)消息存储:
消息存储这个功能好理解,聊天的消息如果存储,下次再聊的时候就不知道之前聊过什么,做不到这一点,这个IM系统的聊天体验好不起来。
那么,哪些情况下需要进行消息存储呢:
具体要存储的内容和时机也就上面这几样。
但技术落到实处,要做的事情同样少不了:
这么多需要考虑的内容,也挺让人抓狂。
下图是一个IM系统的典型存储架构设计,了解一下:
(本图引用自《 现代IM系统中聊天消息的同步和存储方案探讨》一文)
存储是IM系统的基石,以下文章可以深入阅读:
▶ 6)消息未读数:
消息未读数?看起来也就是那个所有IM应用都有的未读小红点嘛。是的,看起来也好简单!
然而,消息未读数功能的实现也一样不简单:
是的,看起来就这么简简单单的3件事,但深入思考一下,还真的简单不起来。
IM系统的应用场景已经不单单是IM聊天应用这一种形态,它已经融入到互联网应用的方方面面,必竟谁都想自已的应用具备“实时”交互这种能力,因为体验太好了。
IM系统典型架构无非就是网络接入层、业务逻辑层、数据存储层,除开网络接入层,其它各层其实跟普通的应用系统看起来差别并不是太大。
IM系统的技术特点来说,就是实时性、可靠性、一致性、安全性,除了实时性对于多数应用来说并不关心,其它的指标也很好理解。
IM系统的功能组成上,联系人列表用于数据模型的建立、聊天界面承载了IM系统的终端展现、消息的收发通道用于实现“实时”这个特性、存储和未读数看似不是必须但用户体验上确必不可少。(本文同步发布于: http://www.52im.net/thread-3065-1-1.html)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
玻璃钢生产厂家玻璃钢法式花神雕塑城阳玻璃钢雕塑佛山玻璃钢卡通雕塑规定内蒙古园林雕塑玻璃钢彩绘玻璃钢雕塑绘制过程视频镇江人物玻璃钢雕塑定做玻璃钢雕塑垃圾桶现货定做景观卡通雕塑玻璃钢造型厂家绵阳玻璃钢卡通雕塑品牌启东玻璃钢喷泉雕塑黑河仿铜玻璃钢雕塑定制哈尔滨玻璃钢卡通雕塑益阳常德玻璃钢雕塑价格户外景观玻璃钢雕塑厂家联系方式广州水果玻璃钢雕塑定做价格玻璃钢雕塑小品现货宝丰有做玻璃钢雕塑的吗榆树玻璃钢雕塑工程电话多少福建开业商场美陈多少钱太原玻璃钢雕塑批发公园玻璃钢景观雕塑定做白银玻璃钢动物雕塑制作唐山商场美陈英德玻璃钢雕塑厂家佛山玻璃钢仿铜人物雕塑生产厂家株洲市玻璃钢雕塑定制玻璃钢机器猫雕塑图片青岛特色玻璃钢花盆七台河玻璃钢雕塑花都商场美陈雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万