Anywhere Cache 概览

本页面介绍 Anywhere Cache 功能,它可为 Cloud Storage 存储桶提供由固态硬盘 (SSD) 支持的可用区级读取缓存。Anywhere Cache 提供按需缓存容量,它会根据您的需求自动调整缓存和可用带宽的大小。Anywhere Cache 的优势使其特别有助于降低涉及大量读取的工作负载相关的网络费用。

如需了解如何在 Anywhere Cache 中创建和管理缓存,请参阅创建和管理缓存

概览

Anywhere Cache 可让您在与工作负载相同的可用区中创建缓存。在某个可用区中创建缓存时,源自该可用区的读取数据请求将由缓存(而非存储桶)进行处理。每个缓存都为其可用区内的客户端提供服务。只有当数据由缓存所在可用区中的虚拟机读取时,才会从存储桶注入到缓存中。元数据不会缓存,针对对象元数据的请求由存储桶(而非缓存)处理。

为存储桶创建缓存时,必须在存储桶所在位置内的某个可用区中创建缓存。例如,如果您的存储桶位于 us-east1 区域,您可以在 us-east1-b 中创建缓存,但不能在 us-centra1-c 中创建缓存。如果您的存储桶位于 ASIA 双区域中,您可以在 asia-east1asia-southeast1 区域内的任何可用区中创建缓存。如需查看可用区列表,请参阅 Compute Engine 文档中的区域和可用区

对于每个存储桶,您可以在每个可用区创建一个缓存。例如,如果您的存储桶位于 US 多区域中,而您的 Compute Engine 虚拟机在 us-east1-bus-central1-a 可用区中运行,您可以在 us-east1-b 中创建一个缓存,并在 us-central1-a 中创建另一个缓存。

Anywhere Cache 是一项全托管式服务服务,始终返回一致的数据。

优势

Anywhere Cache 的优势主要体现在以下两个方面:

  • 获得更快的数据访问速度:Anywhere Cache 将您的数据存储在靠近计算资源的高性能存储设备中。较短的网络路径和高性能设备可让工作负载获得更高的吞吐量、更快地完成读取,并缩短读取操作的第一字节时间 (Time to First Byte) 延迟。

  • 避免多区域数据传输费用:当您使用多区域存储桶查询 Cloud Storage 数据时,可以使用 Anywhere Cache 来避免 Compute Engine 等其他产品产生的数据传输费用。

何时应使用 Anywhere Cache?

Anywhere Cache 最适合用于缓存不经常更改但经常读取的数据,例如用于训练机器学习模型或运行分析工作负载的数据。

假设您要跨多个 Google Kubernetes Engine 节点训练 AI 模型,这些节点都反复读取存储在 Cloud Storage 存储桶中的数据,并且它们在相同的可用区中运行。当您在工作负载运行的可用区内创建缓存时,该缓存可提供额外的带宽,并帮助您避免在多区域存储桶中读取数据而产生的数据传输费用,从而更高效地运行更大规模的扩缩工作负载。

支持的位置

只要有可用容量,就可以在特定可用区中创建缓存。如果没有可用于创建缓存的容量,Anywhere Cache 服务会继续尝试创建缓存,直到容量可用或用户中止创建过程为止。容量可能会长时间处于不可用状态。

对于每个存储桶,您最多可以在每个可用区创建一个缓存。例如,如果某个存储桶位于 us-east1 区域,您可以在 us-east1-b 中创建一个缓存,并在 us-east1-c 中创建另一个缓存。如果存储桶位于包含 us-central1us-east1 的多区域中,您可以在 us-central1-a 中创建一个缓存,并在 us-east1-b 中创建另一个缓存。

您可以在以下可用区中使用 Anywhere Cache。您可以根据存储桶的位置类型使用这些可用区。

