网站视频流媒体平台设计方案(基于Internet)(3)
4.”分布式"系统
现在好多软件或网站都讲究分布式或SOA,要求的无疑就是高性能和高方便性,我的这个设计也可以很容易的就做到分布式,而且需要的变动很小,可以很容易的就扩展到多台机器上,也许一开始我们没有足够的资本去部署好几台服务器,而后来随着业务的需求慢慢的用户数增多了,硬件满足不了需求,或是一个系统的多个组件对系统的资源形成征用性依赖,那么把系统做成分布式就非常有不要了。下面我们看看系统是怎么变身的:
图中的三条横向虚线代笔了服务器的分割线。
在上图中我们看到了跟部署在一台服务器上是有区别的,变化在哪里呢?
-
1.直播系统和点播系统各自维护了一个自己的文件系统。
-
2.直播系统、点播系统的文件系统通过适配器Adapter与核心文件系统的Apapter交互。
可以看到,变化很小就实现了直播系统和点播系统的分离。直播系统的硬件需求是视频采集卡、流媒体服务器平台,Core核心部分对CPU需求较多,因为它要进行格式转换,点播系统对硬盘依赖很大,因为点播的瓶颈的大量的对硬盘的读取和IIS并发量。这样也做到了系统资源的分布式。
下面说一下变化的工作原理,先定义几个"变量":A 直播和高清点播服务器(图中最上面一块) B 核心文件系统服务器(图中中间一块) C 告诉点播服务器(图中最下面一块)
-
1.增加两个独立的文件系统:增加两个独立文件系统的作用就是让各自需要的文件类型都储存在自己的机器上,减少服务器间流量,保证服务器间有效通信。
-
2.Adapter设计:纵观整体设计,我们发现不管是高清点播还是高速点播,对一个东西非常感兴趣,在收集直播视频时,也对这个东西感兴趣,这个东西就是“文件”,那么我们就把文件分离出来,编码器采集视频源到文件系统生成mpeg,Core组件对mpeg视频进行转换成rmvb和flv,高清点播读取rmvb,高速点播读取flv。“分布式”系统后,直播和高清点播部署在一起A,他们的文件系统的作用就是收集Producer的mpeg视频,A的Adapter同步B的rmvb视频(它对flv视频不感兴趣,因为它提供高清点播服务,flv不是高清视频),C的Adapter作用是同步B的flv视频文件(它只对flv文件感兴趣,因为它追求高速,对高清嗤之以鼻)。B的Adapter的作用就是同步A的源文件。
这样就实现了分布式的部署,是不是很Cool啊!
Summary总结
1.本设计的代码还在进行中,还不能确定潜在的问题,欢迎大家提意见。
2.对视频文件格式转换的软件多用ffmpeg+mencoder这两个工具。
3.本系统在做大型CDN的时候有缺陷,不适合做大型CDN系统。
4.如有不正确的地方还请大家指正。
作者:Creason New(Creason's Blog)
出处: http://www.cnblogs.com/niuchenglei
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。