曾经有太多人问过我这样一个问题:
如何搭建一个优酷这样的视频网站,与普通的图文网站差异大吗,这里面会有哪些坑需要注意?
下面,我以优酷平台开发工程师的身份大体回答一下这个问题。
首先要给一些外行的开发人员(视频领域外的人)普及一下,视频网站与众多的图文网站有着本质上的区别,大家千万不要将两者混为一谈。
在优酷创立之初(2006年),老大古永锵就对优酷的技术平台定下了基调,那就是“快者为王”。后来的事实证明,这个原则帮助优酷在众多平台中脱颖而出,受到了终端用户的普遍欢迎。
因此,作为优酷平台的前研发部主管,我也是严格按照这种思路去执行的。如果你真的要做一个这种体量的视频平台,这里面的技术难度其实相当大(对于踩过坑的这些人看来已经不算什么了)。
首先, 要真正达到“快者为王”的目标,你要有足够支撑你发展的资金储备。
优酷成立一周年(2007年)后,古永锵曾经接受腾讯的专访,向大众解释过优酷“快者为王”的战略,
大家可以翻开历史自己看一下,这里不再重复。
https://www.cyzone.cn/article/920.html
其次,你需要有一个强大的技术开发团队。
古永锵当年是从搜狐出来的,由于起步阶段就拿到了一千三百万的投资,所以在2006年的时候就吸引到了多位视频行业中的大牛过来效力,这帮人都是在流媒体行业中摸爬滚打了6年以上的精英,我本人作为3年后加入核心团队的成员,也在优酷这个大集体中得到了很多实践。
要实践好“快者为王”这四个字,你需要做到“快速发布、快速搜索、快速播放”。
在核心技术层面,需要用到如下这些专业技术:
1. 快速发布技术
这方面需要用到视频节目的快速上传和快速转码。
要做好视频的快速上传,你需要实现视频内容的大并发上传和断点续传,这方面我们是用C语言自主实现的上传服务器,当前支持单台服务器1千并发用户同时上传,支持基于H5的断点续传;
要做好快速转码,这方面的技术含量更高,大家可以自己尝试一下用当前十三年后的Intel CPU去做1080P的蓝光高清视频转换,看看能以几倍速转码。
前几年,优酷平台有3千多台服务器,其中有将近一半的服务器是用来做视频转码的,后来经过技术改良和优化,这方面已经实现了很大的技术飞跃,由当年的3倍速转码变成了当前的30倍速转码,具体细节可以加(1918098288),从而极大地提高了节目发布的实时性,也有效降低了运营成本。
2. 快速检索技术
在2007年12月21日,优酷的日视频播放量(VV)已经突破1亿。
这说明了什么?起码每天有1亿人在检索你的视频内容。
面对用户访问量的急速增长,优酷的内容检索技术也几经改进,从最初的数据库读写分离,到垂直分库,到水平分表,再到后来的内存型数据库和全文检索、分布式数据库、Hadoop、缓存等技术的联合应用,才使得海量的内容检索响应时间得以毫秒级实现。
3. 快速播放技术
面对全国几亿网民,庞大的内容资源库,要想做到内容的快速播放是对平台架构与核心技术实力的一个严峻挑战。
大家都知道,视频数据是互联网上所传输的数据量最大的一种数据。它不像文字和图片,数据量最多只有几百KB,然后视频的流量为每秒钟几个MB,其每秒钟的数据库是图片的十倍以上。
而且,要传输这么大的数据库,你需要做到持续性和稳定性,不能中断,这对服务器性能和流媒体软件性能都提出了极高的要求。
流媒体服务器在功能上,需要支持多终端多协议发布(比如HLS、HTTP-TS、HTTP-FLV、DASH、RTMP),需要支持多码流自适应(便于给用户提供最好的收视体验),需要支持多服务器负载均衡和高并发性能。
因此,我们的流媒体技术从最初的单服务器支持200并发,到如今支持5千并发,中间经过了N多次技术迭代。
此外,流媒体服务器的性能提升,只是代表了单台服务器的处理能力,要面向全国的几亿用户访问,需要部署几千台服务器,这些服务器要分布于国内整个互联网的各大节点,包括各大中心城市、省会城市、东部二线城市的IDC机房。具体细节可以加(1918098288)。这些流媒体服务器部署到位后,需要将其连成一个有机的整体,并采用内容分发技术将其组成一个超大规模的CDN内容分发网络,从而实现视频内容的快速分发和用户的就近点播,这样一方面极大提升了用户的收看体验(播放相应很快),另一方面也极大了节省了平台的资金投入(二线城市的带宽比一线城市要低很多)。
在服务器集群负载均衡和CDN建设这方面,优酷平台为了控制投资成本,没有选择类似F5这样的硬件解决方案,而是采用了自研软件来实现,总体效果大家都看到了,而且做得非常好,在视频的分发层面已经超过了一些专业的CDN服务提供商(比如蓝汛、网宿)。
除了以上几部分,还有很多其它的技术细节也需要考虑到,比如:
大并发的实时消息系统,该系统会用于提供用户看视频时的实时字幕,或者文字实时聊天,这种并发也往往在百万并发的级别。
WEB服务器的负载均衡,由于WEB服务器主要用于提供节目元数据信息的展示,大多为图片和文字信息,在大并发访问的情况下如何实现多服务器负载均衡,如何做分布式部署,这都与最终的用户体验直接相关。
平台的安全防护,主要包括网站CMS系统的安全性、公网服务器的防攻击能力(比如DDOS攻击)。
节目存储设备的读写性能,这方面也是考验一个平台整体服务性能的关键因素。由于视频内容的数据量极大,不同的存储介质(SATA硬盘、SAS硬盘、固态硬盘)、不同的存储架构都与内容读取的响应速度和数据吞吐能力息息相关,所以运营级的平台在这方面都需要完善的设计,优酷在这方面也一直在进行技术的更新和迭代。
节目元数据信息的自动提取,这一点对于大规模运营平台来说也至关重要,因为它关系到你后期的运维成本。一个好的运营平台,在系统设计时都会遵循这样一个原则,那就是能用机器自动完成的工作,绝不要用人力去完成,因为人工作业成本比机器作业成本要高很多,同时人的工作效率要比机器低很多。在优酷这个平台上,所有节目的基础元数据(节目名称、节目时长、节目海报图、播放轨道的预览图)都是通过程序自动提取出来的,并且后台还具有人工一键截取海报图的功能,这样极大地降低了人工成本。
以上只是从宏观层面考虑到的一些关键点,可以说,每个技术环节里面都会有很多坑,因此一个强大的技术开发团队对基础运营支撑平台的高效运行极其重要。
今天就先写这么多,如果楼主还有疑问可以提出来后期补充。