《系统设计》课程学习笔记—内容分发网络(CDN)

129 阅读3分钟

为什么使用CDN?

内容分发网络(CDN)提高了内容可用性和冗余,同时降低了带宽成本并提高了安全性。从CDN提供内容可以显著提高性能,因为用户从靠近他们的数据中心接收内容,我们的服务器不再需要提供 CDN 已经满足的请求。

CDN 如何工作?

cdn.webp

在CDN中,源服务器包含内容的原始版本,而边缘服务器数量众多,分布在世界各地的不同位置。

为了最小化访问者与网站服务器之间的距离,CDN 将其内容的缓存版本存储在称为边缘位置的多个地理位置。每个边缘位置都包含多个缓存服务器,负责向其附近的访问者提供内容。

一旦静态资源缓存在特定位置的所有CDN服务器上,所有后续网站访问者对静态资源的请求将从这些边缘服务器而不是源服务器传递,从而减少源服务器负载并提高可扩展性。

例如,当英国有人请求我们的网站(可能位于美国)时,他们将从最近的边缘位置(如伦敦边缘位置)获得服务。这比让访问者向源服务器发出完整请求要快得多。

类型

CDN 通常分为两种类型:

Push CDN

每当服务器发生更改时, Push CDN都会接收新内容。我们全权负责提供内容,直接上传到 CDN,并重写指向 CDN 的 URL。我们可以配置内容何时过期以及何时更新。内容只有在新增或更改时才会上传,从而最大限度地减少流量,但最大限度地提高存储。

流量较小的网站或内容不经常更新的网站更适合与 Push CDN 配合使用。内容在CDN上放置一次,而不是定期重新提取。

Pull CDN

在 Pull CDN 中,根据请求更新缓存。当客户端发送从 CDN 获取静态资源的请求时,如果 CDN 没有这些资源,则客户端将从源服务器获取新更新的资源,并用此新资源填充其缓存,然后将此新缓存的资源发送给用户。

与 Push CDN相反,这需要较少的维护,因为 CDN 节点上的缓存更新是基于从客户端到源服务器的请求执行的。流量大的站点可以很好地使用 Pull CDN,因为流量分布更均匀,只有最近请求的内容保留在CDN上。

缺点

众所周知,好的东西都需要付出额外的代价,所以让我们讨论一下 CDN 的一些缺点:

  • 额外费用:使用 CDN 可能很昂贵,特别是对于高流量服务。
  • 限制:一些组织和国家已阻止一些流行 CDN 的域或IP地址。
  • 位置:如果我们的大多数受众位于没有 CDN 服务器的国家,则我们网站上的数据可能大部分情况下的传播无法使用任何CDN。

例子

以下是一些广泛使用的CDN: