使用阿里云PCDN降低内容分发成本

2023-05-16

点击打开链接

阿里云PCDN(P2P CDN简称)是基于P2P技术的内容分发网络产品,相比CDN而言,PCDN单价较低,更适于大流量内容分发。PCDN产品是与传统CDN互补协作的关系,以P2P技术为核心的分布式PCDN系统可与传统CDN、云CDN无缝集成,形成互补协作,PCDN相对于CDN进行了相应的扩容、提速、降费:

(1)扩容,扩充放大CDN容量。PCDN可将原CDN容量按约1:5比例放大,使用PCDN后仅需要较小的 CDN规模即可获得约5倍的整体扩容效果。

(2)提速,降低播放延迟及进行流畅率优化。通过调用海量分布式P2P节点, 平均播放流畅率 > 97%,平均首播时间小于1秒。
(3)降费,整体成本降低30%以上,PCDN相对传统CDN成本降低40% 以上,与CDN混合集成后整体成本 降低30%以上。

产品特性

ec2e8ec8b3cb9eba27a5ec5a5a3625c38d6a8b08 

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余

移动端优化

b2afe8fe0082f8bfbbb4f3eacdd77ad7b0076d79 

最近几年,移动端占比逐步攀升,视频播放行为越来越多地发生在移动端,在移动端开发P2P应用存在天然的挑战:一是由于网络接入的情况多变,而客户对APP的上传行为有着比较苛刻的限制或者是干脆不上传,一旦P2P应用没有上传,则传统的P2P厂商很难继续提供服务。PCDN为了应对上传限制,通过使用路由、区核节点,在移动端上传受限情况下也能达到良好的效果。第二个挑战是因为移动端设备性能、存储、功耗上的限制,对P2P应用有着较为严格的限制,PCDN针对移动设备做了很多优化:I/O方面支持内存模式,不必读写TF/ROM;资源使用及功耗方面,PCDN做到了极低的系统资源占用,耗电量使用P2P应用和不使用P2P应用基本无区别;机型及版本适配方面,适配各种Android/iOS设备及系统版本。

 

技术架构

视频点播和大文件下载

下面看一下PCDN的技术架构和工作原理,具体从视频生产、传输、消费三个环节探究PCDN的工作方式。

2df9f5c6823d44a08a594576fe9765b9e448b46f 

在视频生产环节,客户通过版权采购、用户上传分享等方式产生媒资库,存储在阿里云的OSS上,形成源站;在视频传输和视频消费环节,定义了一、二、三级加速概念,从源站将内容推送到CDN,这是最传统的CDN加速,这里称之为一级加速;P2P的节点又细分为路由器、运营商区核和商业WiFi,称之为PCDN网络的二级节点,PCDN网络中的调度会定期主动把CDN网络中热点资源推送到PCDN网络的二级节点上;在视频播放端,由于集成了PCDN的SDK,在请求播放时会优先命中附近的路由器、运营商区核、商业Wifi是否存在所请求资源,如果存在,则直接从这些节点中获取资源;否则从CDN获取资源,通过这种机制实现了二级加速,减少了CDN的使用量;在播放端,尤其是SDK中,它不仅可以到二级节点中命中所请求的资源,还可以通过彼此之间的上传和下载命中所需资源,这种消费端彼此命中资源的模式称之为三级加速,进一步降低了二级节点的使用量。通过将PCDN网络和CDN网络结合起来,通过一、二、三级加速达到了较好的用户体验,同时降低了成本。

直播

1bc8b62df54e22ae1d014c42d2376e12781b58ef 

视频直播的技术架构如上图所示,整体流程与点播基本一致,它们的区别在于,直播通常分为两类:HLS切片,它可以利用点播的思想来实现直播,它的原理和刚才的点播实际上是一样的,HLS切片直接被CDN分发,热点内容再分发到二级节点上,如果SDK能够在二级节点命中请求,则从二级节点中获取内容,进行播放,如果不命中或超时则回源CDN。对于直播流RTMP/FLV,它是流的形式,并不是小切片或者文件的形式,因此在CDN网络分发以及被PCDN网络识别和打包前,必须要将视频流推送到切片服务,经处理后分发到CDN中,也就是通过切片服务将RTMP/FLV直播流转换成类似HLS小视频切片,后续处理和HLS相同。

节点布局

为了应对移动端上传的限制,在PCDN的网络中专门部署大量的二级节点,包括运营商汇聚层节点(区核)、商业网络节点(商业wifi、小区宽带)、路由器节点(路由宝及合作机制)。通过这样的节点布局,覆盖了90%以上地级市和五大运营商,P2P带宽储量保守估计达10Tbps。

 

