首页 文章

管理大文件下载的最佳方式

提问于
浏览
1

我正在寻找在网络上管理我的产品下载的最佳方法 . 每个重量在2到20之间 . 我们的客户每天约1至1000次下载它们 .

我曾尝试使用Amazon S3,但下载速度不高,很快就会变得昂贵 . 我曾尝试使用Amazon S3 CloudFront但文件太大而且下载太少:文件没有留在缓存中 . 此外,我无法在S3中创建torrent文件,因为文件太大 . 我猜 Cloud 解决方案(例如S3,Azure,Google Drive ......)仅适用于小文件,例如image / css /等 .

现在,我正在使用自己的服务器 . 它工作得很好,但管理真的更复杂......

有没有更好的方法,管理这种下载的完美方式?

3 回答

  • 1

    不幸的是,我认为AWS不会为您提供解决方案 . 在这一点上,我建议调查一些其他CDN提供商,如Akamai https://www.akamai.com/us/en/solutions/products/media-delivery/download-delivery.jsp,提供专门针对大文件下载的服务 . 我认为这些服务中的任何一种都不会便宜 .

  • 0

    这是一个巨大的问题,我们在与电影或媒体业务中的人打交道时会看到它:它们会生成需要在紧迫的时间表内共享的巨大视频文件 . 其中一些人采用物理运输硬盘驱动器 .

    当需要“有序且有保证的数据传送”(例如HTTP,FTP,rsync,nfs等)时,通常使用TCP执行网络传输 . 但TCP实现对发送器和接收器之间的数据包丢失,往返时间(RTT)以及管道大小非常敏感 . 一些TCP实现也很难填充大管道(限制最大带宽延迟乘积; BDP =比特率*传播延迟) .

    理想的解决方案需要解决所有这些问题 .

    减少RTT通常意味着减少发送方和接收方之间的距离 . 经验法则,将RTT降低一半可以使最大吞吐量翻倍(或将周转时间缩短一半) . 仅就上下文而言,我看到从美国东海岸到美国西海岸的RTT约为80-85毫秒 .

    大型部署通常使用内容交付网络(CDN)(如Akamai或AWS CloudFront)来降低RTT(例如~5-15ms) . 简单地说,CDN服务提供商与当地/地区电信公司做出安排,在许多城市内部部署内容缓存服务器,并向您出售使用它们的权利 .

    但是对缓存资源的生存时间(TTL)的控制可能取决于您的服务级别协议($) . 并且高速缓存不是无限的,因此可以清除空闲资源以为新请求的数据腾出空间,特别是如果高速缓存与其他人共享 .

    在您的情况下,我觉得您希望在保留对缓存行为的完全控制的同时有意义地减少RTT,因此您可以设置一个非常长的缓存TTL . 最好的性价比解决方案IMO将部署您自己的运行CentOS 7 NGINX的缓存服务器,并启用proxy_cache和足够的磁盘空间,并为每个主要区域(例如西海岸和东海岸)部署缓存服务器 . 您的最终用户可以选择离他们最近的区域,或者您可以添加一些代码来自动检测最近的区域缓存服务器 .

    在AWS EC2上部署这些缓存服务器绝对是一种选择 . 您的最终用户可能会看到比直接连接到AWS S3更好的性能,并且没有BW上限 .

    BW的当前AWS定价对于BW输出到互联网的价格约为0.09美元/ GB . 假设您的~50个文件平均为10GB,那么从缓存服务器到最终用户的BW大约每月50美元 - 还不错?对于低/平均使用区域(每月79美元),您可以从c4.large开始 . 较高的使用区域可能会花费您大约〜$ 150 /月(c4.xl),〜$ 300 /月(c4.2xl)等 . 您可以通过现货实例获得更好的定价,并且您可以根据您的业务模式调整性能(例如VIP vs Best-Effort) .

    在能够“填充管道”和对网络丢失的敏感性(例如拥塞控制,拥塞避免)方面,您可能需要考虑优化的TCP堆栈,如SuperTCP(完全免责声明,我是开发主管) . 这里的想法是拥有一个每连接自动调整的TCP堆栈,其后面有很多工程,因此它可以填充像AWS区域之间的巨大管道,而不像常规TCP经常那样对网络丢失反应过度,特别是当发送到Wi-Fi endpoints .

    与UDP解决方案不同,它是单面安装(<5分钟),您不需要为硬件或存储付费,您不需要担心防火墙,也不会淹没/杀死您自己的网络 . 您需要在发送设备上安装它:区域缓存服务器和将新请求推送到缓存服务器的源服务器 .

    优化的TCP堆栈可以使您的吞吐量比 Health 的网络提高25%-85%,而且我在糟糕的网络上看到了2X到10X的吞吐量 .

  • 1

    您可能还想查看文件加速软件,如Signiant Flight或Aspera(披露:我是Flight的产品经理) . 大型文件(大小为GB)可能是传统HTTP传输的问题,尤其是在大型延迟时 . 文件加速软件通过UDP而不是TCP,实质上掩盖了延迟并提高了文件传输的速度 .

    使用这种方法的一个不利之处是您的客户需要下载特殊软件来下载他们的文件(因为浏览器本身不支持UDP),但是您提到他们已经使用了下载管理器,因此这可能不是问题 .

    Signiant Flight作为服务出售,这意味着Signiant将为您在 Cloud 中运行所需的服务器 .

    使用文件加速解决方案,您通常会看到网络利用率约为80 - 90%,即100 Mbps连接为80 - 90 Mbps,1 Gbps网络连接为800 Mbps .

相关问题