我想知道是否有人知道 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 字节作为分区键并鼓励使用高基数前缀的博客,我只是不确定它如何与具有“平面文件结构”的存储桶交互。
你是对的,这个公告似乎自相矛盾。只是写得不正确,但信息是正确的。简而言之:
- 每个前缀每秒最多可以实现 3,500/5,500 个请求,因此对于许多用途来说,假设是您不需要使用多个前缀。
- 前缀被视为对象位置的整个路径(直到最后一个“/”),并且不再仅由前 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(使用前将#替换为@)