我们用4行代码节省了100万 相见恨晚的PCDN

我们公司主要做视频在线点播,还有少量视频下载。比较关心网络加速,首先就是价格,其次是首播时间、流畅率这几个核心性能指标。目前使用阿里云PCDN也有几个月了,整体结果是超预期、值得安利的。写这篇文章,希望能通过选型对比、接入过程、效果实现几个方面的真实感受,给还在犹豫的同行们一些启发,希望文章内容对你们有所帮助。

废话少说,先直接说效果:每月的CDN费用比以前少了近50%,首播时间、流畅率略优于使用中的2家CDN。这个结果真是让人喜大普奔,原以为PCDN价格比CDN低这么多,性能会不好,没想到这货不仅价格低,性能比CDN还只好不差,一年能给老板省将近100万,妈妈再也不用担心我的年终奖啦。这个羊毛究竟该怎么薅,请听我一一道来。



先说选型阶段,是什么原因让我们选择了阿里云PCDN?

上半年公司花大力气推广,我们的视频点播业务量增长挺快。业务量大了,不仅带宽成本有压力,我们也同样压力山大,怕产品服务不稳定,怕出各种问题。于是乎,我们一方面找目前使用的CDN公司申请价格折扣,申请服务质量保障;另一方面,也在不断寻找其他质优价廉的CDN产品。

现在CDN各家公司竞争也很激烈,基本都能爽快的给一定的折扣,但价格还是不够理想。找来找去,最后目光落在了P2P上。但深入了解之后,问题来了。要使用P2P CDN,各家都是要在客户端上集成SDK,SDK集成难度、SDK大小、SDK出bug后是否影响到主APP等各类因素都会可能造成影响。另外,从P2P原理上看,要有一定的P2P分享率,可能需要在终端上传流量。我们的视频点播业务在OTT盒子和移动端上都有,一旦在终端上传流量,不仅会占用带宽影响用户体验,而且还要在终端划一块存储空间用于缓存内容,频繁读写T卡/ROM也将影响到终端的寿命。这些问题对我们都很致命,如果这些问题真的存在,即使P2P CDN成本低,我们也没法使用。

我们了解了四家P2P CDN的资料,排除了终端上传的、SDK太大的、业务刚起步的、没有典型点播领域客户案例的几家。最终将目光锁定在阿里云PCDN产品上,优酷全站都在用PCDN,用户体量足够大,并且SDK可以远程升级。我们决定先测试看看效果。



随之而来的就是非常关键的一步—— 接入,这是最能考验服务质量和易用性的一步了。

首先在阿里云官网找到PCDN产品,申请开通。PCDN开通后,还要提供阿里云CDN域名和url给他们后台,说是要匹配规则,然后就把SDK和对接文档发给我们了。阿里云的人专门拉了钉钉群来支持我们的SDK集成和测试,他们的产品技术同学都在里面,响应的还挺及时,碰到问题都能很快解决,这要赞一个。

他们的SDK整体还比较简单,就三个接口:启动、停止和地址转换。SDK对接照着他们给的文档进行就可以了,APP的业务逻辑也不需要更改。从开始对接到集成成功,一共就花了不到一个小时,我数了数,总共也就4行核心代码,这有点颠覆我以前对SDK集成的认知,没想到这么简单。给你们看看我是怎么做到的吧。

和大多数SDK一样,启动APP时启动SDK,传入阿里云分配给我们的token,这样就把PCDN服务启动起来了。

需要播放视频时,播放器拿到云端提供的播放url地址后,增加一步调用SDK获取PCDN播放地址,然后使用PCDN提供的本地地址播放即可。

最后再退出应用程序时停止PCDN服务即可。

我们在APP上做了埋点监测,比对了首播时间、流畅度等指标,PCDN的指标略优于我们使用的CDN,这些关键指标测试下来,效果还是比较满意的。另外,阿里云PCDN有两点是超出了我们预期的。

第一个就是PCDN支持下载限速,我们大部分的业务是点播,有少部分的视频是要下载的,下载都是后台进行,要求下载的同时还能够流畅的播放视频,同时也希望尽量限制在带宽高峰期下载的速度。这就要求对下载进行限速了,还好阿里云PCDN已经支持了下载限速这个功能,下载速度可以由我们灵活控制,这个功能很好的解决了我们的问题。

第二个就是解决视频被劫持的问题。之前时不时有用户反映视频没法播放,经过分析基本都是域名被运营商劫持造成的,这种情况尤其在一些小地方小运营商中出现,比较头疼。给我们提供服务的CDN公司也能解决域名劫持的问题,但需要在APP上集成SDK,我们是不大愿意单纯为了这一个功能去集成SDK的。刚好阿里云PCDN SDK自带了HTTPDNS功能,保证了域名解析的正确性,避免域名被劫持的情况,并且HTTPDNS还免费给我们用,简直太方便太贴心了有木有。



成功接入后,我们就要看看效果了,毕竟老板们对数字指标是相当关心啊。

我们内部测试验证了一周左右。从测试情况看,产品稳定性不错,各方面性能指标也都达到了要求。但这毕竟只是实验室几个测试同学的测试,要真正反映产品表现,还是要大量数据来说话。阿里云PCDN的同学建议我们控制渠道灰度发布,有较多的用户使用才会体现出P2P效果来。经过跟老板商量,我们挑了个渠道,灰度发布了版本。几个小时后,就有几千的安装量,几千个用户对于验证PCDN效果也足够了。

接着又是一周时间,我们持续观察了各方面的数据,首播时间跟CDN不相上下,流畅度方面,使用CDN时流畅度98%左右,使用PCDN时流畅度98.5%左右,下载稳定性和完成率也符合要求,整体的表现还是很不错的。老板看到测试数据比较满意,同时,阿里云PCDN的同学对我们的问题的响应和支持都比较及时,老板果断决定正式上线PCDN产品,在各个渠道逐步全量发布。

