浏览 15919 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-20
最后修改:2008-11-29
视频内容是如何在互联网进行分发的 视频网站如youtube,优酷网,土豆网,新浪视频等视频分享网站通多CDN技术进行视频内容分发。CDN翻译成汉语就是“内容分发网络”。编辑,网友制作或上传视频到CDN网络,CDN网络将这些视频分发到分布于全国各地IDC机房中的点播服务上。用户则就近访问最近的点播服务进行视频体验。组成CDN网络的关键软件有“Squid” “Apache” 等基于HTTP协议的服务端软件 和域名服务器软件如 bind,域名服务器软件负责根据用户的ip地址将用户的http请求引导到离用户最近的IDC机房中的点播服务器。 CDN软件分析 流行的点播服务主要基于HTTP协议,mms协议,rmtp协议,其中http协议没有控制消息,所以此协议不支持对点播流媒体的控制操作,如进度拖动,play,pause,stop等。 squid apche,这两种服务器支持基于http的点播服务,时下最流行,大部分视频分享网站都采用类似这样的方案。squid主要功能是反向代理的功能。一般作为点播前端服务器使用。什么是反向代理---说白了就是,当用户访问squid服务软件时,如果squid没有此视频文件,则它会根据配置文件里设置的参数,到上行的数据中心去抓取文件,之后再返回给用户进行观看。举例说,当西安的用户访问优库网时,优酷网发现访问来自西安的用户,则将此访问引导至优酷网在西安布置的squid服务器,当squid发现自己没有用户要的视频时,则它根据配置文件里设置的参数,到北京的数据中心的服务器抓取文件到自己本地。之后再返回视频文件给用户。当下次再有用户访问相同的视频时,本地已经存在了,就直接返回视频给用户了。 media service,flash server。这两种服务器支持控制协议,其中media service支持mms,rtsp,flash server支持rtmp。这两种协议服务的点播业务,当用户访问时,用户可以拖动滚动条,和进行暂停,终止等控制操作。56网的视频可以拖动进行观看,我觉得应该使用的是rtmp协议。新浪早期的视频服务都是mms协议的视频点播,也支持拖动。 点播技术方案和优略势 squid + apache 方案,次方案的优势: 软件很成熟稳定。 视频分发采用拉模式。并且squid可以组群,所以分发简单,相对高效 技术开放。由于squid,apache都是linux上流行的软件,并且源码开放,所以用户可以进行二次开发 软件成本低、linux不需要授权费,squid,apache都免费,软件成本基本为0 劣势: squid是一个古董软件,设计的目标是代理功能,那个时候还没有视频分享概念。所以做cdn服务有些强人所难。很多公司搭建cdn网络时都针对squid进行改造和二次开发工作 squid代理的单位是文件。当视频文件比较大时,如几百兆大小,反向代理抓取效率低。大家都有经验,传几百兆大小的文件需要花很长时间,并且大量占用带宽和cpu。 squid与系统的结合。作为服务器软件,支持并发量是一个很重要的参数,如果一台服务器支持并发用户量大,则可以为公司节省大量成本。影响并发量数量有以下一些因素: 带宽:我们都知道服务器网卡通常是千兆网卡。如果视频编码率为400K码流,1000M除以400K,理论跑满网卡可以支持2500个连接。但实际情况一般能跑到500M,支持并发1000个连接就很不错了。 内存:当并发连接数量很多时,服务器使用的内存往往出现瓶颈。想想,如果一个连接需要使用1M内存进行数据传输,那么1000个并发1G内存就没了。这就是事实。所以ngix这个软件在这方面比apache太有优势了。 cpu:网络io在很多系统上消耗致命的cpu。原因是有些平台没有提供高效的io模型方案。网络io分阻塞和非阻塞模式,异步和同步模式。 最差的方式是阻塞同步模式。但这个模式实际是最常用的。这就是bsd socket的接口,read,write,connect,bind,listen,打多数软件为了编程方便,让调用线程阻塞调用这些系统调用。当并发量大的时候,尤其是服务器软件,这种编程方式绝对不能接受。 非阻塞同步模式:这个模式在服务器编程中最流行,系统调用在unix和linux是 select, poll,windows也支持select,但提供了相对性能更好的waitforobject系统调用。但这些调用的基础都是查询句柄状态,而且是在用户态下,当并发量大时,这个轮询也会耗去大量的cpu。linux2.6之前的服务器,只能采用这个方案,而且是最优方案。但这对于网络服务大并发的要求此方案不可接受。此方案有些二次开发针对write,read系统调用次数进行改造,替换成writev,readv这种基于iovector的调用替换,在io时减少系统调用的次数。但个人认为效果有限。 最高效的方案非阻塞异步模式:支持此模式的的操作系统有solaris ,windows,linux 2.6以上版本,freebsd solaris 和windows在aio基础上实现,是真正的内核态异步io。linux的epoll调用只是异步通知句柄状态的改变,但io的读写还是用户负责,所以算不上真正的异步io。freebsd的kqueue也类似。但这个方案是现有方案的中的最佳方案了。其中本人更看好windows的iocp,因为windows的iocp中的系统调用不仅是真正的异步io,而且还支持overlapped读写,可以说支持多线程并发读写同一个io句柄。windows平台应该是网络服务最优前途的方案。太牛了。solaris的aiowait系统调用不支持多线程。 cpu对io的影响好像用掉的笔墨太多,主要是这个对并发量影响巨大。 带宽限速:我们都知道,用户带宽越来越大,如果我们不限制用户下载速度,后果很严重。比如:如果用户使10M带宽,如果不限速,100个用户就把服务器带宽吃掉了。实际情况中,50个这样的,就不行了。所以服务器一定要限制用户下载速度。如果视频的码流是400K,最好限制用户500K,这样既不影响用户流畅的观看,又节省了服务器带宽。这样一台服务器并发就可以支持更多的用户了。 本地缓存:反向代理软件squid的主要的优势就是进行本地缓存。但如果缓存被大量的用户很少访问的文件占用,服务器磁盘空间毕竟有限,这时候会加剧对反向代理的次数。降低代理效果,所以对缓存要进行算法调整和设计。 cdn对p2p技术的应用。如果反向代理软件可以组成p2p网络,进行网络数据块交换,存储。这样会极大的减少数据中心访问次数,加速数据交换效率。squid因为是基于文件的代理,如果进行交换也是基于文件的交换,当问及大小巨大时,效果很差。 写的很多了。media service方案和flash server方案下次再写吧。睡觉了。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-05-20
就是感觉技术太杂了。Java、.NET、部分美工、好像还有ASP和VB。容易让你觉得什么都会点,什么都不精。还有就是项目经验太少,如果不是专门招应届的话不容易进去。
说真的,我学历上比你还惨。中专。不过好在我有些工作经验。终于最近一家被录取,同时另一家说尽快给消息。不过待遇还是比较低的。 |
|
返回顶楼 | |
发表时间:2008-05-21
猫咪还是要相信自己一些.
不要被这些世俗的观念束缚了. 不可否认的学历会给你造成许多困难.但你其实还是可以找到薪水不错的工作的.因为你用心去找,总会有一个能让你发挥能力的岗位的. |
|
返回顶楼 | |
发表时间:2008-05-29
难找总归要找的~~加油吧。
|
|
返回顶楼 | |
发表时间:2008-05-29
只要有耐心,能找到,不过要找到适合自己的话,比较困难,做好能做个几年内的职业规划( 我也是应届生,同勉)。
ps:计算机网站这词不好(雅),还是成为web开发好一些(个人意见) |
|
返回顶楼 | |
发表时间:2009-04-05
LZ 这个帖子写的不错 对我很有用,我们公司在做运营一个视频网站,还打算给上海OCN(有线通)做网上高清视频点播。
OCN(有线通)打算搞一种服务把客户的带宽提升到30M。 希望LZ 能尽快完善。 |
|
返回顶楼 | |
发表时间:2009-04-05
lzg3267373 写道 LZ 这个帖子写的不错 对我很有用,我们公司在做运营一个视频网站,还打算给上海OCN(有线通)做网上高清视频点播。 OCN(有线通)打算搞一种服务把客户的带宽提升到30M。 希望LZ 能尽快完善。 有时间我来个flash视频技术的总结帖~~ |
|
返回顶楼 | |
发表时间:2009-05-12
kimmking 写道 lzg3267373 写道 LZ 这个帖子写的不错 对我很有用,我们公司在做运营一个视频网站,还打算给上海OCN(有线通)做网上高清视频点播。
OCN(有线通)打算搞一种服务把客户的带宽提升到30M。 希望LZ 能尽快完善。 有时间我来个flash视频技术的总结帖~~ 晕倒,要等多久咯,期待中。 |
|
返回顶楼 | |
发表时间:2009-05-12
如果一个视频文件超过了100M早就被分割了。
视频网站考虑的东西很多。 还有很多的细节。 建议大家看看youtube的技术方案(网上搜吧)然后会有一个概念 |
|
返回顶楼 | |