我正在构建一个浏览器游戏,当玩家执行一些关键操作时,我需要在EC2实例和S3之间传输大量小文件。
虽然传输单个大文件的速度相当快,但传输多个小文件的速度非常慢。我正在使用亚马逊的PHP SDK。
有没有办法克服S3中的这个弱点?感谢。
答案 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和其他内容。