zoukankan      html  css  js  c++  java
  • 公司文件管理平台

    4GB以上超大文件上传和断点续传服务器的实现


    随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。

    但是在很多情况下,平台运营方并没有大文件上传和断点续传的开发经验,往往在网上找一些简单的PHP或者Java程序来实现基本的上传功能,然而在实际使用中会发现,这些基于脚本语言实现的上传功能模块性能很弱,一是不支持2GB以上的内容上传;二是无法支持断点续传;三是效率极低,单台服务器最多支持几十个并发上传连接。

    当前我们要搭建一个运营级的视频服务平台,在尝试了各种产品均无法满足要求,因此最后花精力自主用C++语言实现了这一高性能上传服务器。 

    项目地址:

    http://git://10.168.4.241/up6/web/asp.net.git

    Hyper Upload Server 超级上传服务器 

    这是一款超级文件上传服务器,采用异步I/O架构,采用C++语言编码实现。它支持4GB以上超大文件上传和断点续传,支持Windows和Linux服务器平台,支持任意格式的文件上传,尤其适合大的视频网站应用。单台服务器支持1000并发上传进程,支持PC端和智能手机端主流的浏览器。 

    主要特性

    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:UploadServerconfconfig.xml,文件里的目录设置,

             将所有 dir= 变量指向的目录修改为硬盘上的真实目录,如果没有就按配置文件创建;       

    第三步:安装服务

          执行cmd打开命令行窗口按步骤输入以下命令:

          d:  <br/>

          cd UploadServer

          HYFileServer.exe -i  

    第四步:启动服务

        打开系统的服务管理器,找到Hyper Http Upload Service服务启动它。

    第五步:在浏览器里输入 http://127.0.0.1:8080 查看服务器运行是否正常

        如果上传页面正常显示说明安装成功

        点击其中一个上传文件链接 按钮来上传一个文件。

        如果要在其它主机上访问上传服务器页面,请将127.0.0.1用安装服务器的IP地址取代。

        如果外部机器还不能访问,请检查防火墙的设置,看一下默认的8080端口是否开启。

         

    第六步:如果要进一步了解上传服务器,请查看 d:UploadServerdoc文件上传服务器使用手册.pdf 文件。

    – Linux 下执行安装

    ./hyupdsrv

    如果要作为守护进程,执行

    ./hyupdsrv -d 

    详细配置可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/09/%e5%85%ac%e5%8f%b8%e6%96%87%e4%bb%b6%e7%ae%a1%e7%90%86%e5%b9%b3%e5%8f%b0/

  • 相关阅读:
    清除浮动的三种方式
    js控制滚动条默认在底部
    npm 基础命令
    package.json中^,~的区别
    mac 使用iTerm2快捷登录远程服务器
    iterm 分屏切换快捷键与配色设置
    git tag — 标签相关操作
    gulp iconfont
    webpack 3 升级 webpack4 个人笔记
    import * as x from 'xx' 和 import x from 'xx'
  • 原文地址:https://www.cnblogs.com/songsu/p/11307095.html
Copyright © 2011-2022 走看看