流媒体业务是一种对实时性、连续性、时序性要求非常高的业务,无论从带宽消耗上还是质量保障上来说,
对best-effort的IP网络都是一个不小的冲击

–高带宽要求
–高QoS要求
–组播、广播要求(目前IP网络无法实现端到端的组播业务)

播放一个视频分为以下四个步骤
–Access
–Demux(音视频分离)
–Decode(解码解压缩)
–Output

RTP、RTCP、RTSP、RTMP的关系:
RTSP协议用来实现远程播放控制,RTP用来提供时间信息和实现流同步,
RTCP协助RTP完成传输质量控制<=(播放控制),
=>(传输控制)RTMP和HTTP streaming则是将流同步、播放控制、质量控制集成起来的企业自有流媒体传送协议
RTMP是adobe的传输协议。
RTMP的基本通信单元:消息块(chunk)和消息(message)
RTMP协议架构在TCP层之上,但RTMP消息并不是直接封装在TCP中,而是通过一个被称为消息块的封装单元进行传输。
消息在网络上发送之前往往需要分割成多个较小的部分,这样较小的部分就是消息块,属于不同消息流的消息块可以在网络上交叉发送。
RTSP/RTP和HTTP streaming是目前应用最广泛的流化协议,
目前电信运营商在IPTV(特殊通道的基于IP的流媒体播放)的流化上主要以RTSP/RTP技术为主,
而互联网视频网站(点播/直播)则多倾向于使用HTTP streaming的流化技术。
HTTP streaming前身是progressive download(渐进式下载:边下载边播放,直到下载完)。
HTTP streaming首先会将视频数据(包括直播的视频流和点播的视频文件)在服务器上进行编码,
然后将编码后的数据进行更细粒度的分片,再把每个分片通过 HTTP协议传输到客户端。
HTTP streaming的客户端需要对视频文件的每个分片都发出一个HTTP请求,
这样,在视频播放速度低于下载速度的情况下,
客户端可以灵活控制HTTP请求的发出速度,从而保证用户在中途退出时不会出现下载浪费。
另外,因为采用分片的特点,HTTP streaming还可以实现媒体播放过程中的码率切换(码率自适应),
结合网络带宽资源,为用户提供更好的体验。

HTTP streaming                            
支持点播、直播    
可对分片文件加密,保证数字版权    
因为分片传输,故支持码率自适应

Progressive download
仅支持点播
直接把媒体文件分割成多个小文件分片,无法保障版权所有
只支持固定码率

HTTP streaming    
基于TCP,更高可靠性,也可以直接利用TCP的流控机制来适应带宽的变化    
可将播放过的内容保存在客户端    
使用80端口,能穿越防火墙    
采用标准的HTTP协议来传输,只需要标准的HTTP服务器支撑

RTSP/RTP
基于UDP
不能保存在客户端
使用特殊端口
需要特殊的流媒体服务器

HTTP streaming的几个主流阵营:
–3GPP adaptive HTTP Streaming
–Microsoft IIS Smooth Streaming
-Adobe HTTP Dynamic Streaming (HDS)
–Apple HTTP Live Streaming (HLS)

HLS流化技术主要分三个部分:
服务器组件、分发组件和客户端软件

–服务器组件主要负责从原始的音视频设备捕捉相应的音视频流,并对这些输入的媒体流进行编码,
然后进行封装和分片,最后交付给分发组件来进行传送;

–分发组件主要负责接收客户端发送的请求,然后将封装的流媒体分片文件连同相关的索引文件一起发送给客户端。
对于没有采用CDN服务的源服务器,标准的 Web服务器就是一个分发组件,
而对于大型的视频网站或者类似的大规模应用平台,分发组件还应包括支持RTMP协议的CDN;

–客户端软件负责确定应该请求的具体媒体流,下载相关资源,并在下载后通过拼接分片将流媒体重新展现给用户
HLS音视频流或流媒体文件在经过编码、封装和分片后,变成多个以.ts结尾的分片文件。
流分割器产生的索引文件是以.M3U8为后缀的,用户可以直接通过Web访问来获取
分发组件负责将分片文件和索引文件通过HTTP的方式发送给客户端,
无须对现有的Web服务器和Cache设备进行额外的扩展、配置和升级
客户端组件根据URL来获取这个视频的索引文件。

