(转)从集中到分布,解读网络视频IT架构变迁
2006年以视频网站为代表的网络视频行业迅速崛起,IPTV、视频分享网站、视频搜索网站、提供视频服务的互动社区、交友、播客等等新兴媒体发展迅猛。网络视频行业现已成为众多资本机构关注与投资的焦点。但是在网络视频行业发展前景一片大好的同时,一些运营问题也随之显现,步入2007年,资本机构对网络视频行业不再盲目狂热,对商业模式的创新和成本控制提出了更高的要求。
今天,纯文字的表现形式已经不能满足用户对更丰富多彩的网络内容的需求,我们需要更丰富的数字出版物、图片、声音以及视频来表达和交流;同时,单向传播也不能满足用户对互动式网络体验的需求,我们需要更丰富灵活的交流与互动体验;IT架构必须能够承载和传播这些爆发式增长的非结构化的数据。
同时,用户访问量的增长却从没有停止过,相对于传统应用,网络视频行业应用有着非常庞大的用户数量上涨空间,IT设施面临着强大的成本控制的压力。
那么,我们究竟该如何应对网络视频行业的商业模式创新和成本控制的挑战呢?
视频网站的典型应用架构
我们将以网络视频行业中最具代表性的视频分享网站为例,通过某视频网站的存储环境改造案例来看看网络视频需要什么样的IT结构、分析什么样的存储系统能够更好的来支撑商业模式的创新,并合理的控制成本。
视频网站的典型应用架构
首先,我们来看看该视频网站的IT结构:如上图所示,分别由流媒体服务器、Web服务器、在线录制服务器、视频转换服务器、数据库服务器、管理服务器、图片服务器和其他服务器等一系列不同数量的服务器组成。
这一架构在目前的视频网站中带有一定的典型性。但是由这几个部分组合起来的IT结构,如何才能支撑视频分享门户的竞争优势呢?
满足交互性体验和服务压力
以下我们将从应用需求和技术特点两方面来分析,该架构如何满足该视频网站的运营需求:
1. 交互性体验方面:
首先,为满足用户对交互体验的需要并保持自身的原创优势,需要为用户提供视频上传和在线录制视频的功能;其次,需要把不同格式的视频,转换成该网站统一的格式;最后,需要在上传后尽快发布以供播出。
2. 服务压力方面:
首先,不但需要应对已有的大数量的用户访问,而且将迎接持续的访问量增长;其次,当用户访问量增加时,需要保持良好的反映速度和响应时间;最后,必须面对清晰度日渐提高后,码流增大所带来的服务压力。
在各个技术层面上,我们如何更好的满足上述诸多需要呢?
1. 在编解码技术层面:编解码技术不断推陈出新,我们可以看到解码效果更好,编码压缩率更高的编解码方式等诸多方面均有良好进展。尤其是由中科院计算所牵头制定的AVS标准,是具有我国自主知识产权的新一代编解码标准,将促进我国网络视频行业的健康发展。
2. 在媒体的传输层面:CDN技术已经比较成熟,P2P技术的发展也非常的迅速,虽然存在缺乏统一标准等问题,但无法掩盖P2P技术的锋芒。目前,已有不少的视频平台运营商采用了P2P技术。此外,CDN+P2P的复合技术也有了比较好的发展。
3. 在媒体的服务提供层面:服务器集群技术已经相当成熟:双机到多机的数据库集群、由DNS轮询或相关技术实现的Web服务器集群、由相关查询指向技术实现的流媒体服务器集群等都可以比较方便的实现。成熟的服务器集群技术可以实现按需增加相应应用服务器来应对业务需求,足以为网络视频行业提供良好的支撑。
4. 在媒体资源存储方面:需要有大容量、高带宽、可共享的存储技术来支撑,而传统的存储结构和存储技术,却不能很好的满足视频网站的存储需求。
那么视频网站在存储方面都有什么具体的要求,存储环境怎样才能够满足这些要求呢?下面我们通过一个实例来详细分析视频网站对存储环境的需求:
集中式存储把鸡蛋放到一个篮子里
传统存储的体系结构无非有两种:集中式和分布式。网络视频存储方案面临着集中式存储和分布式存储两种选择,两种结构各有优缺点,选择起来其实是比较困难的。本案中的视频网站的存储结构就经历了“集中–分布–分布式的集中存储”的循回式的变迁:
该网站建立之初,采用了集中式的存储结构。
某视频网站原有集中式存储系统
很多网络视频的存储采用的大多类似于上图的、集中式的存储结构来存放所有媒体数据,通常为NAS架构。简单地说,就是一台大容量的文件服务器,而高端的NAS结构是由一个NAS头后面接SAS、SCSI或光纤盘阵。
集中式存储的优点是比较明显的:
1. 集中存储可实现服务的负载均衡,由于流媒体服务间的数据都是共享且统一的,当发生热点繁忙时,所有流媒体服务器都可为其提供服务,分减压力,而不像分布式的存储会出现热点繁忙,没有热点内容的存储出现空闲这种不均匀情况。
2. 集中存储提高了存储资源的利用率。
3. 集中的高Raid 级别保护且成本较低,分布式存储都实现Raid保护成本高昂。
4. 集中的备份(快照)恢复,能方便的实现远程容灾。
5. 集中存储方案管理复杂度相对较低,以管理Mount点为例:需管理Mount点的数量为16(M+N+F+W)个,即上图中的16根蓝线。
6. 集中存储同时也是对流媒体服务器视频内容的集中管理。
我们知道集中式存储同时拥有了诸多优点,应该能够满足该网站实际运营的需要。但是,在视频网站发展和访问量增长的同时,该网站最终还是放弃集中式的存储结构转而采用分布式的存储结构,这是为什么呢?
从集中到分布,化解存储瓶颈
接上篇:从集中到分布,解读网络视频IT架构变迁(下)。集中式存储已经拥有了诸多优势,那么为何这家视频网站最终却选择了其他的存储架构呢?该视频网站究竟在运营过程中遭遇到了什么样的阻碍呢?经过我们对整个网站存储结构的分析,原来,NAS头成为整个存储环境的瓶颈……
从以下两幅图中,我们可以看到传统的集中存储方案中,存在如下问题:
- I/O瓶颈
- 容量扩展性差
- 性能不可扩展
- 专业高端NAS成本高昂
- 单点故障
NAS成为系统瓶颈
传统集中式存储的瓶颈
随着数据量的增加,存储压力也变得越来越集中,NAS已不足以支撑现有的应用,无法更好的应对未来的挑战。既而,该网站从集中式的存储方式转向了采用分布式的存储方式。
分布式存储系统架构
图中,每台服务器上都提供文件共享服务,由应用层来实现媒体资源数据在各个服务器集群之间的迁移,从而比较好的解决了集中存储的IO瓶颈问题,但是问题也随之而来。
分布式的存储没有负载均衡,例如:发生热点的时候、部分流媒体服务器忙或部分闲置
分布式存储利用相对较低率,重复数据大量存在,且份数多
无法实现集中的高Raid 级别保护
快照、备份、恢复、远程容灾比集中存储实现成本高
需要在应用层对存储层过多关注。管理复杂度程几何级增长,整体系统维护工作越来越复杂、繁重。以管理Mount点为例:同样的服务器数,需管理Mount 点的数量为48 [M*(N+F)+W*N]个,即上图中的48根红线,远大于集中存储结构。这仅仅是Mount点一项,还不包括各个点存储数据的维护,在实际应用中相关的工作量是相当惊人,管理员疲于奔命。
集中VS.分布?还是分布式的集中?
既然传统的集中和分布都存在不同的问题,怎么样去解决?在给出答案之前,我们重新归纳前面分析的视频网站对存储的需求:
1. 各种服务器集群之间有视频传递的需求,需要上传服务器、流媒体服务器、在线录制服务器和转换服务器之间的视频文件是互相可见的,翻译成存储的语言则需要文件级共享的存储。
2. 各种应用服务器可能使用着不同的操作系统平台,都需要无差异的访问到存储空间,而翻译成存储的语言则需要跨平台共享的存储。
3. 多台流媒体服务器之间的存储容量需要共享,从而提高存储空间的利用率。如采用传统SAN上面划分独立的存储空间,给每台服务器的类似做法显然是不可接受的,并且需要视频内容合理的分布在各个存储设备上,翻译成存储的语言则需要存储容量的负载均衡。
4. 单台存储设备的存储速度始终是有限的,需要多个存储设备的聚合才能满足视频内容访问量的爆炸式的增长,翻译成存储的语言则需要多台存储设备间的存储速度的聚合,从而实现存储速度的负载均衡。
5. 新增视频内容的不断添加会导致存储容量的不断扩大,在添加设备扩展容量的时,能够不影响原有系统,且平滑扩展,能够实现在线的扩展业务系统不停机,翻译成存储的语言则需要容量线性可扩展,能够实现在线扩容。
6. 随着用户访问量增长和视频清晰度提高带来的带宽增长等诸多增长因素的影响,对存储带宽的增长需求,要求存储系统实现带宽随容量呈线性增长。
7. 合理的成本控制是一个恒久的话题,需要存储系统的总体拥有成本随容量的扩展而合理的扩展,不能出现突变式的增长。
8. 稳定性自然不用说,需要存储系统采用冗余结构以提高系统的稳定性。
为了满足上述需求,当我们面对“集中VS.分布”这个艰难抉择的时候,技术的不断进步,涌现出:分布式的集中存储结构——集群存储技术,其核心技术是集群文件系统。
集群存储系统满足视频行业服务需求
目前,广为流行的集群文件系统的典型代表主要有:
- Google 的GFS (Google File System)
- 国内中科院研发的BWFS(Blue Whale File System)
- Panasas 的PanFS (PanFS File System)
- IBM 的 GPFS (General Parallel File System)
- CFS 的 Lustre (Lustre File System)
这五种集群文件系统各有特点和优势,一般而言,分布式集中存储相对于传统存储系统来说拥有如下优点:采用统一的全局命名空间,支持文件级共享,且采用分布式存储结构,能实现高聚合I/O带宽,并且跨Linux平台和Windows平台的文件共享,还能够线性扩展I/O带宽,拥有良好的系统负载平稳性,并能够动态扩展存储容量,实现成本可控。
基于分布式结构的集中存储
如上图所示:该架构能较好的满足网络视频对存储系统的需求。
1. 文件共享、统一的全局命名空间——上传服务器和流媒体服务器之间的文件可见性;多台流媒体服务器间的存储容量共享
2. 多台存储设备间的存储速度的聚合——流媒体服务器可用的存储速度负载均衡
3. 跨平台共享(Windows/Linux)——支持不同平台的流媒体服务器、上传和其他服务器
4. 容量线性可扩展——使流媒体服务能应对不断扩大的存储容量需求
5. 带宽随着容量线性增长——使流媒体服务能应对不断扩大的用户访问量; 可以按需扩大流媒体服务器的数量而不用担心存储
6. 成本需随着容量的扩展而扩展——良好的成本控制
7. 全冗余结构——稳定的强壮的存储系统
该视频网站最终选择基于BWFS集群文件系统的BWStor蓝鲸集群存储系统。BWFS是由我国中科院计算所工程中心自主研发的文件系统,并经由中科院中科储天公司产品化。中科院中科储天蓝鲸集群存储系统(BWStor)即采用BWFS文件系统为核心技术,是中国自主知识产权存储产品的代表之一。
(转)从集中到分布,解读网络视频IT架构变迁的更多相关文章
- Android 视频播放器 VideoView 的使用,播放本地视频 和 网络 视频
1.布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...
- Android Multimedia框架总结(二)MediaPlayer框架及播放网络视频案例
前言:前面一篇我们介绍MediaPlayer相关方法,有人说,没有实际例子,看得不是很明白,今天在分析MediaPlayer时,顺带一个播放网络视频例子.可以自行试试.今天分析的都是下几篇介绍各个模块 ...
- android 随手记 videoview循环播放网络视频 和mediaplayer+sufaceview播放网络视频
1:videoview循环播放视频 1>xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res ...
- iOS 对网络视频采集视频截图
在播放网络视频是 经常可以看到播放按钮下面是该制品的某个截图 : 一般情况下 后台服务器是可以把视频截图一起返回给你 你直接拿到图片显示就可以了 但是当后台没有提供时 我们也可以根据视频地址 自 ...
- 【转】网络视频监控P2P解决方案
一.摘要 本文分析了日益增长的民用级别家庭和个人网络视频监控市场的需求特点,并给出了一种经济可行易于大规模部署的P2P解决方案. 由于篇幅有限,本文只给出了方案的思路,未对更深入的技术细节做详细的论述 ...
- 瑞蓝RL-NDVM-A16网络视频解码器 视频上墙解决方案专家--数字视频解码矩阵
瑞蓝网络数字视频解码矩阵(简称RL-NDVM)是依据第三代开放式网络视频监控系统的实际需求,专为视频上墙显示而研制的一款新型数字解码上墙设备.RL-NDVM解码矩阵是集解码器和HDMI/DVI/VGA ...
- Android内嵌VLC实现播放网络视频,网络音频
1.在对应模块的build.gradle文件中,添加依赖 //VlC implementation "de.mrmaffen:vlc-android-sdk:2.0.6" 2.布局 ...
- H.265:网络视频的高清时代
去年八月,爱立信公司推出了首款H.265编解码器,而在仅仅六个月之后,国际电联(ITU)就正式批准通过了HEVC/H.265标准,标准全称为高效视频编码(High Efficiency Video C ...
- Android VideoView播放网络视频简介(转)
最近项目中用到了很多视频播放的地方,不管是聊天发送的视频消息,还是类似内涵段子的视频列表,都会涉及这些知识,不过网上的知识都很零散,一会找缓存方法,一会找预览图片的方法,一会找视频动态修改尺寸的方法, ...
随机推荐
- 实现顶部轮播,下部listview经典布局的两种方式
开头: 在做android开发的时候,我们经常会遇到这样的布局,上面是一个图片轮播图,下面是一些列表的项目.很多新闻app,视频类app都采用这样的布局.起初的时候 由于没有很多参考,我自己想到了一种 ...
- h5-2
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- cocos2d-x中CCCallFunc CCCallFuncN CCCallFuncND的区别和使用示例
转自:http://xiandanboke.com.cn/cocos2d-xcccallfunc.html CCCallFunc CCCallFuncN CCCallFuncND的区别和使用 CCCa ...
- error C2440:“类型转换":无法从“void (__thiscall Play1::* )(int *)”转换为“cocos2d::SEL_CallFucN
转自:http://zhidao.baidu.com/link?url=VfSSkA0xfTVwNKaKh4tqW_sXlcsK-Rb16nEtQw5zaq5_306lnwJN3Kdb-rFp-r4L ...
- LMAX Disruptor – High Performance, Low Latency and Simple Too 转载
原文地址:http://www.symphonious.net/2011/07/11/lmax-disruptor-high-performance-low-latency-and-simple-to ...
- 用vim处理字符的大小写转换
转载: http://blog.csdn.net/ruixj/article/details/3765385 http://www.linuxsong.org/2010/09/vim-convert- ...
- LeetCode34 Search for a Range
题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...
- OC之protocol监听器的实现
画图 图解 代码 总结 一.画图 本人画了一个图(字体和画图水平请忽略) 二.图解 1.首先我们上边是一个按钮的类,按钮当中包括了一条线,这个线是什么呢? 其实难理解就难理解到这条线上了 1⃣️这条线 ...
- 【原创】C++链表如何像Python List一样支持多种数据类型
用过Python的码友都知道,Python中List支持多种数据类型,如下面代码所示链表li内的数据类型可以是整数,同时也可以是字符串,当然也可以是其他数据类型. 1: >>> li ...
- 社交分享:-canOpenURL: failed for URL: "weixin://app/*************/" - error: "This app is not allowed to query for scheme weixin"
升级到iOS9后,微信,QQ,微博等社交软件的分享都失效了,控制台默默地打印了这条信息: This app is not allowed to query for scheme xxx 这是因为iOS ...