接入流程

下面来看一下如何接入和使用PCDN服务。

e08372ad105f98473381207084ab30cf05c778be 

使用PCDN的大致步骤如上图所示,首先客户了解到品,会同我们售前人员进行需求沟通,主要沟通的问题包括业务场景和带宽需求量,特别是用户群、终端分布、媒资热度和格式;如果沟通之后确定PCDN适用于客户场景,下一步客户需要通过文档和技术人员指导在各端SDK集成联调;第三个环节包括局部上线和正式上线,局部上线时分渠道/地区/运营商逐步打开P2P开关,阶段性评估播放体验,确认一切无误,再全量打开P2P开关,正式投入运营。

接入流程:媒资流量调研

447ec3b7c8ca11ba13a7bcfb5bda5f7f507c000a 

我们在与客户沟通的过程中,需要明确客户的媒资热度,媒资热度反映的是媒资库中热点内容流量占比情况,例如:10%的内容占据90%的流量。图中左侧是媒资库热度分布曲线,横轴是累计媒资数量,纵轴可以是CDN流量(TB)或播放量(vv)、m3u/ts的媒资文件。如果视频播放的频率是完全平均分布的,则媒资热度分布曲线呈现长尾下均匀分布,如图中黄色曲线所示;如果极少数的视频带来绝大多数播放量,则媒资热度分布曲线呈现头部效应下分布,如图中绿色曲线所示,曲线越陡峭则媒资热度集中度越高,实施P2P方案的效果就越好。

接入流程:PCDN SDK

fd3a3e7d80cd251a6644e7a00273bbb958696103 

在接入过程中,主要工作在对接SDK上。相比较而言,PCDN的SDK接口层还是较为简洁的,宿主APP实际上只需要对接SDK接口层所提供的几个简单的方法和接口即可实现整个逻辑,一些复杂的业务实现屏蔽在SDK的内核中。

下面来看一个简单的PCDN SDK接口的调用过程。

0795b6c4147847afe2657c20849fb8fc9cf29564 

 

整体调用过程分为三步:第一步启动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集成

e4e05b947c7a5d9c7ce2b39e1f99743cdde6385c 

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单价计费。

345e6711e51bae4f37b2e06f99b25b8681c59e72 

PCDN与阿里云CDN集成之后的节省效果如上图所示,两者相比较,通过阿里云CDN与PCDN混合方案,每月能够节省32%的成本。

PCDN服务模式二:与任意CDN集成

4f3f0957b1f84b8eac4bd6535b7fbbf3ebfe1d1c 

除了阿里云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点播

64673538ee3187a71ec13fd27e6b1b98d3b1a0f5 

上图是OTT点播的架构模型,在该结构中使用OSS做源站,多家CDN做分发,其中PCDN仅对接阿里云CDN,也就是仅对请求阿里云域名的流量起作用,帮助客户降低了使用阿里云产品的成本。

互动直播

671096d4ac349283ae83e322cc380c4020814805 

上图是互动直播案例架构图,在该案例中PCDN对接所有厂商的CDN(不单是阿里云CDN),使用阿里云直播中心推流,视频流其中一条路径是进入Rtmp/Flv切片服务进行切片,原始直播流和切片后的文件都通过阿里云CDN分发,利用阿里云CDN作为根节点(是第三方CDN的源站),对于各CDN的请求都可以使用PCDN带宽。利用该架构可以降低客户使用各家CDN的成本。


