我向AWS的某位员工咨询了一些提高AWS S3传输速度的技巧。

我叫伊藤,是一名基础设施工程师。

Amazon S3
一个高度可扩展的系统,可用性高达 99.99%
(这意味着 99.9999999% 的稳健性)

有些人使用 S3 来搭建静态网站,
有些人则用它来存储数据。

真正重要的是传输速度。

今天我想介绍一个AWS员工提到的“提高传输速度的小技巧”!

S3 不是目录文件结构

在我们介绍提高传输速度的技巧之前……

将其复制到同一区域的三个数据中心

在 S3 中,有存储桶和对象,我们倾向于把文件夹看作存储桶,把文件看作对象,但实际上并非如此。

我引用一下。

Amazon S3 的底层技术其实就是一个简单的键值存储 (KVS)。例如,假设我们有如下的文件夹结构(以我们的视角来看)。(为了方便理解,我们假设 bar.txt 包含字符 bar,baz.txt 包含字符 baz。)
(根目录)
└ foo/
└ bar.txt
但这只是我们的视角,从 S3 的角度来看,它实际上只存储了以下信息。在 S3 中,斜杠 / 本身并没有什么特殊含义。
键(完整路径名) 值(文件内容)
foo/bar.txt bar

参考网站:打破 Amazon S3 中“文件夹”的幻象,揭示其真实本质 | Developers.IO

尽管 Amazon S3 支持存储桶和对象,但 Amazon S3 本身没有层次结构,尽管对象键名称中的前缀和分隔符可以在 Amazon S3 控制台和 AWS SDK 中暗示层次结构,从而引入文件夹的概念。

参考资料:对象键和元数据 - Amazon Simple Storage Service

使用存储桶和对象会让它们看起来像文件夹和文件,但它们似乎只是作为概念创建的。

由于数据是键值对格式,因此检索数据非常简单,只需进行搜索即可。
此外,如果使用相似的存储桶名称,数据将被存储在同一个数据中心,然后再进行复制,这
往往会降低传输速度。

在存储桶名称前添加哈希值

通过在存储桶名称中添加几个字符的哈希值,可以防止数据写入同一个数据中心。

  • 测试01
  • 测试02
  • 测试03

反而,

  • abctest01
  • yjctest02
  • ckttest03

就是这样。

但是,并非所有存储桶名称都是可以接受的;
命名规则有一些限制,所以要小心。

  • 存储桶名称长度必须介于 3 到 63 个字符之间。
  • 存储桶名称可以指定为单个标签或一系列标签,相邻标签之间用句点分隔。存储桶名称可以包含小写字母、数字和连字符 (-)。每个标签必须以小写字母或数字开头和结尾。
  • 存储桶名称不能是 IP 地址的格式(例如,192.168.5.4)。
  • 使用带有 SSL 的虚拟托管存储桶时,SSL 通配符证书仅匹配不包含句点的存储桶。为避免此问题,请使用 HTTP 或编写您自己的证书验证逻辑。我们建议您不要在存储桶名称中使用句点("")。

来源:存储桶限制和约束 - Amazon Simple Storage Service

这意味着各种数据会被写入同一区域内的不同数据中心,
预计速度会比在同一数据中心内写入更快。

我想知道开头需要多少个字符……我觉得至少是三个字符。

祝您在S3上玩得开心!

如果您觉得这篇文章有用,请点击【点赞】!
2
加载中...
2票,平均分:1.00/12
27,514
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者