阿里云PCDN(P2P CDN的简称)是基于P2P技术的内容分发网络产品,相比CDN而言,PCDN单价较低,更适用于大流量内容分发。PCDN产品是与传统CDN互补协作的关系,以P2P技术为核心的分布式PCDN系统可与传统CDN、云CDN无缝集成,形成互补协作,PCDN相对于CDN进行了相应的扩容、提速、降费:
(1)扩容,扩充放大CDN容量。PCDN可将原CDN容量按约1:5比例放大,使用PCDN后仅需要较小的 CDN规模即可获得约5倍的整体扩容效果。
产品特性
PCDN主要应用的业务领域包括视频点播、视频直播、大文件下载;应用场景涵盖互动娱乐、教育、演出和赛事;目前支持的平台系统包括Web Flash、IOS、Android、PC Client、OTT,支持的格式协议包括MP4、FLV、RTMP、HLS。其产品具有用户体验好、SDK强大易用、高P2P分享率、高安全性、高可用性、成熟稳定六大特性:
(1)用户体验好:平均播放流畅率>97%;平均首播时间小于1秒。
(2)SDK强大易用:支持Web Flash/Andriod/iOS/OTT等平台下点播、直播;提供优酷播放器,通过多年视频播放技术沉淀,效果媲美一线视频应用;接口统一,各终端平台适配简单。
(3)高P2P分享率:P2P全天平均分享率>50%,高峰期分享率60%~80%。
(4)高安全性:保护关键数据,防盗链、抵御DDoS攻击;安全通道通过加密机制保证媒体数据的正确性。
(5)高可用性:可根据运营商、渠道、地区等多维度进行运行参数修改和启停控制;数据统计系统可以实时监控、查询加速状态和效果。
(6)成熟稳定:多年来一直为优酷土豆提供优质的播放加速;拥有内网穿透、缓存处理、种子管理、传输策略等各方面的核心技术和专利40余项。
移动端优化
最近几年,移动端占比逐步攀升,视频播放行为越来越多地发生在移动端,在移动端开发P2P应用存在天然的挑战:一是由于网络接入的情况多变,而客户对APP的上传行为有着比较苛刻的限制或者是干脆不上传,一旦P2P应用没有上传,则传统的P2P厂商很难继续提供服务。PCDN为了应对上传限制,通过使用路由、区核节点,在移动端上传受限情况下也能达到良好的效果。第二个挑战是因为移动端设备性能、存储、功耗上的限制,对P2P应用有着较为严格的限制,PCDN针对移动设备做了很多优化:I/O方面支持内存模式,不必读写TF/ROM;资源使用及功耗方面,PCDN做到了极低的系统资源占用,耗电量使用P2P应用和不使用P2P应用基本无区别;机型及版本适配方面,适配各种Android/iOS设备及系统版本。
技术架构
视频点播和大文件下载
下面看一下PCDN的技术架构和工作原理,具体从视频生产、传输、消费三个环节探究PCDN的工作方式。
在视频生产环节,客户通过版权采购、用户上传分享等方式产生媒资库,存储在阿里云的OSS上,形成源站;在视频传输和视频消费环节,定义了一、二、三级加速概念,从源站将内容推送到CDN,这是最传统的CDN加速,这里称之为一级加速;P2P的节点又细分为路由器、运营商区核和商业WiFi,称之为PCDN网络的二级节点,PCDN网络中的调度会定期主动把CDN网络中热点资源推送到PCDN网络的二级节点上;在视频播放端,由于集成了PCDN的SDK,在请求播放时会优先命中附近的路由器、运营商区核、商业Wifi是否存在所请求资源,如果存在,则直接从这些节点中获取资源;否则从CDN获取资源,通过这种机制实现了二级加速,减少了CDN的使用量;在播放端,尤其是SDK中,它不仅可以到二级节点中命中所请求的资源,还可以通过彼此之间的上传和下载命中所需资源,这种消费端彼此命中资源的模式称之为三级加速,进一步降低了二级节点的使用量。通过将PCDN网络和CDN网络结合起来,通过一、二、三级加速达到了较好的用户体验,同时降低了成本。
直播
视频直播的技术架构如上图所示,整体流程与点播基本一致,它们的区别在于,直播通常分为两类:HLS切片,它可以利用点播的思想来实现直播,它的原理和刚才的点播实际上是一样的,HLS切片直接被CDN分发,热点内容再分发到二级节点上,如果SDK能够在二级节点命中请求,则从二级节点中获取内容,进行播放,如果不命中或超时则回源CDN。对于直播流RTMP/FLV,它是流的形式,并不是小切片或者文件的形式,因此在CDN网络分发以及被PCDN网络识别和打包前,必须要将视频流推送到切片服务,经处理后分发到CDN中,也就是通过切片服务将RTMP/FLV直播流转换成类似HLS小视频切片,后续处理和HLS相同。
节点布局
为了应对移动端上传的限制,在PCDN的网络中专门部署大量的二级节点,包括运营商汇聚层节点(区核)、商业网络节点(商业wifi、小区宽带)、路由器节点(路由宝及合作机制)。通过这样的节点布局,覆盖了90%以上地级市和五大运营商,P2P带宽储量保守估计达10Tbps。
接入流程
下面来看一下如何接入和使用PCDN服务。
使用PCDN的大致步骤如上图所示,首先客户了解到产品,会同我们的售前人员进行需求沟通,主要沟通的问题包括业务场景和带宽需求量,特别是用户群、终端分布、媒资热度和格式;如果沟通之后确定PCDN适用于客户场景,下一步客户需要通过文档和技术人员指导在各端SDK集成联调;第三个环节包括局部上线和正式上线,局部上线时分渠道/地区/运营商逐步打开P2P开关,阶段性评估播放体验,确认一切无误,再全量打开P2P开关,正式投入运营。
接入流程:媒资流量调研
我们在与客户沟通的过程中,需要明确客户的媒资热度,媒资热度反映的是媒资库中热点内容流量占比情况,例如:10%的内容占据90%的流量。图中左侧是媒资库热度分布曲线,横轴是累计媒资数量,纵轴可以是CDN流量(TB)或播放量(vv)、m3u/ts的媒资文件。如果视频播放的频率是完全平均分布的,则媒资热度分布曲线呈现长尾下均匀分布,如图中黄色曲线所示;如果极少数的视频带来绝大多数播放量,则媒资热度分布曲线呈现头部效应下分布,如图中绿色曲线所示,曲线越陡峭则媒资热度集中度越高,实施P2P方案的效果就越好。
接入流程:PCDN SDK
在接入过程中,主要工作在对接SDK上。相比较而言,PCDN的SDK接口层还是较为简洁的,宿主APP实际上只需要对接SDK接口层所提供的几个简单的方法和接口即可实现整个逻辑,一些复杂的业务实现屏蔽在SDK的内核中。
下面来看一个简单的PCDN SDK接口的调用过程。
整体调用过程分为三步:第一步启动P2P(调用start()命令);第二步利用pcdn_address函数转换播放地址,在向P2P系统播放请求URL时,首先调用pcdn_address函数对原地址(http://a.com/xxx.mp4)进行转换,如果P2P系统成功返回http://127.0.0.1:xxxx/xxx.mp4地址,则说明该系统可以供给P2P流量,播放器无需知晓这个地址是怎么来的,只需要按照返回地址播放视频即可,播放时使用的是P2P流量;如果P2P策略被禁用或者不识别域名无法提供服务时,会返回原地址(http://a.com/xxx.mp4),宿主APP像访问CDN一样访问该地址即可。整体过程对用户而言都是透明的,且没有其他性能代价。第三步:当整体业务流程结束时,停止P2P(调用stop()命令)。
效果分析
下面通过两种服务模式对PCDN的效果进行分析。
PCDN服务模式一:与阿里云CDN集成
PCDN与阿里云CDN集成使用的大致结构如上图所示。首先给定预设条件:客户切给阿里云带宽15Gbps;PCDN覆盖率80%,P2P分享率50%。客户的各种终端都需要升级带SDK的APP才能使用PCDN的流量,一旦涉及软件升级,是很难做到100%,总有老版本因为各种问题无法升级,因此假定有80%是覆盖并使用SDK的终端。
上图中虚线部分包括三种类型的移动终端,分别是未集成SDK、集成SDK但未使用PCDN服务以及集成SDK并使用PCDN服务终端。当APP发起资源请求时,客户端通过负载均衡/流量调度系统把该请求调度给阿里云CDN,如果是由集成SDK并使用PCDN的终端发起的请求,则由阿里云PCDN响应该请求,对其提供服务,阿里云PCDN在该预设条件下报表用量为12G(15×80%),按PCDN单价计费;当请求是由其他两类终端发出,则由阿里云CDN响应其请求,并提供服务,在阿里云CDN报表用量为3G(15-12),按CDN单价计费。
PCDN与阿里云CDN集成之后的节省效果如上图所示,两者相比较,通过阿里云CDN与PCDN混合方案,每月能够节省32%的成本。
PCDN服务模式二:与任意CDN集成
除了阿里云CDN之外,PCDN还可以与任意第三方CDN集成使用。预设条件不变,客户总带宽需求15Gbps;PCDN覆盖率80%,P2P分享率50%;客户终端不变,同样是三种类型。当用户APP请求资源时,集成SDK并使用PCDN的终端会出现两种状况:一是请求命中P2P资源,使用P2P带宽,则阿里云PCDN报表为6G(15G*80%*50%),按PCDN单价计费;二是尽管集成SDK并使用了PCDN,但请求未命中P2P资源,则回源CDN获取资源,则这部分会计入第三方CDN报表中,则第三方CDN报表为9G(15G-6G)。
典型案例
最后介绍两个PCDN在实际中使用的典型案例。
OTT点播
上图是OTT点播的架构模型,在该结构中使用OSS做源站,多家CDN做分发,其中PCDN仅对接阿里云CDN,也就是仅对请求阿里云域名的流量起作用,帮助客户降低了使用阿里云产品的成本。
互动直播
上图是互动直播案例架构图,在该案例中PCDN对接所有厂商的CDN(不单是阿里云CDN),使用阿里云直播中心推流,视频流其中一条路径是进入Rtmp/Flv切片服务进行切片,原始直播流和切片后的文件都通过阿里云CDN分发,利用阿里云CDN作为根节点(是第三方CDN的源站),对于各CDN的请求都可以使用PCDN带宽。利用该架构可以降低客户使用各家CDN的成本。