微信号:alibaichuan

介绍:baichuan.taobao.com 百川无线开放计划,全面开放阿里巴巴无线资源,从技术、数据、商业等全链条,为移动开发者做好基础服务.

【干货】玩转多媒体,让我们的移动APP更快更准更美丽

2015-07-27 16:54 技术专家 虞程

打开我们的APP最吸引人眼球的就是我们的这些图片视频这些媒体资源,所以说如何让这些媒体资源更高效的运行,其实是提高我们APP品质的一个必修课。今天会跟大家分享2015阿里百川无线开放大会上百川技术专家讲到的三个案例,这三个案例分别涉及到我们APP图片的加载,媒体资源的上传,以及图片样式的处理。

虞程 阿里百川技术专家


这是了一个开发者他找到我们百川,他说我的应用最近加载特别慢,因为他们最近做了很长时间一段推广以后,他们的日活已经过万了,过万之后他们做了一个监测,发现在高峰时段,过万的日活QPS每秒钟的访问用户数,超过200的情况下,他的APP就非常卡。

百川一起帮他梳理了一下他的架构。我们发现他是这样的,他的媒体资源跟他的应用服务是不属于同一个服务器上的,这个服务器他带宽是10兆,这个是我们初创APP经常用的结果。

我们做了测算,上面的这些时间,1秒钟、1.8秒钟、2.5秒钟、3.5秒钟,这是听云发布的一个报告上面的一个数据,这是首屏的加载时间,然后我们做了一个体验,就是以他的首屏费的流是一兆的情况下,如果他的并发数大于20的情况下,它的APP表现是正常的,首屏加载是1秒钟之内。

这是什么概念呢?并发数是20的话,也就意味着他的日活不会超过1000。接下来发数超过60%勉强正常,1.8秒钟,他的日活接近3000—5000,并发数,超过3.5秒钟,这个时候不仅是所有的用户都要离开这个APP,还有应用服务器具有挂掉的危险,因为病态已经不足以支撑这么多用户了。

我们的业界常用的做法也很简单,一般来说成熟的应用都是这样的,首先第一步把业务流跟媒体流进行分离,因为业务流一般占用带宽会非常小,而媒体流图片这些媒体资源,占用带看会特别大,放带一起其实是一种非常浪费的一个事情。所以说我们首先把业务流跟媒体流做一个分离。

接下来我们做的一个事情就是加载CDN,如果我们的图片放在硬盘里面,每次先要从硬盘漏到内存里面。我们放在全国各地的CDN里面,这样我们的资源已经放在内存里面了,比如说北京用户访问的就是北京节点的缓存数据,这样用户体验才有可能达到极致。用了我们这套方案之后,基本上一张图片的平均加载时间差不多会稳定在150毫秒。我们整个阿里的系统共享给了开发者,不管他并发多少,不管他日活多少,都是平稳增长的曲线。

接下来我们这个案例是一个图片上传的例子,因为现在其实在很多领域APP竞争还是满激烈的,他们会互相参照。这个也是我们百川的一个开发者,他会跟他的做得最好的APP做了对比,他们都是做社区类的APP,他会发现他的竞争对手上传一张图片一秒以内肯定能上传上去,体验比较流畅。而他平均要超过3秒,这种用户体验导致很多用户流向了竞争对手那里。

我们就帮他梳理了一下他的上传流程,首先是做图片采集,一般情况下在我们苹果手机上拍一张图片,一般是一兆左右,在安卓上面略小但是也比较大,他采集图片以后进行上传,上传到服务器,他把媒体流和业务流进行分离了,然后他上传之后在自己的后台做图片处理。

不同的应用场景同一张图片有不同的展示,所以他在他的后台根据应用场景切分成了不同的样式。整个这个过程都是一个同步进行的,所以说整个时间超过3秒,其实是一个情理之中的事情,就算再快的一个网络也不可能在3秒以内把整个事情完成,因为还涉及到并发。所以说我们根据业界常用的做法,我们对他的建议是这样子的,首先对原图进行无线端的压缩,除非是非常高清的特殊场景,一般情况下一兆左右的图片在手机端的展示是没有差别的,所以我们建议对于分辨率保持不变的一个突变质量的压缩,根据我们场景的不同,根据网络的不同,我们可以进行不同比例的压缩。