地理区域 位置
区域名称 区域 双区域 多区域 自定义双区域
亚洲
asia-east1-a
asia-east1-b
asia-east1-c
asia-northeast1-a
asia-northeast1-b
asia-northeast1-c
asia-southeast1-a
asia-southeast1-b
asia-southeast1-c
欧洲
europe-north1-a
europe-north1-b
europe-north1-c
europe-west1-b
europe-west1-c
europe-west1-d
europe-west4-a
europe-west4-b
europe-west4-c
europe-west6-a
europe-west6-b
美国
us-central1-a
us-central1-b
us-central1-c
us-central1-f
us-east1-a
us-east1-b
us-east1-c
us-east1-d
us-east4-a
us-east4-b
us-east4-c
us-east5-a
us-east5-b
us-east5-c
us-west1-a
us-west1-b
us-west1-c
us-west4-a
us-west4-b
us-west4-c

Anywhere Cache Recommender

Anywhere Cache Recommender 会分析数据用量和存储空间,并提供有关在存储桶/可用区对中创建缓存的建议和分析洞见。如需了解有关使用 Anywhere Cache Recommender 的概览信息和说明,请参阅 Anywhere Cache Recommender

缓存操作

本部分介绍您可以在 Anywhere Cache 缓存上执行的操作。有些操作是异步的,会返回一个长时间运行的操作;其他操作是同步的,操作会立即完成并返回 AnywhereCache 资源

创建缓存

创建缓存时,您可以配置以下属性:

  • 存留时间 (TTL) 是指数据块从上次读取起将在缓存中保留的最长时间。例如,如果 TTL 设置为 24 小时,某一个数据块的上次读取时间是周一上午 11 点,如果在这之后没有发生读取,该数据块将在周二上午 11 点从缓存中逐出。

    您可以将 TTL 设置为 1 小时到 7 天之间的值。如果未指定,TTL 默认为 24 小时。

  • 准许政策决定了缓存是在第一次未命中还是第二次未命中时注入数据。如果设置为在第二次未命中时注入数据,则仅当数据在您指定的 TTL 内第二次被读取时,系统才会将该数据注入缓存。“在第二次未命中时注入”设置可确保仅缓存读取多次的对象,从而降低使用 Anywhere Cache 的费用,但这也会降低缓存命中率。

    如果未指定,则准许政策默认设置为在第一次未命中时注入。

当您创建缓存时,在创建过程中,缓存为 CREATING 状态,在运行过程中,缓存为 RUNNING 状态。缓存创建操作最多可能需要 48 小时才能完成,之后操作会超时。

AnywhereCaches Create API 是异步的。创建操作会返回长时间运行的操作。长时间运行的操作会提供创建操作的状态,并且您可以在操作完成之前取消操作。

更新缓存

您可以更新 RUNNING 状态的缓存的 TTL 或准许政策。当缓存正在更新时,pending_update 字段的值为 true。当 pending_update 字段的值为 true 时,缓存无法再次更新。

处于 CREATING、PAUSED 或 DISABLED 状态的缓存无法更新。AnywhereCaches Update API 是异步的,并返回长时间运行的操作。

当缓存的 TTL 完成更新后,新的 TTL 会立即应用于新注入的数据;对于现有数据,仅当该数据被读取时才会应用新的 TTL。这意味着,缓存中的现有数据会保留旧的 TTL,直到该数据被读取或因 TTL 到期而被逐出。

获取缓存

当您获取缓存时,Anywhere Cache 会返回缓存实例的状态和配置。AnywhereCaches Get API 是同步的,并返回 AnywhereCache 资源。

列出缓存

您可以返回指定存储桶的关联缓存列表。您可以通过分页方式返回缓存列表。

AnywhereCaches List API 是同步的,并返回 AnywhereCache 资源列表。

暂停缓存

您可以暂停缓存,以停止 RUNNING 状态缓存的数据注入。当缓存处于 PAUSED 状态时,您仍然可以从缓存中读取现有数据,但无法将新数据注入到缓存中。从缓存中读取现有数据会重置该数据在缓存中的 TTL。

当您恢复处于 PAUSED 状态的缓存时,该缓存会变为 RUNNING 状态。

AnywhereCaches Pause API 是同步的,并返回 AnywhereCache 资源。

恢复缓存

您可以恢复处于 PAUSED 状态或 DISABLED 状态的缓存,前提是停用的缓存处于 1 小时的宽限期内。在 1 小时的宽限期过后,系统会尽力执行恢复操作,因为缓存可能会在宽限期后的任何时间点被删除。缓存恢复后,会变为 RUNNING 状态。

AnywhereCaches Resume API 是同步的,并返回 AnywhereCache 资源。

停用缓存

您可以停用缓存,以便从存储桶的配置中永久移除该缓存。停用缓存后,它会变为 DISABLED 状态。在此状态下,您仍然可以从缓存中读取现有数据,但无法将新数据注入到缓存中。

被停用的缓存有 1 小时的宽限期,在此期间,您可以通过恢复缓存来取消停用。在 1 小时的宽限期结束后,缓存会被删除。当缓存被删除时,该缓存中的所有数据都会被逐出,并且缓存会从存储桶中移除。

在缓存被删除前的 1 小时内,您可以通过恢复缓存来还原 DISABLED 状态,此时缓存会恢复为 RUNNING 状态。

AnywhereCaches Disable API 是同步的,并返回 AnywhereCache 资源。

缓存大小和带宽限制自动扩缩

Anywhere Cache 提供临时缓存存储空间和带宽,可根据您的需求进行扩缩。

缓存带宽限制

缓存带宽限制按项目和可用区应用。这意味着,同一项目和可用区内缓存的进出流量会计入一个共享的缓存带宽限制,即使这些缓存是为不同的存储桶创建也是如此。例如,假设缓存 A 是在可用区 us-east1-a 中为项目 my-project 中的存储桶 example-bucket-1 创建的。缓存 B 是在 us-east1-a 中为项目 my-project 中的 example-bucket-2 创建的。由于缓存 A 和缓存 B 都位于 us-east1-amy-project 中,因此这两个缓存的流量都计入同一缓存带宽限制。

您可以使用以下任一方法来提高缓存的总带宽:

  • 增加缓存中存储的数据量

  • 通过在更多可用区中创建缓存来增加缓存数量

如需详细了解 Anywhere Cache 的大小限制,请参阅存储桶的 Anywhere Cache 缓存大小上限。如需详细了解 Anywhere Cache 带宽限制,请参阅按项目和可用区应用的 Anywhere Cache 数据使用带宽上限

费用控制

以下是一些可用于降低运行缓存的费用的技巧:

  • 存储桶选择:您应仅为包含要缓存的数据的存储桶创建缓存。

  • 可用区选择:您应仅在工作负载将受益于缓存的可用区中创建缓存。

  • 在第二次读取时注入:您可以指定数据仅在第二次读取时注入(而不是在第一次读取时注入),这有助于确保缓存仅存储多次读取的数据。

  • TTL 设置:您应指定在缓存中存储数据所需的最小 TTL。TTL 可以在不中断操作的情况下更改。

  • 暂停缓存:您可以暂停缓存以停止数据注入并减少相关的缓存注入费用。暂停缓存会立即生效。您可以暂停缓存,直到指定的 TTL 到期后所有数据被逐出。所有数据被逐出后,将不再产生数据存储费用。

  • 停用缓存:您可以停用缓存,以便将其从服务中永久移除,并停止产生所有相关的缓存费用。

