多媒体流化服务:
将视频文件分解为多个视频流,视频突出的特征是高比特率,压缩的因特网视频比特率范围通常从低质量视频的100kbps,到流式高分辨率电影的3Mbps,再到当前4K的超过10Mbps。
一、DASH(Dynamic Adaptive Streaming orver HTTP)
在DASH中,视频编码为几个不同的版本,每个版本提供不同的比特率
服务器:
- 将视频文件分割成多个块
- 每个块独立存储,编码于不同比特率(8-10种)
- 告示文件(manifest file):提供不同块的URL及比特率
客户端:
- 先获取告示文件
- 周期性测量服务器到客户端的带宽
- 查询告示文件,在一个时刻请求一个块,HTTP GET请求报文中指定一个字节范围
- 会话的不同时刻,客户端可以任意切换请求不同的编码块
在客户端一侧,每个块被缓存在客户端应用程序缓存中,应用程序抓取帧并对这些帧解压缩然后在屏幕展示。因此流式视频应用收到视频块就进行播放,同时缓存该视频后面部分的帧
二、内容分发网(Content Distribution Network,CDN)
-
对于视频网站来说,单体数据中心将造成链路太长等问题,为了向全世界的用户分发巨量视频数据,几乎所有的视频流公司都利用CDN。
-
CDN管理分布在多个地理位置上的服务器,在它的服务器中存储视频的副本,并且所有的试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置。CDN可以是专用的(谷歌CDN),也可以是第三方CDN
-
CDN服务器安装原则:
- 深入
在遍及全球的ISP中部署CDN服务集群来深入到ISP接入网,靠近端用户,改善用户感受的时延和吞吐量。但这种高度分布式设计,维护和管理集群难度很大。 - 邀请做客
在少量位置建立大集群来邀请ISP做客,这些CDN通常将它们的集群位置放在因特网交换点(IXP)。
CDN集群可以跨集群复制内容,并不是所有视频的副本存放在每个位置的集群中,许多CDN不将视频推入它们的集群,而是使用一种简单的拉策略:
客户向一个未存储该视频的集群请求某视频,则该集群检索该视频(从某中心仓库或者另一个集群),向客户流式传输视频的同时在本地存储一个副本。类似于网络缓存,当某集群存储器变满时,它删除不经常请求的视频。
- 深入
三、CDN操作
-
用户通过客户端发送一个对某视频的访问请求后,CDN必须截获请求,以便
- 确定此时适合用于该客户的CDN服务集群
- 将客户的请求重定向到该集群的某台服务器
-
CDN通过DNS来截获和重定向请求,以客户请求http://vedio.www.baidu.com/jia757为例,假设TCDN为百度的第三方CDN内容服务商:
- 用户在客户端点击http://vedio.www.baidu.com/jia757链接后,用户主机发送了一个对于vedio.www.baidu.com的DNS请求
- 本地的DNS服务器将请求中继到baidu的权威DNS服务器,服务器发现有vedio字样,向本地DNS服务器响应发送一个TCDN域的主机名,例如:all.tcdn.com
- 从此,DNS请求进入到了TCDN专用的DNS设施,本地DNS服务器发送第二个请求,对all.tcdn.com的DNS请求,TCDN的DNS系统(权威服务器)向本地DNS服务器返回TCDN内容服务器的IP地址,客户端将从这台服务器接收到它的内容
- 本地DNS服务器向用户主机转发内容服务CDN节点的IP地址
- 客户端收到TCDN内容服务器的IP地址,建立TCP连接,发出对视频的HTTP GET请求。
-
集群选择策略:
-
地理上最为临近(通过商用地理位置数据库),但对有些用户,就网络链路长度和跳数来算,地理位置最邻近并不一定时最近的集群
-
实时测量(CDN周期性的向位于全球的所有本地DNS服务器发送探测分组)
缺点:需要本地DNS服务器被设置为不会响应这些探测
-
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153698.html