索引文件包含了可提供分片文件的具体位置、解密密钥以及可用的替换流。
HDS,点播内容是通过一个简单的预编码生成MP4片段以及Manifest清单文件;
直播的内容准备工作流程相对复杂一点,
在播放的过程中生成MP4.(直播推荐用RTMP,使用FMS推流器)
MPEG-2 TS是指TS格式封装的、MPEG-2编码格式的媒体流。大多数IPTV系统使用这种内容源。
H.264这一层完成原始文件的压缩编码,TS这一层负责音 视频的复用以及同步,
RTP这一层负责流的顺序传输,UDP这一层负责数据包的交付,IP层负责传输路由选择

流媒体加速的回源要求:因为流媒体文件传送带宽需求高,而且往往需要维持TCP长连接,
所以一旦CDN回源比例过高,源 站服务器I/O将不堪负荷。

CDN对内容采取分发方式分为pull和push两种。Pull是被动下拉的方式,push是主动推送的方式。
对于流媒体内容,系统一般会选择对热点内容采取push方式的预分发,而普通的网页内容几乎100%是pull方式的。
在流媒体CDN系统中,用户访问的调度会更多考虑内容命中,主要是因为流媒体内容文件体积大,业务质量要求高,
如果从其他节点拉内容再向用户提供服务会带来额外的延迟,影响用户体验。
为进一步提高命中率,流媒体CDN系统普遍采用了对热点内容实施预先push的内容分发策略
在流媒体服务系统中,主要关注的技术是对不同流媒体协议、不同编码格式、不同播放器、不同业务质量要求等的适应。

流媒体CDN与Web CDN的对比(业务差异)
主要差异点

内容类型
流媒体CDN:大文件、实时流、QoS要求高
Web CDN:小文件、固定大小、QoS要求低

用户行为
流媒体CDN:拖曳、暂停等播放控制
Web CDN:下载后浏览

内容管理
流媒体CDN:内容冷热度差异明显(对命中率要求高),内容生命周期长
Web CDN:内容冷热度差异不明显,内容生命周期短

回源要求
流媒体CDN:回源比例小
Web CDN:回源比例大

现在已经投入商用的CDN系统,基本都是同时提供Web CDN能力和流媒体CDN能力的,
而且这两种能力的实现在系统内部几乎都是互相隔离的,从调度系统到节点设备都没有交叉互用

流媒体CDN与Web CDN的设计差异(设计差异)
主要差异点    
Cache  
流媒体CDN:支持多种流化协议,硬件配置大存储、高I/O
Web CDN:支持多协议(HTTP、FTP等)硬件配置小存储、高性能CPU

负载均衡
流媒体CDN:DNS+HTTP重定向方式
Web CDN:DNS方式

内容分发方式
流媒体CDN:热片PUSH,冷片PULL
Web CDN:全PULL方式

组网
流媒体CDN:多级组网,可能要求组播、单播混合组网
Web CDN:两级组网

流媒体CDN的Cache设备与Web Cache无论在软件实现还是硬件要求上差异都很大,我们很少看到这两种业务共用同一台设备
当用户请求的内容在Cache上命中时,Cache直接向用户提供流服务,此时Cache设备充当流媒体服务器的角色; 当用户请求内容未能在Cache上命中时,Cache会从上一级Cache(二级缓存设备或中间缓存设备)或者源站服务器获取内容,再提供给用户。

Cache在用户与另一个流媒体服务器之间扮演代理的角色
分布式存储技术因其大容量、低成本的特点,目前也被业界关注和研究作为流媒体CDN系统的存储解决方案之一。
常用的分布式存储技术包括分布式文件系统和分布式数据库,
由于采用了数据副本冗余(每份数据复制2~3份)、磁盘冗余(Raid1、Raid10、Raid5)等技术,
通常可以提供良好的数据容错机制,当单台存储设备断电或者单个存储磁盘失效时,整个存储系统仍能正常工作
负载均衡设备在进行用户访问调度时,会综合考虑很多静态的、动态的参数,包括IP就近性、连接保持、内容命中、响应速 度、连接数等。
但没有哪个CDN会考虑所有参数,而是会根据业务特点进行一些取舍,否则均衡系统就太复杂了。
而流媒体CDN在进行用户访问调度时,会更多考虑内容命中这一参数

有两种GSLB实现方式,一种是基于DNS的,一种是基于应用层重定向的
PUSH方式适合内容访问比较集中的情况,如热点的影视流媒体内容,PULL方式比较适合内容访问分散的情况
对使用CDN服务的SP来说,CDN的作用在于尽量就近为用户提供服务,
帮助SP解决长距离IP传输和跨域传输带来的种 种业务质量问题(通过空间换取时间)。
因此,为用户提供服务的Cache设备一定部署在离用户比较近的地方。另一方面,CDN的建设者从成本角度考虑,又 不能把所有内容都存放在这些离用户最近的节点中,这会消耗大量存储成本,所以这些提供服务的Cache设备会根据需要从源站服务器或者其他Cache获取 内容。

这样就形成了CDN网络分层部署的概念。
从网络分层上看,Web CDN通常是两级架构(也有三级架构以减少回源),即中心-边缘。而流媒体CDN通常有三级以上架构,即中心-区域-边缘。
产生这种区别的原因在于流媒体 回源成本比较高,源站服务器响应一次流媒体内容回源请求,要比Web内容回源消耗更多资源。
尤其对于流媒体直播业务来说,只要直播节目没结束,服务器就需 要长时间持续吐流,如果没有第二层节点作为中继,那么中心节点的压力将是不可想象的。

分层部署的方式,对点播业务而言的主要意义是节省存储成本,对直播业务而言在于减少带宽成本。
在点播业务中,边缘Cache只需存储用户访问量大的内容或者内容片断,其余内容存储在区域Cache中。
在直播业务中,边缘Cache从区域中心获取直播流,而不需要直接向中心节点(源站)获取,
从而节省了区域中心到中心节点这一段的大部分带宽。
因为直播流在各个Cache中都不需要占用很大的存储空间,只需少量缓存空间即可,
所以直播业务方面并不用注重考虑存储成本
考虑到电信运营商的IP拓扑和流量模型,区域中心Cache通常部署在重点城市的城域网出口的位置,
以保障向各个边缘 Cache的链路通畅。
边缘Cache的位置选择则以整个节点能够提供的并发能力为主要依据,依据业务并发数收敛比,
计算出单个Cache需要覆盖的用户 规模,从而选择一个合适的部署位置。
当然,边缘Cache离用户越近,服务质量越好,但覆盖的用户数越少,部署成本越高。

内容文件预处理
是指视频内容进入CDN以后,进入内容分发流程之前,CDN系统对内容进行的一系列处理过程。这个预处理过程的目的有几个:
–为全网内容管理提供依据,比如对内容进行全网唯一标识,对内容基础信息进行记录等
–为提高CDN服务效率或降低系统成本提供手段,比如内容切片
–为满足业务要求提供能力,比如对同一内容进行多种码率的转换以满足动态带宽自适应或三屏互动业务要求
视频转码(video transcoding)
– 码率转换
–空间分辨率转换
–时间分辨率转换
– 编码格式转换。编码格式主要包括H.264、MPEG-4、MPEG-2、VC-1、REAL、H.263、WMV。通常是把其他编码格式转换成H.264

文件切片
是指按照一定的规则把一个完整的文件切成大小一致的若干个小文件;
由于流媒体CDN需要提供的内容体积越来越大,传统整片存储带来的成本消耗超出了CDN服务商的承受范围;
切片的另一个目的是,使边缘Cache能够支持自适应码率业务
防盗链机制和实现
–基于IP的黑白名单
–利用HTTP header的referer字段
–使用动态密钥(随机生成的key通过算法生成新的url)
–在内容中插入数据(对有版权内容进行加密(DRM),如Microsoft的playready,Google的Widevine)
–打包下载:在原文件的基础上进一步封装,使得资源的hash值改变
备注:随笔中内容来源于网上资料整理,仅供参考。

转载于:https://www.cnblogs.com/Alanf/p/8072161.html