局限和限制

  • 在与存储桶关联的所有缓存都已删除之前,您无法删除该存储桶。

  • Anywhere Cache 不是持久性存储,缓存中的数据可能会因各种原因被删除。一种情况是,缓存自动调整大小,以确保有足够的资源可供工作负载使用。在这种情况下,某些数据可能会根据“最近最少使用”(LRU) 算法被逐出,直到 Anywhere Cache 服务增加缓存大小。

    在任何情况下,您的数据都会安全地存储在源存储桶中。如果数据因 TTL 到期以外的原因而从缓存中移除,Anywhere Cache 服务会尝试以透明的方式将数据重新注入到缓存中,而您无需为此付费。如果数据无法透明地重新注入,或者因 TTL 过期而被移除,Anywhere Cache 服务将在第一次或第二次读取时重新注入数据。

暂时性资源短缺

以下部分介绍发生暂时性资源短缺时 Anywhere Cache 的行为,暂时性资源短缺意味着指定可用区中没有足够的 SSD 容量或服务容量来创建缓存或增加缓存大小。

无法创建新缓存

由于缺少 SSD 容量或吞吐量服务资源,Anywhere Cache 可能无法在特定可用区中创建新缓存,从而导致暂时性的资源短缺。在此期间,Anywhere Cache 会尝试创建新缓存,尝试会持续最长 48 小时。如果在 48 小时内有资源可用,Anywhere Cache 会成功完成缓存创建请求。如果 48 小时内没有资源可用,缓存创建请求将失败。为避免缓存中断,您可以手动取消缓存创建请求,并在可能有可用容量的其他可用区或区域中创建新缓存。

如需在暂时性资源短缺期间监控缓存创建情况,请参阅 Anywhere Cache 文档,了解如何使用长时间运行的操作

无法增加缓存大小

在以下两种情况下,Anywhere Cache 可能会因暂时性的资源短缺而无法增加缓存大小:

  • 指定可用区中没有足够的 SSD 容量来增加缓存大小。如需了解详情,请参阅 SSD 容量不足

  • 可用区中没有足够的吞吐量服务资源来提高缓存带宽限制。如需了解详情,请参阅服务容量不足

SSD 容量不足

虽然 Anywhere Cache 可按需自动增加缓存大小,但能否增加缓存大小取决于 SSD 容量的可用性。如果在发出自动增加缓存大小的请求时没有可用的 SSD 容量,Anywhere Cache 会继续提交请求,直到暂时性资源短缺结束或不再需要增加缓存大小为止。

在暂时性资源短缺期间,系统会注入新数据,并根据最近最少使用算法逐出缓存中的现有数据,以确保缓存中有足够的空间存储新数据。如果缓存足够大,可以存储大部分热数据,则对缓存指标几乎没有影响。与不受资源短缺影响的缓存相比,容量小于热数据量的缓存需要更频繁地逐出数据并重新注入相同数据。如果缓存的实际大小远小于所需容量,可能会出现以下与资源短缺相关的行为:

  • 缓存带宽限制降低,缓存吞吐量降低,数据传输带宽配额消耗增加,并且可能会对其他指标产生影响。

  • 结算可能有以下影响:

    • 缓存注入费用提高

    • 缓存存储费用降低

    • 缓存数据传输费用降低

    • 缓存数据传输操作费用降低

    • 多区域数据传输费用提高

    • B 类操作费用提高

为了在暂时性资源短缺期间获得最佳效果,我们建议您监控缓存,并根据需要暂停缓存或工作负载。

服务容量不足

在缓存大小增加期间,如果特定可用区中的吞吐量服务资源不足以将现有缓存的缓存带宽限制以 20 Gbps/TiB 为单位扩容,则可能会暂时出现缓存带宽限制 (CBL) 短缺的情况。在 CBL 短缺期间,Anywhere Cache 不允许缓存 CBL 以每 TiB 数据 20 Gbps 为单位扩容,但缓存会继续响应读取请求。我们会逐个评估提高 CBL 的申请。在 CBL 短缺期间,出站流量带宽消耗可能会增加。

为了在暂时性资源短缺期间获得最佳效果,我们建议您监控缓存,并根据需要暂停缓存或工作负载。

后续步骤