Cloud CDN 概览

Cloud CDN(内容分发网络)借助 Google 分布在全球各地的边缘网络,在更靠近用户的位置提供内容,从而为您的网站和应用提速。

Cloud CDN 可与全球外部应用负载均衡器或传统版应用负载均衡器搭配使用,为您的用户分发内容。外部应用负载均衡器提供用于接收请求的前端 IP 地址和端口,以及用于响应这些请求的后端。

Cloud CDN 内容可以来自各种类型的后端

在 Cloud CDN 中,这些后端也被称为“源站服务器”。图 1 说明了来自在虚拟机 (VM) 实例上运行的源服务器的响应在由 Cloud CDN 传送之前如何流经外部应用负载均衡器。在这种情况下,Google Front End (GFE) 由 Cloud CDN 和外部应用负载均衡器组成。

图 1. 响应从源服务器流经 Cloud CDN,然后流向客户端。
图 1:响应从源服务器流经 Cloud CDN,然后流向客户端。

Cloud CDN 的工作原理

在用户从外部应用负载均衡器请求内容时,系统会将请求发送到 Google 的网络边缘处离用户最近的(如果可能)GFE。

如果该负载均衡器的网址映射将流量路由到已配置 Cloud CDN 的后端服务或后端存储桶,则 GFE 会使用 Cloud CDN。

缓存命中和缓存未命中

缓存是一组存储和管理内容服务器,可以更快地处理未来对相同内容的请求。缓存的内容是存储在源服务器上的可缓存内容的副本。

如果 GFE 在 Cloud CDN 缓存中查询并找到对应于用户请求的缓存的响应,则 GFE 会将缓存的响应发送给用户。这称为缓存命中。当发生缓存命中时,GFE 会通过内容的缓存键来查询内容,并直接响应用户,从而缩短往返时间,且无需源站服务器处理请求。

当请求中的部分内容从缓存传送,而另一部分从后端传送时,会发生部分命中。如果只有部分请求的内容存储在 Cloud CDN 缓存中,就会发生这种情况,如字节范围请求支持中所述。

如果首次请求某项内容时,GFE 确定其无法从缓存中找到请求所需内容。这种情况就称为缓存未命中。当缓存未命中时,GFE 会将请求转发给外部应用负载均衡器。然后,负载均衡器会将请求转发到您的某个源服务器。当缓存收到内容时,GFE 会将其转发给用户。

如果源服务器对此请求的响应是可缓存的,Cloud CDN 会将此响应存储在 Cloud CDN 缓存中,以用于将来的请求。 从缓存到客户端的数据传输过程称为缓存出站。向缓存传输数据的过程称为缓存填充

图 2 显示了缓存命中和缓存未命中的情况:

  1. 在虚拟机实例上运行的源站服务器发送 HTTP(S) 响应。
  2. 外部应用负载均衡器将响应分发到 Cloud CDN。
  3. Cloud CDN 将响应传送给最终用户。
图 2.初始响应由源服务器提供,而后续响应由 GFE 从缓存提供
图 2:初始响应由源服务器提供,而后续响应由 GFE 从缓存提供

如需了解与缓存命中和缓存未命中相关的费用,请参阅价格

缓存命中率

缓存命中率是指从缓存提供所请求对象的次数百分比。如果缓存命中率为 60%,则意味着从缓存提供所请求对象的次数占 60%,其余的 40% 则必须从来源进行检索。

如需了解缓存键如何影响缓存命中率,请参阅使用缓存键。 如需了解问题排查信息,请参阅缓存命中率低

查看短时间段内的缓存命中率

如需查看短时间段(过去几分钟)内的缓存命中率,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Cloud CDN 页面。

    转到 Cloud CDN

  2. 对于每个源站,请参阅缓存命中率列。

    不适用表示负载均衡内容当前未被缓存,或最近未被请求。

查看较长时间段内的缓存命中率

如需查看从 1 小时到 30 天的时间段内的缓存命中率,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Cloud CDN 页面。

    转到 Cloud CDN

  2. 来源名称列中,点击来源名称。
  3. 点击监控标签。
  4. 可选:选择特定后端。

CDN 命中率是可用的监控图表之一。显示不适用的图表表示系统未缓存或未在显示的时间范围内请求该内容。

您可以通过选择其他时间范围来调整该时段。下图是您可以选择的时间范围示例:

展示了可用时间范围的示例

将内容插入到缓存中

缓存是一种被动式操作;也就是说,只有请求流经某个缓存,并且响应可被缓存时,对象才会被存储在该缓存中。存储在一个缓存中的对象不会自动复制到其他缓存中;缓存间的填充过程仅在响应客户端发起的请求时才会发生。除非能让各个缓存响应相关请求,否则您无法预加载缓存。

