S3 - 前缀到底是什么?适用什么速率限制?

2024-01-27

我想知道是否有人知道 s3 前缀到底是什么以及它如何与亚马逊交互已发布的 s3 速率限制 https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html:

Amazon S3 自动扩展到高请求率。例如, 您的应用程序可以实现至少 3,500 PUT/POST/DELETE 和 5,500 存储桶中每个前缀每秒的 GET 请求数。没有限制 桶中前缀的数量。

虽然这很清楚,但我不太确定前缀是什么?

前缀是否需要分隔符?

如果我们有一个存储桶,将所有文件存储在“根”级别(完全平坦,没有任何前缀/分隔符),这是否算作单个“前缀”,并且是否受到上面发布的速率限制的约束?

我的解释方式亚马逊的文档 https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-keys向我表明情况确实如此,并且扁平结构将被视为单个“前缀”。 (即,它将受到上述公布的费率限制的约束)

假设您的存储桶(管理员创建的)有四个对象,其中 以下对象键:

开发/项目1.xls

财务/报表1.pdf

私人/税务文件.pdf

s3-dg.pdf

s3-dg.pdf 密钥没有前缀,因此显示其对象 直接位于存储桶的根级别。如果您打开开发/ 文件夹中,您会在其中看到 Projects.xlsx 对象。

在上面的示例中,s3-dg.pdf 是否会受到与其他前缀(开发/财务/私人)不同的速率限制(5500 GET 请求/秒)?


更令人困惑的是我读过几篇关于亚马逊使用前 N 字节作为分区键并鼓励使用高基数前缀的博客,我只是不确定它如何与具有“平面文件结构”的存储桶交互。


你是对的,这个公告似乎自相矛盾。只是写得不正确,但信息是正确的。简而言之:

  1. 每个前缀每秒最多可以实现 3,500/5,500 个请求,因此对于许多用途来说,假设是您不需要使用多个前缀。
  2. 前缀被视为对象位置的整个路径(直到最后一个“/”),并且不再仅由前 6-8 个字符进行哈希处理。因此,只需在任意两个“文件夹”之间分割数据就足以实现每秒 x2 最大请求。 (如果请求在两者之间平均分配)

作为参考,以下是 AWS 支持人员对我的澄清请求的回复:

你好奥伦,

感谢您联系 AWS 支持。

据我所知,您阅读了 AWS 关于 S3 请求率性能的帖子 正在增加,并且您对此还有其他问题 公告。

在此升级之前,S3 每个支持 100 个 PUT/LIST/DELETE 请求 每秒 300 个 GET 请求。为了获得更高的性能, 必须实现随机哈希/前缀模式。从去年开始 请求速率限制增加至 3,500 PUT/POST/DELETE 和 5,500 每秒 GET 请求数。这种增加通常足以 应用程序可以减轻 503 SlowDown 错误,而无需 随机化前缀。

但是,如果新的限制还不够,则需要添加前缀 使用。前缀没有固定数量的字符。是任意字符串 存储桶名称和对象名称之间,例如:

  • 存储桶/文件夹1/子1/文件
  • 存储桶/文件夹1/子2/文件
  • 桶/1/文件
  • 桶/2/文件

对象“文件”的前缀为:/folder1/sub1/ , /folder1/sub2/, /1/, /2/。在此示例中,如果您传播读取 均匀地跨越所有四个前缀,您可以实现每个 22,000 个请求 第二。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

S3 - 前缀到底是什么?适用什么速率限制? 的相关文章

随机推荐