2018年7月17日,AWS正式发布了一份声明,解释说不再需要将每个S3对象密钥的前几个字符随机化以实现最佳性能:https : //aws.amazon.com/about-aws/whats-new / 2018/07 / amazon-s3-announces-request-rate-performance- /
Amazon S3宣布提高请求率性能
发表于:七月17,2018
Amazon S3现在提供更高的性能,以支持每秒至少3500个添加数据的请求和每秒5500个检索数据的请求,这可以节省大量处理时间,而无需支付额外费用。每个S3前缀都可以支持这些请求速率,从而可以轻松轻松地显着提高性能。
今天在Amazon S3上运行的应用程序将享受此性能提升,而无需进行任何更改,并且在S3上构建新应用程序的客户无需进行任何应用程序自定义即可实现此性能。Amazon S3对并行请求的支持意味着您可以根据计算集群的规模来扩展S3性能,而无需对应用程序进行任何自定义。性能按前缀扩展,因此您可以并行使用任意数量的前缀以实现所需的吞吐量。前缀数量没有限制。
S3请求速率性能的提高消除了任何先前的指南,即可以随机化对象前缀以实现更快的性能。这意味着您现在可以在S3对象命名中使用逻辑或顺序命名模式,而不会影响性能。现在,所有AWS区域都可以使用此改进。有关更多信息,请访问Amazon S3开发人员指南。
很好,但也令人困惑。它说每个S3前缀都可以支持这些请求速率,从而可以轻松地显着提高性能
但是由于前缀和定界符只是GET Bucket (List Objects)
列出存储桶内容时API的参数,因此谈论“每个前缀”的对象检索性能如何才有意义。每次调用都GET Bucket (List Objects)
可以选择所需的任何前缀和分隔符,因此前缀不是预定义的实体。
例如,如果我的存储桶包含以下对象:
a1/b-2
a1/c-3
然后,每当我列出存储桶内容时,我都可以选择使用“ /”或“-”作为分隔符,因此我可能会认为前缀是
a1/
要么
a1/b-
a1/c-
但是,由于GET Object
API使用整个密钥,因此对象检索不存在特定前缀或定界符的概念。因此,我可以期望5,500 req / sec开启a1/
还是5,500 req / sec a1/b-
和5500开启a1/c-
?
当有人建议“每个s3前缀”具有特定的性能水平(例如,每秒+5,500请求以检索数据)时,有人可以解释一下公告的含义吗?