随机哈希前缀如何改善S3大规模获得性能



我要继续指出这一点已被问到并在此处回答,并在关键名称中添加随机前缀以提高S3性能? - 我认为不足。

有人可以用更多外行的术语解释如何将随机哈希前缀添加到要大规模访问的对象有助于性能?

场景可能会帮助说明我缺乏理解:

1000个客户都在尝试(具有适当的权限(在Bucket bar中执行对象foo的请求,那么制作foo-> 4jd8fb-foo将如何帮助减轻系统的压力?客户是否还没有在其获取请求中都需要相同的对象?

我显然缺少一些可能很愚蠢的东西,但是我真的很想缠绕着为什么这会有所帮助 - 我想我的误解是从S3处理索引和分区的原因,但是进一步的指导将不胜感激。。

我建议您的直觉是正确的:object键前缀中的熵没有任何作用来改善完全相同的对象的重复读数。

这不是正在考虑的性能(尽管您有这样的工作量,但应该考虑在S3前使用CloudFront,将工作量分配在数十个边缘位置中的节点之间,并在任何地方保持缓存的副本您的观众恰好是(。

随机前缀会影响水平缩放潜力,这种直接提高了潜在的写入能力 - 即可实现的对象创建和覆盖速率,每秒&sup1的请求; - 通过减少索引中热点的发生率。

这可以通过提供S3的分区分割逻辑来提高潜在的写入能力。如果(例如(具有十六进制对象键前缀,则S3可能会在对象键的第一个八位位上将您的水桶分为多达16个不同的分区,第二个在第三个八位八位,第三个4096,因此,有了这个看似这似乎是这个看似的。 - 简单的更改,您为服务提供了一种简单的方法,可以一次又一次地将每个分区的工作量切成一半。

如果您正在用越来越多的键,尤其是时间戳创建对象,则无需通过将其分成两个分片来减少一个分区的负载,因为无论考虑到拆分的地方,新的对象始终是将位于右侧(>拆分点(新分区,而左侧(<拆分点(将很少或没有新的对象创建。


&sup1;在每秒的请求中,不是有效载荷带宽,因为带宽似乎并不是一个问题,因为S3显然独立于对象键shard shards的备份商店 - 对象索引和对象有效载荷似乎是单独存储,否则分区拆分在机器方面将非常昂贵,更不用说是一个更精致的操作,因为持久存储的对象必须移至新的存储位置。

最新更新