当源服务器支持字节范围请求时,Cloud CDN 可以发起多个缓存填充请求,以响应单个客户端请求。

从缓存中提供内容

启用 Cloud CDN 之后,系统将自动缓存所有可缓存的内容。您的源站服务器使用 HTTP 标头来指示缓存哪些响应。您还可以使用缓存模式来控制可缓存性。

当您使用后端存储桶时,源站服务器是 Cloud Storage。使用虚拟机实例时,源站服务器是您在这些实例上运行的 Web 服务器软件。

Cloud CDN 在世界各地的许多位置设立了缓存。缓存的性质决定了我们无法预测某个请求的响应是否会从缓存中提供。但可以预计的是,在大部分时间里,缓存中将提供热门请求的可缓存内容,从而显著缩短延迟时间、减少费用并降低源服务器的负载。

如需详细了解 Cloud CDN 的缓存内容以及缓存时长,请参阅缓存概览

如需了解 Cloud CDN 从缓存提供了哪些内容,您可以查看日志

从缓存中移除内容

要从缓存中移除内容,您可以使缓存的内容失效。如需了解详情,请参阅:

缓存绕过

如需绕过 Cloud CDN,您可以直接从 Cloud Storage 存储桶或 Compute Engine 虚拟机请求对象。例如,Cloud Storage 存储桶对象的网址如下所示:

https://storage.googleapis.com/STORAGE_BUCKET/FILENAME

逐出和到期

要从缓存提供的内容必须已插入缓存中,该内容不得被逐出,也不得过期。

逐出和到期是两个不同的概念。它们都会影响所提供的内容,但并不直接相互影响。

逐出

如果您正在使用少量请求测试内容缓存,则可能会注意到,内容已被逐出。

每个缓存对于可以保存的内容数量都设有限制。但是,即使缓存已满,Cloud CDN 也会向缓存添加内容。要将内容插入已被填满的缓存,缓存会首先移除其他内容以腾出空间。此过程称为逐出。缓存通常都处于已填满的状态,因此会不断地逐出内容。缓存通常会逐出最近未被访问过的内容,而无论内容的到期时间如何。被逐出的内容可能已到期,也可能没有。设置到期时间不会影响逐出。

非热门内容是指一段时间内未被访问过的内容。“一段时间”和“非热门”都是与缓存中大部分其他内容相对而言。多个 Google Cloud 项目共用一个公共缓存空间,因为这些项目均从同一组 GFE 传送。在多个项目(而不仅在单个项目中)上比较内容的相对热门程度。

当缓存获得更多流量时,也会逐出更多缓存的内容。

与所有大规模缓存一样,内容可能会以无法预测的方式被逐出,因此不能保证特定请求能获得缓存中提供的内容。

到期

HTTP(S) 缓存中的内容可以配置到期时间。即使内容尚未被逐出,到期时间也会通知缓存不提供到期内容。

例如,假设某个提供每小时照片的网址。其响应可能应设置为在一小时内到期。否则,所提供的内容可能是缓存中的旧照片。

如需了解如何微调过期时间,请参阅使用 TTL 设置和替换

Cloud CDN 发起的请求

当您的源服务器支持字节范围请求时,Cloud CDN 可以向源服务器发送多个请求,以响应单个客户端请求。如对字节范围请求的支持中所述,Cloud CDN 可以发起两种类型的请求:验证请求和字节范围请求。

其他 Cloud Platform 服务的数据位置设置

使用 Cloud CDN 即表示,数据可能存储在您的源服务器所在区域或可用区之外的内容提供地点。这是正常现象,HTTP 缓存正是以这种方式在互联网上运行。根据 Google Cloud Platform 服务条款中的服务专属条款,某些 Cloud Platform 服务在与其他 Google 产品和服务(本例中为 Cloud CDN 服务)一起使用时,这些 Cloud Platform 服务可用的数据位置设置将不适用于各自 Cloud Platform 服务的核心客户数据。如果您不希望出现这种结果,请勿使用 Cloud CDN 服务。

对 Google 代管的 SSL 证书的支持

您可以在启用 Cloud CDN 时使用 Google 代管的证书

Google Cloud Armor 与 Cloud CDN

Google Cloud Armor 与 Cloud CDN 具有两种类型的安全政策:

  • 边缘安全政策。这些政策可应用于启用了 Cloud CDN 的源站服务器。它们适用于 CDN 查询之前的所有流量。
  • 后端安全政策。系统仅会针对动态内容请求、缓存未命中请求或者其他以源站服务器为目标的请求强制执行这些政策。

如需了解详情,请参阅 Google Cloud Armor 文档。

后续步骤