CDN技术之--流媒体CDN系统的组成相关推荐

  1. CDN技术简介及CDN绕过

    什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发 ...

  2. CDN及P2P技术在流媒体网络中的应用

    新疆电信有限公司信息业务分公司 闫卫东 [ 来源:<新疆通信> 上传时间:06-10-16 ] 摘 要: 随着宽带网络的日益普及,流媒体成为了重要的互联网业务之一,完成实时流媒体的分发的主 ...

  3. 【转载】视频CDN技术原理与流程说明

    视频CDN专为移动互联网视频内容分发量身定做的一套自主研发的分布式平台,该平台以深圳为中心,分布在全国各地BGP机房的服务器为边缘节点,汇聚中国电信.中国联通.中国移动.中国教育网等运营商网络资源,构 ...

  4. 一篇文章带你飞,轻松弄懂 CDN 技术原理

    概述 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的 ...

  5. 云帆加速扶凯:坚守本源 做技术流的CDN

    2016年,堪称在线视频爆发年,中国在线视频市场规模超过 600 亿,同比增长率为51.5%.在线视频整体市场规模保持快速增长,并出现了新的增长点.首先,视频用户付费市场在各家视频企业的推动下有了长足 ...

  6. CDN技术的发展历程

    在互联网上,悄然生长出一张时刻为人们服务的网络,它像一位隐形的快递员,将各种各样的内容交付给用户,这就是内容分发网络(CDN,Content Distribute Network). CDN的基本概念 ...

  7. 大型网站架构利器-CDN技术

    转载自 大型网站架构利器-CDN技术 概念 CDN这个概念相信大家都比较耳熟,到底什么是CDN呢? CDN,全称为Content Delivery Network,即内容分发网络. 其基本思路是尽可能 ...

  8. 阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年

    提到阿里云CDN,不得不提技术掌舵人姚伟斌(文景),虽然他不是团队中最"老"的同学,但他却历经了淘宝业务发展最为飞速的几年,见证了从最初服务淘宝和集团内部的CDN,到如今国内服务客 ...

  9. CDN技术之--全局负载均衡(GSLB)

    负载均衡就是智能调度 全局负载均衡(GSLB)的负载均衡主要是在多个节点之间进行均衡,其结果可能直接终结负载均衡过程, 也可能将用户访问交付下一层次的(区域或本地)负载均衡系统进行处理. GSLB最通 ...

最新文章

  1. 处理器拦截器(HandlerInterceptor)详解
  2. C#和JavaScript的简单互交
  3. android开发 交换方向,Android实现去哪儿携程地址互换效果
  4. 【2018.4.21】模拟赛之四-ssl2405 巧克力【实际上是模拟】
  5. cordova 某个页面强制横屏_小白科普:从输入网址到最后浏览器呈现页面内容,中间发生了什么?...
  6. 无法删除计算机文件是什么意思,该计算机是Windows10系统,我不知道为什么最近无法删除某些文件...
  7. bzoj15523506 robotic sort
  8. 6000万条GitHub帖子告诉你:工作状态与表情符号强相关
  9. 不购买2021新款MacBook Pro的理由
  10. HRESULT:0x80040228 异常解决
  11. access百科 pc_Access是什么
  12. 快易需求文档编辑系统——测试心得
  13. “构建可信社会,重塑商业共识体系”彩虹商链发布会将在辽宁举行
  14. 浮点型数据在内存中是如何存储的
  15. 点击网页弹出窗口的js代码
  16. python 类属性函数,python_30期【类包含属性和函数】
  17. 5xx 系列内部服务器错误
  18. C语言文件读写(1)-文本文件读操作
  19. 在windows11环境下如何通过主机名ping通其它系统
  20. 宗镜录略讲——南怀瑾老师——系列5

热门文章

  1. 实验5_JPEG解码
  2. SLAM 学习与开发经验分享
  3. python日历函数_python 怎么定义一个函数,输出日历
  4. php多分支结构 案例,第4天 PHP分支、循环结构
  5. java学习笔记2022.1.17
  6. 课程表—leetcode207
  7. MD5单向,加密算法-java
  8. 程序运行时堆区和栈区的分配
  9. 贪心 - 划分字母区间
  10. 2.区间成员函数优先于与之对应的单元素成员函数