现在,我们使用PCDN有几个月时间了,新版本的覆盖率已经很高了。产品还是很稳定的,即使偶尔有问题也能很快得到解决,这是我们非常看重的一点,省了很多麻烦。虽然业务增长,带宽量也在增长。但使用PCDN后,每月的带宽支出却实实在在的省了不少。照这个情况看,每年就能省将近100万的带宽费用了。而这所有的一切,只是花了不到一个小时集成阿里云PCDN SDK,增加了4行核心代码带来的成果,真是相见恨晚。

总结下整体的感受:接口简单服务给力,测试性能稳定优秀,阿里云有这么大的羊毛,不赶紧来薅,还等什么呢?

时间: 2024-11-05 04:49:35

我们用4行代码节省了100万 相见恨晚的PCDN的相关文章

Badoo 告诉你切换到 PHP7 节省了 100 万美元

介绍 我们成功的把我们的应用迁移到了php7上面(数百台机器的集群),而且运行的很好,据说我们是第二个把如此规模的应用切换到php7的企业,在切 换的过程我们发现了一些php7字节码缓存的bug,庆幸的是这些bug现在已经被修复了,现在我们把这个激动人心的消息分享给所有的php社 区:php7现在已经可以稳定的运行在商用环境上,而且比以前更加节省内存,性能也有的很大的提高. 下面我会详细的介绍下我们是如何把应用前移动php7的,我们在这中间遇到的问题及处理情况,还有最终的结果.但首先让我们回头看

每月亿行代码、全球数万研发,落地DevOps的协同平台DevCloud

为什么传统开发模式存在问题? 在信息化企业的这条路上,我们已经走得很远了,从少数单机到集群的规模壮大;软件生态也不断丰富完善,从底层系统到上层的业务分析,ERP ,数据库等自研定或是第三方应用.正式因为有了这些IT 基础,云计算也开始生根发芽. 越来越多的社会业务依赖着IT 技术,IT 技术工作者们也越来越期望自己的产品可以更快地响应社会不断变化的需求.首个软件公司的诞生已经过去了七十年,技术日新月异,业务发展迅速的公司也逐渐发现传统开发模式已经不再适用了.市场机遇不断扩大,企业业务需求相应增加

利用100行代码动态创建并部署流程

1. 关于Activiti中的BPMN Model 在5.12版本中把各个模块进行了大幅度的划分,值得一提的就是activiti-bpmn-的几个模块(activiti-bpmn-converter.activiti-bpmn-layout.activiti-bpmn-model). activiti-bpmn-model:包含了BPMN2.0规范中部分对应的Java定义(也包括Activiti自己扩展的),描述了一些基本属性.结构: activiti-bpmn-converter:该模块负责对

用100行代码攻击比特币网络的俄罗斯男子

自称 Alister Maclin 的俄罗斯男子过去一周一直在攻击比特币网络.他发动的是所谓的伪造交易 ID 攻击(或称之为 malleability attack),它不具有危险性,只相当于比特币块链服务器收到了垃圾信息,但它会影响交易的确认,导致一些交易平台推迟比特币取款. Alister Maclin 接受采访时说,他只花了几个小时写了 100 行代码的脚本,脚本运行在虚拟机上,捕捉比特币网络广播的交易,然后使用略微不同的 ID 重新广播交易. 它导致交易确认的时间从以前的 10 分钟左右

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题     ===================================================== 最简单的

两千行代码的PHP学习笔记汇总_php技巧

本文汇总了PHP学习中常见的各类问题,约有两千多行代码,都是非常实用的技巧.分享给大家供大家参考.具体如下: //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变量名建议用下划线方式分隔 // $var_name 函数名建议用驼峰命名法 // varName 定界符建议全大写 // <<<DING, <<<'DING' 文件名建议

Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

目前,我相信,没有任何 Android 开发者不知道材料设计的,因为它的设计在过去的一年震惊了世界,正式的变成了一个设计理念. 令人惊讶的是,在 Android 应用中材料设计是不容易实现的,因为材料设计的 UI 组件 如: Floating Action Button (FAB) 在低于 Android L 系统上是不可用的.我们只能选择使用由独立开发者公布出来的第三方库. 来了一个好消息,上周(2015.5.29)在谷歌2015 I/O 大会时,谷歌宣布了一个今年最让人兴奋的支持库,名叫 A

12行代码的浏览器DoS攻击分析及防御

有一段12行的JavaScript代码,可以让firefox.chrome.safari浏览器崩溃,而且还能让iphone重启.安卓闪退,本文作者对于该12行代码进行了分析解读并且提出了相应的防御办法,欢迎大家一同探讨. ajax与pjax AJAX(阿贾克斯),这里说的可不是阿贾克斯俱乐部哦! AJAX(阿贾克斯)即"Asynchronous Javascript And XML"(异步JavaScript和XML),是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交

重构-使代码更简洁优美II:实际经验之谈(项目分层是怎么扯上代码节省的)

前言: 好几天没写文了,因为在折腾传说中的8国语言博客,实际目前预定义了10国+1自定义语言,代码还在慢慢的写着写着~~~~ 目前最新进展预览网址为:http://cyq.tupianshop.com/ ,其强大之处及 CYQ.Data 框架 V3.N 系列   后文再介绍了. 写文章有时候是需要有灵感或一时的冲动的~比如刚刚在改博客代码,经过一段思考,得到一些灵感,便有了此文.   在很久很久的 Long Long Ago 以前,写过一篇文章:重构-使代码更简洁优美:实际经验之谈(提供一技巧,