什么是 CDN 及其工作原理?

CDN——你不断看到首字母缩略词。 也许在 URL 中,也许在登陆页面上,但它从来没有被完全点击过——什么是内容交付网络,它们到底做了什么?

我们将在这篇概述文章中进行解释,并在后续帖子中演示两个流行的文章。

CDN 基础知识

CDN 是提供内容的计算机网络。

更具体地说,它是一组服务器,在地理位置上位于某些 Web 内容的原始服务器和请求它的用户之间,所有这些都是为了通过减少延迟来更快地交付内容。 这是他们的主要目的。

这些地理位置较近的服务器,也称为 PoP 或存在点,也缓存可缓存的内容,从而从原始服务器上移除大量负载。 有不同类型的 CDN 提供不同类型的服务,它们可以有不同的网络拓扑:分散的 CDN 旨在让尽可能多的服务器分散在世界各地。 Akamai 就是这样一种 CDN。 整合的 CDN 点数较少,但为网络性能、吞吐量和 DDoS 抵抗而构建的点数较大。

CDN 的类型

我们说过,它们的主要目的是减少延迟并加快渲染速度。 但在 2MB 图像和 500kb JavaScript 库需要 3 分钟才能在网站上启动的现代世界中,这种延迟无关紧要。 但随着时间的推移,CDN 也有其他用途。

面向内容的 CDN

最初,CDN 仅用于静态内容(JS、CSS、HTML)。 您必须在创建/上传内容时将内容推送给他们(他们不知道他们需要用您的内容更新他们的缓存,即使有人请求也不知道)。

然后,他们添加了来源拉取,使事情变得更加自动化——这意味着用户请求 CDN 的 URL,然后 CDN 自动请求来源网站的 URL,缓存它返回的内容。 此外,可用性成为一个重要因素。 许多 CDN 现在缓存网站的“最后一个活动”状态,这样如果源出现故障,用户仍然可以访问 CDN 内容,从而在一切恢复正常之前创造稳定的假象。

此外,现代 CDN 通常提供自动优化层,这些层将自动调整图像大小并根据请求的图像大小保存它们以备将来使用。 这意味着如果您的网站有一个 2MB 的标题图片并且有人在 300px 宽的屏幕上请求它,CDN 将制作一个 30kb 大小和 300px 宽的副本并在将来为所有移动用户提供服务,自动使网站更快.

面向安全的 CDN

添加到 CDN 的最后一层实用性是 DDoS 和机器人保护。 像 Incapsula 这样的 CDN 专门从事这方面的工作。

由于 CDN 是网站基础设施的最外层,也是流量的第一个接收者,它可以及早检测到 DDoS 攻击,并使用称为洗涤器的特殊 DDoS 保护服务器阻止它们,而不会让它们到达源服务器并使其崩溃。

此外,通过使用从众多客户那里众包的知识,CDN 可以了解可疑的 IP、垃圾邮件发送者、僵尸程序,甚至是爬虫的类型及其行为。 例如,在站点 A 上工作的抓取器一旦被识别,也会停止在站点 B 上工作(如果该站点受同一 CDN 保护),因为流量过滤器将识别它之前看到的模式。

更重要的是,虽然 CDN 确实允许他们的客户上传自定义证书,但他们也提供自己的证书。 这有两个好处:

    当证书中出现重大漏洞时,CDN 通常会迅速做出响应,因为他们损失最多(所有客户)。 因此,通常在大多数人甚至不知道安全漏洞之前就已经修复了。 连接速度更快,因为如果许多网站使用相同的 CDN,那么您已经通过其 SSL 证书与 CDN 建立了有效的连接和相互信任,并且不必为使用该 CDN 证书的每个站点重复此过程。 这对单个网站的影响不如对整个网络的影响大。

最大的玩家

CDN 领域的一些最大参与者是 Akamai、AWS Cloudfront、Cloudinary、Incapsula、MaxCDN、Fastly 等公司。

与其全面比较它们,我们将列出每个人都可以成为冠军的类别:

抓取和 DDoS 保护

虽然在其他方面也很好,但 Incapsula 在抓取和 DDoS 保护方面是无与伦比的。 Incapsula 拥有一个广泛的数据库,其中不仅包含攻击性代理 IP 地址,还包含鼠标和机器人和爬虫的浏览模式,可以阻止大多数自动攻击的踪迹。

选择是否:您是一家网上商店,不希望您的竞争对手废弃您的目录

速度和全球影响力

Akamai,甚至 Facebook 使用的 CDN,在全球可用性方面有着良好的记录。 他们分散的网络拓扑模型和可用性甚至在世界上较贫穷的地区(这是其他 CDN 所缺乏的)使得 Akamai 提供的内容即使在低连接性区域也能顺利加载。 紧随其后的是亚马逊的 AWS Cloudfront。

如果选择:您的目标是全球影响力,从中国到美国,从芬兰到南极洲。

负担能力

Amazon Cloudfront 是付费计划中最便宜的(我们不计算免费计划,因为它们通常缺少重要功能)并且可以说是仅次于 Akamai 的最大覆盖面,这并不便宜(分散的拓扑结构维护起来很昂贵)。

选择如果:价格是一个问题。

盗链

盗链是指有人在您网站上托管的图片上选择“复制图片地址”,并直接将其包含在自己的网站中,原始 URL 完好无损。 对于内容窃贼而言,这通常是草率和懒惰的工作,但如果模仿者成功在 Facebook 或 Reddit 等具有重大影响的社交媒体网站上分享他们的网站,并且您的服务器因此受到影响,则可能会导致大笔费用。 MaxCDN 和 KeyCDN 都提供了很好的盗链保护。

选择是否:您有画廊、旅游博客或任何其他有盗链风险的图像丰富的网站。

其他

我们鼓励您自己出去调查。 有无数的帖子将 CDN 相互比较,每个 CDN 的每个计划在提供的选项上都与下一个不同。 将它们全部覆盖是极其困难的,而且景观不断变化。

实施过程

实施 CDN 通常需要在注册商(租用您的域名的公司)的控制面板中更改一些 DNS 记录。 这会导致所有流量首先访问 CDN,然后访问您的网站。 由于这一切都发生在幕后(通过 IP),因此该过程对用户来说是透明的。

有时,网站会在其主域中添加一个特殊的子域,用于托管图像、JavaScript、CSS 和其他静态内容。 如果您打开浏览器开发控制台的“网络”选项卡,或者只是在加载 Facebook 等网站时注意浏览器的状态栏,您会注意到很多 URL 带有 cdn 在它们中——那是有问题的站点只从 CDN 请求它的一些内容。

为什么不通过 CDN 请求所有内容? 因为静态内容通常很大——2MB 图片、500kb 的 JS 等。这值得快速提供,因为 a) 它不经常更改并且可以缓存很长时间 b) 从应用程序的主服务器,可以是动态的。

结论

在本文中,您了解了什么是 CDN 及其工作原理。 您了解了不同类型的 CDN 及其潜在的工作范围,以及该领域最大的参与者。

在后续的两篇文章中,我们将介绍 Cloudinary 和 Cloudflare,在我们的主要性能月项目中,我们实际上会将其中之一实施到我们的真实世界应用程序中,以便您可以在实际示例中看到它的运行情况。 敬请关注!

阅读更多

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注