安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
视频网站应用技术架构图 视频网站CDN方案
2023-10-16 09:38:45 【

视频点播业务是近年发展势头最好的互联网业务。本文以从技术角度解析视频点播服务关键技术


视频内容是如何在互联网进行分发的


视频网站如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因为是基于文件的代理,如果进行交换也是基于文件的交换,当问及大小巨大时,效果很差。

-----------------------------------

视频网站应用技术架构图 视频网站方案

https://blog.51cto.com/u_16213629/7629576


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇没有了 下一篇CDN加速和防护 如何防止cdn劫持

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:13051179500 18910191973
企业QQ:1245940436
技术支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:18910191973
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800