IM即时通讯开发如何提升移动网络下图片传输速度和成功率

在本案例中,我们重点讲解了提升上传速度和成功率的“鱼翅”项目,重点分析了在移动网络下影响上传速度和成功率的因素,一次次的调优算法并验证,最终提炼出了能应对网络质量瞬息万变的鱼翅算法。

“大白鲨”的第一个阶段,我们详细分析了当时 MIG 几大产品的上传方案,了解到每个方案中都有一些可取之处、也存在一些都没解决好的问题,于是我们决定把这些各自的“闪光点”都放到“鱼翅”中作为一个基础。同时,我们针对大家都没处理好的一些问题提出我们的一些改进设想,于是,我们有了鱼翅的方案雏形。

➨由于不便展示具体流程图,故仅将其要点和相关考虑罗列如下:

(1)必须分小片传输一个文件(图片):

理由:由于当时后台的能力,无法支持单个网络包传输失败后对包里剩余字节的断点续传,所以若整个文件(图片)放在一个网络包里进行传输,一旦失败,就必须重传整个文件,这样给用户带来的流量浪费是巨大的。因而采用把一个文件分片的方式传输,则只需要在某一个分片失败后重传这一个分片。同时,单个消息越大传输时越容易失败(快速数学证明:若文件大小接近 0,则传输成功概率接近 100% ;而文件大小无穷大,则传输过程必然会失败),而移动互联网的整体质量比有线网络要差,相同大小的消息会更容易失败;因此就应该把一个较大的文件分成一个一个的小片进行传输,每个小片更容易成功一些。

(2)不同类型的移动互联网下的分片初始大小应该有所不同:

理由:不同移动互联网的带宽和稳定性的差异都很大,如 WiFi 和 2G,使用不同大小的初始分片应该能更好的适应对应类型的网络,但是至于每种网络下的初始分片到底多大,这需要进行实验。

(3)在上传一个文件(图片)的过程中,应当尽可能动态增大分片大小(例如,后一片是前一片的 N 倍),以减少分片数量:

理由:分片动作会带来不少额外开销,如 C / S 两端拆分与合并分片的时间、传输时的额外流量( HTTP 头等)、每个分片的 RTT 等等诸多开销,所以理论上传输同一个文件用的分片数量越少,应该额外开销越小。

(4)确定每个分片是否要继续增大之前,要检查网络类型是否发生了变化,一旦跟前一片传输的网络变得不同,则新的一片不能继续增大而是转而用新网络类型下的初始分片大小进行传输:

理由:移动互联网下,由于用户的“移动”而时长发生网络类型切换的事情(如, 3G 变 2.5G),一旦网络类型变了,其带宽、时延、稳定性等等因素都发生了很大的变化,所以需要分片大小需要“归零”,以迅速适应新的网络,减少失败的概率。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值