第二步讲到了图片处理怎么做,图片处理一个比较好的做法,前面是我们的CDN,加载的时候我们去CDN拉取,如果在CDN这个地方我们找不到同样规格的图片的话,我们会进行回原,就是从缓存内存到存储内存去拉图片。

这样带来的好处是什么?首先我们看到我们只对必须进行图片处理的图片进行处理。所以说这个减少图片处理的开销。再有一个好处就是说我们不用把各种样式的图片都存在我们存储里面,我们只把原图存在这个存储里面,这个可以打大减少图片存储的内存。而且会对整个维护的上面会变得非常简单,不用维护那么多后缀,我们有很多做法就是不同的图片规格后面加一个后缀,其实不用维护那么多后缀,就存原图就可以了。

我们百川提供开发者基础服务的原则是什么呢?首先这是我们的开发者的一个强需求,如果快速搭建应用,我们开发者把这步走好走稳才行。第二步这是一个苦活脏活,刚才说了搭建分布式存储也好,搭建分布式缓存也好,不光是苦活脏活,而且是很贵的活。让我们开发者来做的话是很不合适的,所以我们要帮开发者扛下来。第三点我们阿里本身要有一个非常完善的技术解决方案,如果我们这个地方做得很差,我们不可能把他开放给开发者,必须是我们有信心我们在业界做得最好的,我们把他提供给开发者,以一个最简单的接入的方式提供给开发者,所以这是我们百川为我们开发者提供的基础服务的原则。

作为我们多媒体服务就是这样的一个服务,针对刚才讲的那几个案例,对于多媒体的做法无非就是上传、下载和处理,我们在这三点上为开发者定制了非常简易的使用API,以及非常丰富的功能。

我们是把阿里的分布式存储跟阿里的CDN,阿里的CDN绑定成一个统一的一个产品一个方案,一站式的解决下载速度问题。


这是我们实验的数据,千兆带宽,100G文件10小时内完成迁移,从目前我们开发者从自己的服务器迁移到我们多媒体上面差不多是两天。

去拍是我们的一个合作者,也是我们的一个开发者。但是我们发现去拍他在短视频方面做得非常出色。

去拍有一个模型,我们用了非常炫,首先他可以拍6—8秒的短视频。这个短视频还有一个回删功能,我在拍的过程觉得那段不好删掉做一个编辑。这个地方需要加一点什么表情进去,我可以暂停在这个地方,加入表情之后我再继续拍,这样就会形成非常个性的拍摄效果。

去拍还提供草稿箱的功能,你拍一段不想拍了可以存放在草稿箱的。还有就是图片滤镜功能。接下来还有其他非常丰富的功能,我可以不用担心拍倒了,自动的反转功能。

还有一个加视频水印,保证这个视频上打上我们的水印不会被人盗取。还有一个我可以把这个视频上面加上一个背景音乐,显得非常高大上,所有这些只需要SDK就可以完成了。

图片过滤这一点对UGC的开发者来说比较感兴趣,我们提供了黄图、广告图,以及自定义文字的过滤功能。为什么要过滤这些非法图片,我们开发者应该非常清楚,如果我们的竞争对手投诉我们上面有黄图有非法图片,很可能就在APP市场被下架了,很危险的事情。通过整个这一套过滤,我们会给用户呈现一个非常清净的视野。

整个我们的存储是非常安全的,就像一个保险柜一样,百川为大家提供一套管家服务,东西放在我们这里面就踏踏实实的发展我们的业务就可以了。



点击阅读原文进入阿里百川

 
阿里百川 更多文章 【活动报名】阿里百川·对话创业者论坛(上海站) 【活动报名】阿里百川·对话创业者论坛(上海站) 你还没去参加土豪阿里的创业大赛吗 【活动报名】阿里百川·O2O创业趋势探讨(南京站) 【活动报名】阿里百川·O2O创业论坛(武汉站)
猜您喜欢 进制之间的转换 网络安全,从策略到技术方案 微软史上最危险豪赌:Win10兼容安卓和iOS 程序员"跳槽"法则,这些你都了解么 好的技术领导与差的技术领导,千万不要对号入座,你会死的很惨!