在EC2和Amazon S3之间传输大量小文件

时间:2013-02-14 07:22:58

标签: amazon-web-services amazon-s3 amazon-ec2

我正在构建一个浏览器游戏,当玩家执行一些关键操作时,我需要在EC2实例和S3之间传输大量小文件。

虽然传输单个大文件的速度相当快,但传输多个小文件的速度非常慢。我正在使用亚马逊的PHP SDK。

有没有办法克服S3中的这个弱点?感谢。

4 个答案:

答案 0 :(得分:1)

看起来将以下两种解决方案结合起来就是可行的方法。

http://improve.dk/archive/2011/11/07/pushing-the-limits-of-amazon-s3-upload-performance.aspx http://gearman.org/

答案 1 :(得分:0)

如果必须从EC2实例转移到S3,那么您可以尝试使用s3fuse,它基本上将您的s3驱动器安装到EC2实例的存储卷。

答案 2 :(得分:0)

S3的性能不是恒定的,有时可能会很慢。如果您需要共享对象的实时性能,我会查看AWS memcached服务,尽管我还没有使用它。

答案 3 :(得分:0)

您上传文件的方式如何? SDK中是否有多线程方法?我之所以问是因为我必须实现自己的方法来比SDK更快地下载内容。

您需要立即读取这些文件吗?您每秒有多少事件,是否需要订购?

我的第一个想法是制作一个局部缓冲区,每隔一段时间上传一次批次。

然后,如果那太慢了,我先将它们存储在快速缓冲区中,而不是S3中,并不时刷新一次。我的选择将是简单的东西,例如SQS或Redis。对于随机队列,SQS在理论上具有无限的吞吐量,对于FIFO队列,SQS具有每秒300批的吞吐量(1批= 1..10消息= 0..256kb)-您可以进一步提高。

然后,您就会拥有流,Lambda和其他内容。