即时消息技术剖析与实战
袁武林
微博研发中心技术专家
24187 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
即时消息技术剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

14 | 分片上传:如何让你的图片、音视频消息发送得更快?

多线BGP机房托管
多机房公司的部署方式
后端图片上传存储服务部署在多线机房
针对不同运营商提供不同上传接入点IP
综合知识需求
上传优化方向
优化手段总结
特征值计算
重复文件处理
断点续传实现
上传中断情况
网络环境影响
分片大小选择
适用场景
优势
长连下推方式
语音消息特点
多媒体消息上传通道独立开
普通消息上传链路
优化方式
国内网络环境复杂
小结
秒传机制
断点续传
分多大?
分片上传
语音的“分片先行下推”
上传链路优化
多上传接入点
分片上传:如何让你的图片、音视频消息发送得更快?

该思维导图由 AI 生成,仅供参考

你好,我是袁武林。
在前面几节课中,我基本上都是从通用文本消息的角度出发,较为深入地分析讲解了即时消息相关的一些重要特性及核心概念。
随着网络环境的大幅改善及网络资费的显著降低,在很多即时消息场景下,人们的互动不再局限于传统的文本消息,越来越多的用户通过图片、语音、视频等丰富的多媒体消息来完成互动。相较于文本消息而言,多媒体消息在易用性和情感表达上更有优势。
但是,多媒体消息相对也会大很多。比如,一条文本消息只有不到 100 字节,但一条视频消息可能超过 100MB。因此,多媒体消息在网络传输、实时触达等方面相对更难一些。
在 IM 场景中,针对图片、语音、视频的优化一直都是一个需要长期投入和突破的重点。今天,我们就来看一看针对多媒体消息的优化手段都有哪些。由于篇幅原因,我会分成两篇,分别从发送和播放两个角度来谈一谈。

让图片和视频发送得又快又稳

要想让图片、视频、语音等多媒体消息发送得又快又稳,我们可以从“多上传接入点”“优化上传链路”“分片先行下推”“分片上传”等几种优化方式上着手。下面我分别来详细讲解一下。

多上传接入点

先来看一下,我们针对多媒体消息上传的第一种优化手段。国内目前的固网宽带运营商构成复杂,且用户宽带向来呈现出“南电信北联通”的分布现状。而在移动网络下,移动、电信、联通三足鼎立,再加上还有教育网和海外两大网络体系,整体网络结构更加复杂,跨运营商网络访问的高延迟和不稳定性一直是个无法解决的老大难问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

多媒体消息在即时通讯中的发送速度和稳定性一直是一个挑战。本文介绍了针对多媒体消息发送的优化手段,包括多上传接入点、上传链路优化、语音的“分片先行下推”和分片上传。针对多媒体消息上传的第一种优化手段是多上传接入点,通过不同的运营商提供不同的上传接入点IP,以及部署多线机房来提升上传性能和成功率。上传链路优化则是通过独立通道上传文件流,避免长链路带来的性能问题。对于语音消息,采用“分片先行下推”机制可以提高实时性,降低语音聊天的延时。另外,采用分片上传可以提升上传效率,在网络环境较差的情况下也能提高重新发送的成功率和性能。文章还介绍了分片大小的选择、断点续传和秒传机制等优化方式。这些优化手段可以帮助读者更好地理解如何让多媒体消息发送更快更稳定。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《即时消息技术剖析与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 东东🎈
    老师,客户端api上传一个几M的视频文件,大约需要10几秒,猜测可能是网络传输慢,这个可以从哪几方面来优化呢?

    作者回复: 不要猜呀,这个抓个包分析下就能排除是不是网络的原因。如果确实是网络传输慢导致的,可以看下tcp窗口大小的是不是能打的足够开,另外看下重传啥的这些多不多。

    2019-09-27
    8
  • 🐌🐌🐌
    第十四讲 语音的处理,这里指的是离线语音还是实时语音的推送方式,如果是语音录音传输的话走文件一样的通道处理就足够

    作者回复: 这里指的是语音录音传输,语音消息和文件走一样的通道是没问题的,不过也可以针对语音聊天消息进行一些针对性优化:比如语音消息一般体积比较小、实时性比较高,可以利用长连通道分片接收和分片提前下推来提升用户体验。

    2020-03-13
    4
  • leslie
    打卡:学习了,等待后续课程;顺便问个小问题,写IM必须要JAVA还是GO也行?普通的掌握程度够吗?

    作者回复: 语言都可以的,除了java、go还有很多c++、erlang的实现。掌握基本语法后,可以找找相关语言的例子边学边试就行。

    2019-09-27
    2
    3
  • kamida
    老师 去重是以文件为单位 还是以文件的每一片为单位? 服务器接收到文件分片之后 是不是会用分片组合成文件然后存储文件 而不是按分片存储呢?

    作者回复: 对于同一个文件的多个分片,每一片都会有不同的offset标识和统一的文件标识,分片上传时的去重主要是针对分片的。至于最终是否合并再存储还是按分片存储取决于你的存储引擎是否支持分片等。

    2020-03-12
    1
  • 东东🎈
    老师,问哈mq发送消息采用同步还是异步呢

    作者回复: 看具体使用场景吧,如果是需要确保写入queue成功才能响应用户的最好是同步写,如果不需要就可以异步。

    2019-09-27
    1
  • 奔奔奔跑
    老师,我一直在看您文章,每个留言的讨论都也有看,我想请教一个问题,我是用MQTT做客服系统,人也不多,一天最多四百个房间,五百个排队的,但是最近出现发消息卡顿的情况,消息发出收到broker响应时间有点长,我不知道该用什么手段定位问题,老师能不能指点我一下,谢谢了

    作者回复: 建议先从发消息的链路上来分段排查,分析下各个环节的分步耗时,确定到有耗时问题的环节后再通过线程状态或者hot thread来具体分析当前环节具体耗时的代码。

    2019-11-16
    3
  • GeekAmI
    云服务OSS存在的当下,是不是大部分业务场景不需要服务端优化上传这块呢?

    作者回复: 也不是呀,有些还是需要业务层自己来优化,比如并发分片上传,断点续传,业务权限控制等。

    2019-11-11
    2
  • Darcy
    图片,文件,语音文件中包含有木🐎文件,这方面的安全性怎么保障?有什么手段,或者好的框架吗?

    作者回复: 抱歉这一块了解的不多

    2019-11-05
  • null
    老师,您好 原文:“在客户端把要上传的文件按照一定规则,分成多个数据块并标记序号,然后再分别上传,服务端接收到后,按照序号重新将多个数据块组装成文件”。 上传时标记序号,服务器怎么知道哪些序号是属于同一个文件的?序号包含了同一个文件标识么?例如:hash(file) + n位序号?这样就跟“断点续传”一样了,为每个上传动作分配一个唯一的操作符。 服务端需要知道总的分片数么? 如果不知道,是不是会存在丢失最后一片分片而不知道的情况? 不过如果序号包含了文件的 hash 值,服务器也可以通过 hash 值校验文件的完整性。只不过服务器计算 hash 值也需要一定的开销。

    作者回复: 每个文件上传时会有一个唯一id来标识这一次上传,多个分片都会携带这个标识。另外,在上传的初始化阶段,会把分片数和文件hash值都告知服务端,用于识别分片是否缺少已经文件是否完整。

    2019-10-29
  • Darcy
    web开发中,有没有好的压缩算法或者图片分配方法可以借鉴那?

    作者回复: 采用webP格式或者google最新的Guetzli格式来对图片进行编码可以有效降低图片大小。另外说的图片分配算法没太理解是啥?

    2019-10-09
    3
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部