点击打开链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用阿里云PCDN降低内容分发成本 的相关文章

  • -网络基础

    1 物理层 xff1a RJ45 CLOCK IEEE802 3 xff08 中继器 集线器 网关 xff09 数据链路 xff1a PPP FR HDLC VLAN MAC xff08 网桥 xff0c 交换机 xff09 网络层 xff
  • 恒生面试准备

    目录 1 flex布局 2 vue的特性有哪些 xff1f 3 Vue中父子组件的传值的方式有几种 xff1f 它们有什么数据上的限制 4 项目中用了vue组件传值的方式有哪些 5 项目中用到的组件 6 浏览器输入url到渲染网页的过程 7
  • 同程艺龙一面

    目录 1 说说HTML5 2 link标签要放到head之后 xff0c script标签要放到body标签结束之前 xff0c 为什么 3 HTML语义化重要性 4 meta中的viewport干嘛的 5 P标签中的文字如何水平垂直居中
  • 杭州端点一面

    目录 1 vue双向绑定 2 Promise了解过吗 xff1f promise all解释一些 xff0c 为什么可以链式回调 3 let和var的区别 4 深拷贝和浅拷贝区别和实现方式 5 父子组件传值 6 了解webpack吗 xff
  • iOS 中 cell和 label 的自适应高度

    之前我们使 的 cell 一直都是同样的高度 或者某行固定 度 实际开发中经常要让 cell 根据 Model 中文本的长短动态的更改高度 1 获取文本高度 计算一段文本在限定宽高内所占矩形大 iOS7计算文本 度 法 CGRect bou
  • C++获取含有中文的字符串长度

    在Windows下 xff0c 中文字符在C 43 43 中的内存占用为2字节 xff0c 此时采用字符串长度获取函数得到的结果会将一个中文字符识别为两个长度 xff1a include lt stdio h gt include lt s
  • IOS中自定义cell大小的两种方法

    第一种 xff1a 自定义cell xff0c 不用xib的 xff0c 用已经封装好的类Category m类 第一步 xff1a label 的自定义高度 xff0c 用的是 xff08 封装好的方法 xff09 根据 label 中的
  • mysql的2003-Can‘t connect to MySQL server on ‘localhost‘(10061“Unknown error“)错误解决方法

    在我们对mysql的数据库进行连接时出现2003 Can 39 t connect to MySQL server on 39 localhost 39 10061 34 Unknown error 34 的错误 xff0c 截图如下 xf
  • python实现朗读内容

    项目描述 pyttsx3 是 Python 中的文本到语音转换库 与替代库不同 xff0c 它可以脱机工作 xff0c 并且与Python 2和3兼容 pyttsx3 的官网pyttsx3 皮皮 pypi org https pypi or
  • python计算圆的面积

    提示 xff1a 笔记希望对你有帮助 文章目录 前言1 事先准备2 代码书写3 代码运行总结 前言 提示 xff1a 本次我们的代码的是通过pycharm实现的 下面让我们使用python对我们的圆的面积以及周长进行一个简单的计算 1 事先
  • Windows环境下edge浏览器点击下载没有反应

    项目场景 xff1a 系统 xff1a windows 11 家庭中文版 浏览器 xff1a Microsoft Edge版本 104 0 1293 54 正式版本 64 位 问题描述 edge浏览器点击下载没有反应 原因分析 xff1a
  • python怎么查看安装了哪些库

    这里写目录标题 前言方法1方法2 前言 有时候我们在使用python的时候 xff0c 想知道自己安装哪些了第三方库以及第三方库的版本 xff0c 下面来介绍一下方法 方法1 我们可以通过命令提示符输入相关的命令进行查看 xff0c 命令如
  • python 安装dmPython

    文章目录 前言下载达梦数据库安装dmPython模块引用模块解决方法 代码演示 前言 使用python连接我们的连接达梦数据库 下载达梦数据库 达梦数据库的官网链接 达梦数据库的下载链接 安装dmPython模块 找到达梦数据库的安装目录
  • python requests cookie的获取和使用

    文章目录 前言一 cookie是什么 xff1f 二 使用步骤开始代码实现会话是什么然后写入我们的账号信息 使用session访问登陆账号的url获取账号的书架上的数据 完整的代码补充比较暴力的获取方式 前言 我们在使用爬虫中会用到很多账号
  • pyspark报错 org.apache.spark.SparkException: Python worker failed to connect back.

    项目场景 xff1a 使用pycharm工具将spark分析完的数据存储到MySQL数据库中 问题描述 在程序执行过程中发生以下报错 xff1a org span class token punctuation span apache sp
  • python的tkinter(图形用户界面)

    目录标题 什么是图形用户界面 xff08 GUI xff09 Tinter函数和参数说明 xff08 常用 xff09 Lable 标签 xff1a 效果Button 按钮 效果 Entry 文本框 效果 Text xff08 多行文本框
  • K8s配置文档

    xff01 xff01 xff01 xff01 xff01 xff01 如果看不懂文档点击进入视频k8s配置视频 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff

