因此,我可以选择是实施直接上传到S3,还是通过我的服务器代理图像再到S3。
我需要在上传图像后处理图像,创建拇指和不同版本。
因此,简而言之,我想知道的是哪种方法更好,而不是之前可能做过的方法。
选择1.直接上传到S3
选择2.通过服务器上传
看着这一点,直接上传到S3实际上比首先通过我的服务器慢。但是,当直接进入S3时,初始上载在服务器上的负载是否超过了额外的下载步骤?
还有其他因素,例如每种情况下的网络性能和类似因素吗?
答案 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应用程序。 :)