【问题标题】:Does AWS S3 GetObject provide random access?AWS S3 GetObject 是否提供随机访问?
【发布时间】:2022-01-12 05:58:24
【问题描述】:

我可以provide HTTP Range headers 到 AWS S3 的 GetObject 来请求对象的指定字节范围。

它是真正的随机访问,还是 S3 必须在返回我请求的范围之前处理该范围之前的所有对象?

范围标头只是减少了传输的字节数,还是还提供了有效的随机访问?

【问题讨论】:

  • 你为什么要问?你关心性能吗?您的 Internet 带宽可能会比 S3 寻找特定位置的能力施加更多的限制。我建议您执行一些测试 — 检索大对象末尾的内容,看看您是否检测到任何性能影响。
  • 是的,性能问题。我有一个基于二进制搜索的算法,可以很好地执行随机访问,我想知道使用 s3 是否会阻止我使用它。如果需要,我将运行一些测试来验证。我希望这是已知的知识。

标签: amazon-web-services amazon-s3


【解决方案1】:

我在 S3 中对一个 2GB 文件进行了快速测试,并在文件中的各种偏移(包括开始、中间和结束)处执行了 8 个字节的 ranged gets。总时间在 250 毫秒的用户时间(包括启动 node.js、加载包、执行范围 GetObject)似乎相当一致,由我的 Mac 到 us-east-1 的time 测量。

我无法在 AWS 文档中找到关于此处预期行为的明确声明,但我希望并期望它接近 O(1) 恒定时间。

我建议您在进行设计之前进行进一步调查。也许在这里更新我们。

[更新] 这是一个稍微更广泛的实验的结果(非常感谢@VivekMaharajh)。 S3、Lambda、一个 2GB 文件,以及 100 次读取 100 字节到文件的随机部分:

【讨论】:

  • 我之所以使用 lambda,是因为我认为延迟会比您(从您的机器上)看到的要好几个数量级,因为 lambda 与 s3 在同一个数据中心中执行。我没有看到那么多的减少...
  • @VivekMaharajh 对答案的出色贡献,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-03-08
  • 2016-09-29
  • 2018-07-03
  • 2010-12-15
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多