随机推荐

  • 安装spark

    安装spark 上传安装包文件 spark 2 1 1 bin hadoop2 7 解压安装包 span class token function tar span xvf spark 2 1 1 bin hadoop2 7 C opt m
  • 人大金仓数据库的简单巡查

    人大金仓的简单巡查 查询人大金仓的版本 sys ctl V sys ctl version span class token comment 在ksql命令行工具中查询数据库版本 span span class token keyword
  • 人大金仓数据库的单表查询

    人大金仓数据库的单表查询 查看表的内容 span class token comment 查询数据库的创建语句 span d exam span class token punctuation span course span class
  • JWT和Security 登录权限判断和token访问和让token失效

    文章目录 Spring SecurityJWT无状态的单点登录流程用到的方法configure HttpSecurity http 登录 authenticationSuccessHandler loadUserByUsername 通过t
  • Flutter Container设置 width 无效

    文章目录 布局组件和容器组件BoxContraints机制布局组件 Row Column解决办法参考 布局组件和容器组件 容器类Widget和布局类Widget都作用于其子Widget xff0c 不同的是 xff1a 布局类Widget一
  • Flutter 滚动距离来设置TabBar的位置,点击TabBar滚动的到指定的位置

    文章目录 效果gif定义属性每个组件设置Key获取控件的距离顶部的位置设置监听设置TabBar 点击getY源码 感觉有用的话 xff0c star一下如果想一起学习进步 QQ群766903559 效果gif 定义属性 ScrollCont
  • solidity create2 学习

    文章目录 saltcreatecreate2address this clone factoryshr shl使用 两个值生成唯一的值 xff0c 通过唯一值获取对应的两个值 salt nonce 也可以自己生成 create addres
  • Flutter和Native 通信 pigeon

    文章目录 1 pigeon2 定义接口3 定义sh文件 pigeon sh xff08 lib同级目录创建 xff09 4 运行sh文件 pigeon sh 会生成一下文件5 配置6 使用7 IOS xxx plugin h8 XxxPlu
  • flutter调用go

    文章目录 命令引入greeting aar和使用android中使用Flutter2gopluginPlugin kt参考文档 命令 mkdir demo cd demo go mod init demo 编写greeting go go
  • solidity 学习2.批量转账,存入eth。读取数据。

    pragma solidity 0 4 17 import 39 zeppelin solidity contracts token ERC20 StandardToken sol 39 contract BLEOS is Standard
  • 根据图片获取图片中最多的颜色

    根据网络图片获取背景色 xff0c 用Palette 获取出来的颜色总是不对 Palette p 61 Palette from resource generate int defaultColor 61 ContextCompat get
  • flutter-border

    文章目录 Border继承构造方法BorderStyle和BorderSideBorderStyleBorderSide构造方法 BoxShadow构造方法 BoxShape是Code BorderRadius继承CodeRadius xf
  • ubuntu20.04中安装Flatpak,切换数据源

    安装 Flatpak xff1a sudo apt install flatpak 接着 xff0c 使用以下命令添加 Flatpak 数据源 xff1a sudo flatpak remote span class token opera
  • centeros8 图形化界面设置

    基于性能及通用性等因素的考虑 xff0c 阿里云官方提供的公共Linux系统镜像 xff0c 默认不安装图形化桌面组件 通过管理终端连接Linux实例 执行以下命令 xff0c 安装图形桌面的软件包 yum groupinstall 34
  • 定时器周期计算

    对定时器周期公式的总结 xff1a 1 T 61 xff08 arr 43 1 xff09 PSC 43 1 Tck 其中TCK为时钟频率 xff0c PSC为时钟预分频系数 xff0c arr为自动重装载值 f 61 Tck psc 43
  • [已解决 2020年]你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息

    博主更多实战教程 xff1a NET WebApi实战教程 微信小程序实战教程 因为苹果政策的调整 xff0c 目前进行开发者计划加入时 xff0c 有两个模式 如果账号本身是在apple developer app中申请的 xff0c 那
  • LPC1768 IIC通信示——PCF8563

    PCF8563与AT24C02一样 xff0c 是典型的IIC通信器件 xff0c 这里就以它为例 xff0c 编写基于LPC1768硬件IIC的通信代码 xff1a 上图是PCF8563各个寄存器地址 xff0c PCF8563的IIC地
  • 程序员笔试题----字符串的操作

    在程序员面试的过程当中 xff0c 很多时候都会问到对字符串的操作 xff0c 其中包括 xff1a 字符串的逆序 xff0c 字符串的最大字串 xff0c 字符串按单词逆序 xff0c 两个字符串的最大公共子串 xff0c 记录字符串中某
  • 如何选择离线数据集成方案 - 全量&增量

    1 前言 我在上一篇中介绍了实时集成与离线集成该怎么选择 xff0c 接着介绍一下离线集成中的增量与全量的选择问题 要设计方案 xff0c 我们先分析一下数据产生的方式 我们把音视频流这种非结构化的数据集成从这里排除出去 xff0c 因为这
  • 使用阿里云PCDN降低内容分发成本

    点击打开链接 阿里云PCDN xff08 P 2P CDN 的 简称 xff09 是基于P2P技术的内容分发 网络 产品 xff0c 相比CDN而言 xff0c PCDN单价较低 xff0c 更适 用 于大流量内容分发 PCDN产品是与传统