首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS S3保存和加载一个项需要多长时间?

AWS S3保存和加载一个项需要多长时间?
EN

Stack Overflow用户
提问于 2016-06-06 22:08:33
回答 2查看 16.8K关注 0票数 6

S3 FAQ提到:“所有地区的S3存储桶都为新对象的放置提供读写一致性,并为覆盖、放置和删除提供最终的一致性。”然而,我不知道需要多长时间才能得到最终的一致性。我试图搜索这个,但是在S3文档中找不到答案。

形势:

我们有一个由7个步骤组成的网站。当用户在每个步骤中单击“保存”时,我们希望将一个json文档(包含所有7个步骤的信息)保存到Amazon上。目前,我们计划:

  1. 创建一个S3桶来存储所有json文档。
  2. 当用户保存步骤1时,我们将在S3中创建一个新项。
  3. 当用户保存步骤2-7时,我们将覆盖现有项。
  4. 在用户保存一个步骤并刷新页面后,他应该能够看到他刚刚保存的信息。也就是说,我们想确保我们总是在写完后再读。

完整的json文档(所有7个步骤都已完成)大约为20 KB。用户单击“保存”按钮后,可以将页面冻结一段时间,在保存完成之前,他们无法进行其他更改。

问题:

  1. AWS S3保存和加载一个项需要多长时间?(当文档保存到S3时,我们可以冻结我们的网站)
  2. 是否有根据项目大小计算节省/加载时间的函数?
  3. 如果选择另一个S3区域,保存/加载时间会有所不同吗?如果是的话,哪个是西雅图最好的地区?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-06 23:26:45

我想添加到@error2007的答案。

AWS S3保存和加载一个项需要多长时间?(当文档保存到S3时,我们可以冻结我们的网站)

这不仅是因为你在任何地方都找不到确切的时间--实际上也没有确切的时间。这正是“最终一致性”的意义所在:一致性最终会实现。你不知道什么时候。

如果有人给了你一个系统需要多长时间才能达到一致性的上限,那么你就不再称之为“最终一致”了。这将是“在X时间内一致的”。

现在的问题是,“我如何处理最终的一致性?”(而不是试图“打败它”)

要真正找到这个问题的答案,您需要首先了解您真正需要什么样的一致性,以及S3的最终一致性将如何影响您的工作流程。

根据您的描述,我知道您将总共写7次给S3,每一步都写一次。对于第一次写入,正如您正确引用常见问题一样,在此之后的任何读取都具有很强的一致性。对于所有后续的写入(它们实际上是“替换”原始对象),您可能会观察到最终的一致性--也就是说,如果您试图读取覆盖对象,您可能会得到最新版本,或者您可能会得到一个旧版本。在这个场景中,这就是S3上所谓的“最终一致性”。

有几个供你考虑的备选方案:

  • 不要在每个步骤上都写入S3;相反,将每个步骤的数据保存在客户端,然后在第7步之后只将一个对象写入S3。这样,只有一个写,没有“覆盖”,所以没有“最终一致性”。对于您的特定场景,这可能是可能的,也可能是不可能的,您需要对此进行评估。
  • 或者,为每个步骤写入具有不同名称的S3对象。例如:在步骤1之后,将其保存到bruno-preferences-step-1.json;然后,在步骤2之后,将结果保存到bruno-preferences-step-2.json;等等,然后将最终首选项文件保存到bruno-preferences.json,甚至bruno-preferences-step-7.json,为自己提供在将来添加更多步骤的灵活性。请注意,这里的想法是避免覆盖,这可能导致最终的一致性问题。使用这种方法,您只编写新的对象,而不会覆盖它们。
  • 最后,您可能需要考虑 DynamoDB。它是一个NoSQL数据库,您可以通过浏览器或服务器安全地连接到它。它为您提供了复制、自动缩放、负载分配(就像S3)。您还可以选择告诉DynamoDB您想要执行强一致的读取(默认的是最终一致的读取;您必须更改一个参数以获得强一致的读取)。DynamoDB通常用于“小”记录,20 be绝对在此范围内--到目前为止,记录的最大大小将是400 be。您可能需要检查一下:DynamoDB FAQs: What is the consistency model of Amazon DynamoDB?
票数 13
EN

Stack Overflow用户

发布于 2016-06-06 22:21:30

AWS S3保存和加载一个项需要多长时间?(当文档保存到S3时,我们可以冻结我们的网站)

你在任何地方都找不到确切的时间。如果你问AWS,他们会给你大约的时间。您的文件是20 KB,因此根据我从S3使用的经验来看,时间将大致为60-90 Sec。

是否有根据项目大小计算节省/加载时间的函数?

不,没有任何函数可以用来计算这个。

如果选择另一个S3区域,保存/加载时间会有所不同吗?如果是的话,哪个是西雅图最好的地区?

对于美国西雅图,西俄勒冈州将没有任何问题。

您也可以看看这个实验,比较一下https://github.com/andrewgaul/are-we-consistent-yet

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37667611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档