在前面几节课中,基本上都是从通用文本消息的角度出发,较为深入地分析讲解了即时消息相关的一些重要特性及核心概念。
随着网络环境的大幅改善及网络资费的显著降低,在很多即时消息场景下,人们的互动不再局限于传统的文本消息,越来越多的用户通过图片、语音、视频等丰富的多媒体消息来完成互动。相较于文本消息而言,多媒体消息在易用性和情感表达上更有优势。
但是,多媒体消息相对也会大很多。比如,一条文本消息只有不到 100 字节,但一条视频消息可能超过 100MB。因此,多媒体消息在网络传输、实时触达等方面相对更难一些。
在 IM 场景中,针对图片、语音、视频的优化一直都是一个需要长期投入和突破的重点。今天,我们就来看一看针对多媒体消息的优化手段都有哪些。由于篇幅原因,会分成两篇,分别从发送和播放两个角度来谈一谈。
让图片和视频发送得又快又稳
要想让图片、视频、语音等多媒体消息发送得又快又稳,我们可以从“多上传接入点”“优化上传链路”“分片先行下推”“分片上传”等几种优化方式上着手。下面分别来详细讲解一下。
多上传接入点
先来看一下,我们针对多媒体消息上传的第一种优化手段。国内目前的固网宽带运营商构成复杂,且用户宽带向来呈现出“南电信北联通”的分布现状。而在移动网络下,移动、电信、联通三足鼎立,再加上还有教育网和海外两大网络体系,整体网络结构更加复杂,跨运营商网络访问的高延迟和不稳定性一直是个无法解决的老大难问题。
对于传输数据更多的视频、图片等多媒体消息来说,如果出现用户跨运营商来上传文件,多次 RTT(Round-Trip-Time,往返时延)带来的用户体验会更差。因此,要提升多媒体消息的上传性能和成功率,我们第一步就要从接入点着手。
传统的优化方式是:针对不同的主流运营商提供不同的上传接入点 IP,然后通过运营商 DNS 解析,让用户能通过本运营商的上传接入点来快速上传图片和视频;相应后端的图片上传存储服务,也可以部署在多线机房,这样上传服务也能快速地把文件流提交给存储层,从而避免从接入点到存储服务的跨网开销,也能解决其他运营商的用户下载图片时需要跨网的问题。
对于拥有多机房的公司,也可以只把上传存储服务部署在单线机房,然后再通过专线解决多个单线机房之间的访问。比如,目前微博消息箱图片的上传,就是采用这种网络访问架构。大概 IDC 网络架构如下图: