当前的视频应用异常火爆,大大小小的视频网站已经有数百家之多。在他们的运营过程中都会面临同样一个问题,那就是高并发的用户上传、大视频上传、断点续传,这些都是硬性需求。
解决这些问题,无疑需要靠我们这些程序猿来实现。下面我把自己的一些工作经验和大家分享。
由于互联网上行链路并不具有100%的稳定性,比如在上传过程中会经常出现网络堵塞,网络中断或者客户端宕机的情况发生,当你有4GB的视频文件上传到50%或者90%的时候,如果因为这些原因导致上传失败需要重传,那将是一个极其痛苦的事情。因此,我们必须想办法实现断点续传功能。并且对于运营级的平台来说,必须支持多用户同时上传,要有很高的并发处理能力,这对技术实力绝对是一个考验。
当前,网上有很多采用PHP或者Java脚本语言实现的上传功能模块,然而在实际使用中你会发现,这些基于脚本语言实现的上传功能模块性能很弱,一是不支持2GB以上的内容上传;二是无法支持断点续传;三是效率极低,单台服务器最多支持几十个并发上传连接。
由于我们要搭建一个运营级的视频服务平台,在尝试了各种网络上的上传服务模块均无法满足要求后,最后决定花大力气用C++语言来自主实现这一高性能的上传服务器,因此Hyper Upload Server 就这样诞生了。
Hyper Upload Server 超级上传服务器
这是一款超级文件上传服务器,采用了异步I/O架构,采用C++语言编码实现。它支持4GB以上超大文件上传和断点续传,对上传的文件尺寸理论上没有限制。此外,服务器端采用了跨平台的实现方式,可以支持Windows和Linux服务器平台部署,支持任意格式的文件上传,尤其适合大的视频网站应用。经过实测,单台服务器支持1000并发上传进程,支持PC端和智能手机端主流的浏览器,在HTML5的浏览器环境下支持断点续传功能。
主要特性
1. 服务器端采用异步I/O架构设计,具有高性能I/O处理能力,尤其适用于超大文件上传;
2. 服务器端采用高效内存分配技术确保在运行过程中服务器的内存开销最小化;
3. 完全采用标准协议实现,因此兼容几乎所有的PC端和移动端浏览器;
4. 服务器端采用C++语言自主实现,对上传文件的尺寸无限制,天生支持超大文件上传。 而基于PHP、JAVA等技术实现的文件上传服务天生无法支持超大文件上传,无法逾越2GB的最大文件尺寸瓶颈;
5. 服务器端采用无缓冲即时写入方式,上传数据写入一步到位。不同于PHP、JAVA等技术实现方式需要两步写入;
6. 服务器端可跨平台编译运行,支持Windows和Linux平台;
7. 高性能,单台服务器支持1000个并发上传进程;
8. 支持4GB以上超大文件上传,文件大小不受限制;
9. 客户端支持采用HTTP标准协议上传;
10.支持断点续传,断网、关机重启均不受影响;
11.支持HTML5浏览器上传进度实时显示;
12.支持IE8及以上浏览器上传进度显示;
13.支持查看客户端在线连接, 查看方法:http://ip:port/lists
14.多浏览器兼容,包括Chrome,Firefox,Safari,IE,Opera,Edge;
程序安装
第一步:解压文件到一个硬盘目录,例如d:\UploadServer
第二步:修改配置文件
修改d:\UploadServer\conf\config.xml,文件里的目录设置,
将所有 dir= 变量指向的目录修改为硬盘上的真实目录,如果没有就按配置文件创建;
第三步:安装服务
执行cmd打开命令行窗口按步骤输入以下命令:
d: <br/>
cd UploadServer
HYFileServer.exe -i
第四步:启动服务
打开系统的服务管理器,找到HyperHttp Upload Service服务启动它。
第五步:在浏览器里输入http://127.0.0.1:8080 查看服务器运行是否正常
如果上传页面正常显示说明安装成功
点击其中一个上传文件链接 按钮来上传一个文件。
如果要在其它主机上访问上传服务器页面,请将127.0.0.1用安装服务器的IP地址取代。
如果外部机器还不能访问,请检查防火墙的设置,看一下默认的8080端口是否开启。
第六步:如果要进一步了解上传服务器,请查看d:\UploadServer\doc\文件上传服务器使用手册.pdf 文件。
- Linux 下执行安装
./hyupdsrv
如果要作为守护进程,执行
./hyupdsrv -d
技术文档
请查看 doc 目录下的说明手册。
项目地址:
https://github.com/liufeihong/Hyper-Upload-Server