一致性

本页面介绍哪些 Cloud Storage 操作具有高度一致性以及哪些 Cloud Storage 操作具有最终一致性。对于可缓存且可公开读取的对象,您需要控制对象操作的一致程度。

具备高度一致性的操作

Cloud Storage 为以下操作(包括数据和元数据)提供了高度的全球一致性:

  • 写后读 (Read-after-write)
  • 元数据更新后读取 (Read-after-metadata-update)
  • 删除后读取 (Read-after-delete)
  • 列出存储分区
  • 列出对象
  • 授予资源访问权限

如果您在将某个对象上传到 Cloud Storage 后收到成功响应,您可立即从 Google 提供服务的任意位置下载该对象并在元数据操作中进行使用。无论您是创建新对象还是覆盖现有对象,情况都是如此。由于上传操作具有高度一致性,因此,执行写后读 (read-after-write) 或元数据更新后读取 (read-after-metadata-update) 操作时,您不会收到 404 Not Found 响应或过时数据。

此外,如果上传请求成功,这意味着您的数据将被复制到多个数据中心。当您向 Cloud Storage 全球一致的复制存储区执行写入操作时,与非复制存储区或非提交存储区相比,延时可能会略高一些。这是因为只有在多项(而不仅仅是一项)写入完成时才会返回成功响应。

对象删除操作也具有高度的全球一致性。如果删除请求成功,立即尝试下载对象或其元数据将导致 404 Not Found 状态代码。收到 404 错误的原因是,删除操作成功后对象将不再存在。

列出存储分区的操作具有高度一致性。例如,如果您在创建存储分区后立即执行 list buckets 操作,新存储分区会显示在返回的存储分区列表中。

列出对象的操作也具有高度一致性。例如,如果您在将对象上传至存储分区后立即执行 list objects 操作,新对象会显示在返回的对象列表中。

对于存储分区,虽然元数据更新后读取 (read-after-metadata-update) 操作的元数据更新具有高度一致性,但产生的配置更改可能需要一段时间才能传播。例如,如果您为存储分区启用了对象版本控制,则应至少等待 30 秒才能删除或覆盖对象。

具备最终一致性的操作

以下操作具有最终一致性:

  • 撤消资源访问权限

撤消访问权限后,通常需要大约一分钟的时间才能生效。在某些情况下,可能需要更长时间。

以最终一致性引发的行为为例,如果您移除了某个用户对存储分区的访问权限,这项更改会立即反映在存储分区的元数据中;但在短时间内,该用户可能仍然可以访问存储分区。

缓存控制和一致性

可公开读取的缓存对象可能不会呈现高度一致性。如果您允许某个对象进行缓存,则当您更新或删除处于缓存中的对象时,除非缓存有效期结束,否则系统不会更新或删除缓存的对象。

对象的缓存有效期由与该对象关联的 Cache-Control 元数据定义。Cache-Control 元数据可使用 Cache-Control 请求标头设置,初次上传对象或后续更新对象元数据时会包含此标头。通过控制 Cache-Control 元数据,您还可以控制缓存对象的一致程度。此外,尽管对象请求可以包含自己的 Cache-Control 标头,但如果这些标头被设置为避免缓存内容,Cloud Storage 则会忽略它们。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud Storage
需要帮助?请访问我们的支持页面