什么是 CDN?(核心:将带宽从源服务器卸载到 CDN 服务器)
内容交付网络是一个地理分布的服务器组,经过优化以向最终用户交付静态内容。这种静态内容几乎可以是任何类型的数据,但 CDN 最常用于交付网页及其相关文件、流式视频和音频以及大型软件包。
没有 CDN 有 CDN
CDN 是由多个 POP 组成,每个 POP 是由多个边缘服务器组成,CDN 负责把请求路由到最近的边缘服务器
CDN 由位于不同位置的多个接入点(PoP) 组成,每个接入点由多个边缘服务器组成,这些边缘服务器缓存来自您的源或主机服务器的资产。当用户访问您的网站并请求图像或 JavaScript 文件等静态资产时,他们的请求将由 CDN 路由到最近的边缘服务器,从中提供内容。如果边缘服务器没有缓存资产或缓存的资产已过期,CDN 将从附近的另一台 CDN 边缘服务器或您的源服务器获取并缓存最新版本。如果 CDN 边缘确实有您的资产的缓存条目(如果您的网站接收到适量的流量,大多数情况下都会发生这种情况),它会将缓存的副本返回给最终用户。
CDN 是如何工作的?
当用户访问网站时,他们首先会收到来自 DNS 服务器的响应,其中包含您的主机 Web 服务器的 IP 地址。然后他们的浏览器请求网页内容,这些内容通常由各种静态文件组成,例如 HTML 页面、CSS 样式表、JavaScript 代码和图像。 一旦推出 CDN 并将这些静态资产卸载到 CDN 服务器上,通过手动“推出”它们或让 CDN 自动“拉”资产(这两种机制都将在下一节中介绍),然后您可以指示您的 Web 服务器重写指向静态内容的链接,使这些链接现在指向由 CDN 托管的文件。如果您使用的是 WordPress 等 CMS,则可以使用 CDN Enabler 等第三方插件来实现此链接重写。
缓存机制因 CDN 提供商而异,但通常它们的工作方式如下:
当 CDN 收到对静态资产(例如 PNG 图像)的第一个请求时,它没有缓存资产,并且必须从附近的 CDN 边缘服务器或源服务器本身获取资产的副本。这称为缓存“未命中”.通常可以通过检查包含 X-Cache: MISS. 此初始请求将比未来请求慢,因为在完成此请求后,资产将被缓存在边缘。
路由到此边缘位置的此资产的未来请求(缓存“命中”)现在将从缓存中提供服务,直到到期(通常通过 HTTP 标头设置)。这些响应将比初始请求快得多,从而显着减少用户的延迟并将 Web 流量卸载到 CDN 网络上。您可以通过检查 HTTP 响应标头来验证响应是否来自 CDN 缓存,该标头现在应该包含 X-Cache: HIT.
推与拉 Zone
1.向 CDN 提供源服务器地址后重写指向静态资产的链接
大多数 CDN 提供商提供两种缓存数据的方式:拉区和推送区。 拉区涉及输入您的源服务器地址,并让 CDN 自动获取和缓存您站点上所有可用的静态资源。拉取区域通常用于交付经常更新的中小型 Web 资产,例如 HTML、CSS 和 JavaScript 文件。在向 CDN 提供您的源服务器地址后,下一步通常是重写指向静态资产的链接,以便它们现在指向 CDN 提供的 URL。从那时起,CDN 将处理您用户的传入资产请求,并根据需要从其地理分布的缓存和您的来源中提供内容。
2.数据上传到指定的存储桶或存储位置后 CDN 推送到分布式边缘服务器
要使用 Push Zone,您需要将数据上传到指定的存储桶或存储位置,然后 CDN 会将其推送到其分布式边缘服务器队列上的缓存中。推送区域通常用于较大且不经常更改的文件,例如档案、软件包、PDF、视频和音频文件。
CDN 的好处
1.卸载静态资产将大大减少服务器的带宽使用量
如果服务器的带宽容量已接近极限,卸载图像、视频、CSS 和 JavaScript 文件等静态资产将大大减少服务器的带宽使用量。内容交付网络是为提供静态内容而设计和优化的,客户端对该内容的请求将被路由到边缘 CDN 服务器并由其提供服务。这具有减少原始服务器负载的额外好处,因为它们随后以低得多的频率提供这些数据。
2.快速向用户交付内容
如果用户群在地理上分散,并且流量的重要部分来自遥远的地理区域,则 CDN 可以通过在更靠近用户的边缘服务器上缓存静态资产来减少延迟。通过缩短用户与静态内容之间的距离,可以更快地向用户交付内容,并通过提高页面加载速度来改善他们的体验。
对于主要服务于带宽密集型视频内容的网站而言,这些优势更加复杂,高延迟和慢加载时间更直接地影响用户体验和内容参与度。
3.管理流量高峰并避免停机
CDN 允许通过跨大型分布式边缘服务器网络的负载平衡请求来处理大量流量峰值和突发。通过在交付网络上卸载和缓存静态内容,可以使用现有基础架构同时容纳更多用户。
对于使用单个源服务器的网站,这些巨大的流量峰值通常会使系统不堪重负,从而导致计划外的中断和停机。将流量转移到高可用性和冗余的 CDN 基础架构上,旨在处理不同级别的 Web 流量,可以提高资产和内容的可用性。
4.减少源服务器上的负载来降低服务器成本
由于提供静态内容通常占您带宽使用量的大部分,因此将这些资产卸载到内容交付网络可以大大减少您每月的基础设施支出。除了降低带宽成本外,CDN 还可以通过减少源服务器上的负载来降低服务器成本,从而使您现有的基础架构能够扩展。最后,一些 CDN 提供商提供固定价格的按月计费,允许您将可变的每月带宽使用量转变为稳定、可预测的经常性支出。
5.提高安全性
CDN 的另一个常见用例是 DDoS 攻击缓解。许多 CDN 提供商包括监控和过滤对边缘服务器的请求的功能。这些服务分析网络流量中的可疑模式,阻止恶意攻击流量,同时继续允许信誉良好的用户流量通过。CDN 提供商通常提供各种 DDoS 缓解服务,从基础设施级别(OSI 第 3 层和第 4 层)的常见攻击保护到更高级的缓解服务和速率限制。
此外,大多数 CDN 允许您配置完整的 SSL,以便您可以使用 CDN 提供的或自定义 SSL 证书加密 CDN 和最终用户之间的流量,以及 CDN 和源服务器之间的流量。
6.总结
CDN 允许通过(吸收用户请求)并从(边缘缓存响应)来显着降低带宽使用量,从而降低带宽和基础设施成本。
借助对 WordPress、Drupal、Django 和 Ruby on Rails 等主要框架的插件和第三方支持,以及 DDoS 缓解、完整 SSL、用户监控和资产压缩等附加功能,CDN 可以成为保护和优化高流量网站。