Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 管理大文件下载的最佳方法_Azure_Amazon Web Services_Amazon S3_Download_Server - Fatal编程技术网

Azure 管理大文件下载的最佳方法

Azure 管理大文件下载的最佳方法,azure,amazon-web-services,amazon-s3,download,server,Azure,Amazon Web Services,Amazon S3,Download,Server,我正在寻找最好的方式来管理我的产品在网上的下载。 每一个都有2到20磅重。 我们的客户每天大约下载1到1000次 我尝试过使用AmazonS3,但下载速度不好,而且很快就会变得昂贵。 我曾尝试使用AmazonS3+CloudFront,但文件太大,下载太少:文件没有保留在缓存中。 另外,我不能在S3中创建torrent文件,因为文件太大了。 我猜云解决方案(如S3、Azure、Google Drive…)只适用于小文件,如image/css/等 现在,我正在使用自己的服务器。它工作得很好,但管理

我正在寻找最好的方式来管理我的产品在网上的下载。 每一个都有2到20磅重。 我们的客户每天大约下载1到1000次

我尝试过使用AmazonS3,但下载速度不好,而且很快就会变得昂贵。 我曾尝试使用AmazonS3+CloudFront,但文件太大,下载太少:文件没有保留在缓存中。 另外,我不能在S3中创建torrent文件,因为文件太大了。 我猜云解决方案(如S3、Azure、Google Drive…)只适用于小文件,如image/css/等

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


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

不幸的是,我认为AWS不会为您提供解决方案。在这一点上,我建议寻找一些其他CDN提供商,如Akamai,它们提供专门针对大型文件下载的服务。不过,我认为这些服务中的任何一项都不会便宜。

您可能还需要研究文件加速软件,如Signiant Flight或Aspera(披露:我是Flight的产品经理)。大型文件(大小为多GB)可能是传统HTTP传输的一个问题,尤其是在大延迟的情况下。文件加速软件通过UDP而不是TCP,本质上屏蔽了延迟并提高了文件传输的速度

使用这种方法的一个负面影响是,您的客户端需要下载特殊软件来下载其文件(因为浏览器中不支持UDP),但您提到他们已经使用了下载管理器,因此这可能不是问题

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


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

这是一个巨大的问题,我们在与电影或媒体行业的人打交道时看到了这一点:他们生成大量视频文件,需要在紧凑的时间内共享。他们中的一些人求助于实际运送硬盘驱动器

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

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

减少RTT通常意味着减少发送方和接收方之间的距离。根据经验,将RTT减少一半可以使最大吞吐量翻倍(或者将周转时间减少一半)。仅作为背景,我看到从美国东海岸到美国西海岸的RTT约为80-85毫秒

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

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

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

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

当前AWS对您的卷的定价约为0.09美元/GB,用于宽带上网。假设您的~50个文件的平均容量为10GB,那么从缓存服务器到最终用户的BW大约是50美元/月——不错吧?对于低/平均使用率地区(79美元/月),您可以从c4.large开始。使用率较高的地区可能会花费约150美元/月(c4.xl)和约300美元/月(c4.2xl),等等。您可以通过现货实例获得更好的定价,并可以根据您的业务模式调整性能(例如VIP与尽力而为)

在能够“填充管道”和对网络丢失的敏感性(例如拥塞控制、拥塞避免)方面,您可能需要考虑一个优化的TCP堆栈,如超级TCP(完全免责声明,我是开发总监)。这里的想法是让每个连接都有一个自动调整TCP堆栈,它背后有大量的工程设计,因此它可以像AWS区域之间的管道一样填充巨大的管道,而不会像常规TCP那样对网络丢失做出过度反应,特别是在发送到Wi-Fi端点时


与UDP解决方案不同,它是单面安装(我想问一下,如何为用户提供下载权限?他们是通过web应用程序下载的吗?如果是,您的应用程序使用的是哪种技术?如果不是,他们是通过FTP还是什么方式下载文件?您的存储桶位于哪个地区?您的客户在哪里说下载速度慢?您对它的定义是什么下载速度慢?下载的连接速度有多快