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

时间:2015-09-03 15:35:34

标签: azure amazon-web-services amazon-s3 download server

我正在寻找管理网络下载产品的最佳方式。 每个重量在2到20之间。 我们的客户每天都会近似下载每次1至1000次。

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

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

有更好的方法,一种管理此类下载的完美方式吗?

3 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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

在AWS EC2上部署这些缓存服务器绝对是一种选择。您的最终用户可能会看到比直接连接到AWS S3更好的性能,并且没有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终端。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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

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