S3直接上传性能

时间:2015-02-04 12:39:29

标签: amazon-s3 upload server

因此,我可以选择是实施直接上传到S3,还是通​​过我的服务器代理图像再到S3。

我需要在上传图像后处理图像,创建拇指和不同版本。

因此,简而言之,我想知道的是哪种方法更好,而不是之前可能做过的方法。

选择1.直接上传到S3

  • 用户上传到S3
  • 后台工作人员从S3
  • 下载新图像
  • 处理图片
  • 图片已上传至S3

选择2.通过服务器上传

  • 用户上传到服务器
  • 处理图片
  • 图片已上传至S3

看着这一点,直接上传到S3实际上比首先通过我的服务器慢。但是,当直接进入S3时,初始上载在服务器上的负载是否超过了额外的下载步骤?

还有其他因素,例如每种情况下的网络性能和类似因素吗?

3 个答案:

答案 0 :(得分:0)

考虑到性能,直接上传到S3是一个更好的解决方案。原因是S3具有高度可扩展性,这意味着:如果使用一个线程将文件上传到S3,速度为1M / s,如果使用10个线程,速度将约为10M / s。

对于你的问题,如果你有很多用户同时上传文件,S3可以处理这些请求,性能较差。由于直接将文件上传到服务器,它需要你的服务器可以同时处理许多请求时间,如果您的实施是可销售的,它可能有机会在性能上击败S3。

但是解决方案1的成本更高,因为它有更多的交易,也有数据传输。

答案 1 :(得分:0)

直接上传到S3的一个问题是您要上传到存储桶的位置,而您的服务器可能分布在全球多个位置。 (例如,如果您在多个EC 2区域中运行服务器)。在这种情况下,您发现进入服务器的延迟(传输速率较低)比直接进入S3要低。

此外,如果您要将数据传输到同一地区的EC2上运行的服务器,则可能无法从S3转出费用。否则,马特是对的 - 您将从$ 0.02 - $ 0.25 / GB支付任何费用,用于从S3传输数据。

麦克

答案 2 :(得分:0)

我是使用S3存储的大项目的成员。

S3上传并非正式100%完善。

你是否选择了你提到的其中一个是非常重要的。 因为每个人都有不同的利弊。

  

如果您想在客户端中进行重载,则应选择第一个   由于某些原因,而不是服务器端    1.服务器规格较低或繁忙    2.巨大的客户端有巨大的上传文件。    3.客户希望立即知道上传的结果,并希望对上传的文件执行下一步操作。但你应该犯强烈的错误   处理上传程序中的登录。否则,你可能会受到影响   客户的抱怨。

  

如果你想要更高的可靠性,你应该选择第二个   在结构或开发环境方面上传过程。因为S3上传是HTTP协议所以非常   缓慢,有时可能会在上传方面过载。如果有   客户端的一些异常情况,如停止上传或网络   问题,你可能会遇到处理这种情况的问题。就是这样   因为错误处理,再次上传服务器端的文件是稳定的   如下所述的亚马逊必不可少的链接。

http://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html 该URL提到“在设计与Amazon S3一起使用的应用程序时,正确处理Amazon S3错误非常重要......”

另外,我建议您仅使用亚马逊的官方API来处理错误而不是插件或S3应用程序。 :)