什么是 CDN?内容分发网络说明
内容分发网络 (CDN) 是一个地理分布的服务器及其数据中心网络,有助于以最小的延迟向用户分发内容。
它通过位于战略位置的数据中心(称为接入点 (PoP))将内容带到更靠近用户的地理位置。CDN 还涉及缓存服务器,用于存储和传送缓存文件以加快网页加载时间并减少带宽消耗。我们将在下面详细介绍 CDN 的工作原理。
对于依赖向用户提供内容的企业来说,CDN 服务至关重要。
请考虑以下情况:
大型新闻刊物,读者遍布多个国家
需要在用户信息流中提供多媒体内容的社交媒体网站
Netflix 等娱乐网站实时提供高清网络内容
拥有数百万客户的电子商务平台
地理分散的用户访问
所有这些企业都需要确保内容交付的加速、服务的可用性、资源的可扩展性和 Web 应用程序的安全性。这正是 CDN 服务的独特优势所在。
CDN 简史
CDN 诞生于近二十年前,旨在解决向互联网上的最终用户快速推送大量数据的挑战。如今,它们已成为网站内容交付背后的驱动力,并继续受到学术界和商业开发者的研究和改进。
第一个内容分发网络于 90 年代末建成,至今仍占全球互联网流量的 15-30%。此后,随着宽带内容的增长以及互联网上音频、视频和相关数据的流式传输,越来越多的 CDN 被开发出来。从广义上讲,CDN 的演变可以分为四代:
形成前期:在实际创建 CDN 之前,所需的技术和基础设施正在开发中。这一时期的特点是服务器群的兴起、分层缓存、Web 服务器的改进和缓存代理部署。镜像、缓存和多宿主也是为 CDN 的创建和发展铺平道路的技术。
第一代:CDN 的第一次迭代主要侧重于动态和静态内容交付,因为这是网络上仅有的两种内容类型。当时的主要机制是创建和实施副本、智能路由和边缘计算方法。应用程序和信息被分散到各个服务器。
第二代:接下来是 CDN,它专注于为用户提供流媒体视频和音频内容或视频点播服务(如 Netflix)和新闻服务。这一代还为向移动用户提供网站内容开辟了道路,并见证了 P2P 和云计算技术的使用。
第三代:第三代 CDN 是目前我们所处的阶段,并且随着新的研究和开发,它仍在不断发展。我们可以预期,未来的 CDN 将越来越多地为社区建模。这意味着系统将由普通用户和普通个人驱动。预计自我配置将成为新的技术机制,以及自我管理和自主内容交付。预计最终用户的体验质量将成为未来的主要驱动力。
CDN 最初是为了应对极端带宽压力而发展起来的,因为视频流的需求以及 CDN 服务提供商的数量都在增长。随着连接性的进步和每一代新的消费趋势,CDN 服务的价格下降,使其成为一种大众市场技术。随着云计算的广泛采用,CDN 在所有业务运营层面都发挥着关键作用。它们是 SaaS(软件即服务)、IaaS(基础设施即服务)、PaaS(平台即服务)和 BPaaS(业务流程即服务)等模型的关键。
CDN 如何工作?
CDN 的工作原理是缩短用户与源站(网络或应用服务器)之间的物理距离。它涉及一个全球分布的服务器网络,这些服务器将内容存储在距离服务器比距离源站更近的地方。为了更好地理解这一点,有助于了解用户如何从有 CDN 和没有 CDN 的网站访问网络内容。
无需 CDN
当用户在浏览器中输入网站时,会建立一个类似下图的连接,网站名称通过 Local DNS 或 LDNS(如 ISP 提供的 DNS 服务器或公共 DNS 解析服务器)解析为 IP 地址,如果 DNS 或 LDNS 无法解析 IP 地址,则会递归请求上游 DNS 服务器进行解析,最终请求可能会传递到区域所在的权威 DNS 服务器,该 DNS 服务器解析地址并返回给用户。
本地 DNS 到权威 DNS
然后,用户的浏览器直接连接到源站并下载网站内容。每个后续请求都由源站直接提供服务,静态资产缓存在用户机器本地。如果来自类似或其他位置的另一个用户尝试访问同一网站,他将经历相同的序列。每次,用户请求都会到达源站,源站将回复内容。沿途的每一步都会增加延迟或“等待时间”。如果源站距离用户较远,响应时间将受到严重延迟的影响,从而带来糟糕的用户体验。
使用 CDN
然而,在有 CDN 的情况下,该过程略有不同。当 LDNS 收到用户发起的 DNS 请求时,它会将请求转发到 CDN 的 DNS 服务器之一。这些服务器是全局服务器负载均衡器基础设施(或“GSLB”)的一部分。GSLB 有助于实现负载平衡功能,该功能实际上可以测量整个互联网,并持续跟踪有关所有可用资源及其性能的信息。有了这些知识,GSLB 会使用性能最佳的边缘地址(通常靠近用户)来解析 DNS 请求。“边缘”是一组缓存和交付 Web 内容的服务器。
DNS 解析完成后,用户向边缘服务器发出 HTTPS 请求。当边缘服务器收到请求时,GSLB 服务器会帮助边缘服务器按照最佳路由将请求转发到源服务器。然后,边缘服务器获取请求的数据,将其传递给请求它的最终用户,并将该数据存储在本地。所有后续用户请求都将从本地数据集提供,而无需再次查询源服务器。即使源服务器因任何原因不可用,也可以交付存储在边缘服务器中的内容。
为什么要使用 CDN?
CDN 通过最大限度地减少延迟、提高网站性能和降低带宽成本,帮助企业有效地向最终用户提供内容。
CDN 的另一个独特功能是它允许边缘服务器预先获取内容。这可确保您要传输的数据存储在所有 CDN 数据中心。在 CDN 术语中,这些数据中心称为接入点 (或“POP”)。PoP 通过将 Web 内容拉近到网站访问者,有助于最大限度地缩短往返时间。
例如,假设您开展广告活动,向数百万潜在客户宣传您的服务或产品。您可能希望大量客户在阅读帖子后涌入您的网站。如果您与具有良好受众参与率的网红打交道,流量可能会出现更大的峰值。您能确定您的源服务器能够一次性处理这种流量峰值吗?
在这种情况下,CDN 可以帮助在边缘服务器之间分配负载,每个人都会得到响应。由于只有一小部分请求会到达源站,因此您的服务器不会遇到大量流量高峰、502 错误和上游网络通道过载。
CDN 的好处
根据您企业的规模和需求,CDN 的优势可分为 4 个不同的部分:
缩短网站页面加载时间
通过使用附近的 CDN 服务器(以及其他优化)使网页内容分发更接近网站访问者,访问者可以体验到更快的网页加载时间。访问者通常更倾向于点击或跳出页面加载时间较长的网站。这也会对网页在搜索引擎上的排名产生负面影响。因此,拥有 CDN 可以降低跳出率并增加人们在网站上停留的时间。换句话说,加载速度快的网站将让更多访问者停留更长时间。
降低带宽成本
每次源服务器响应请求时,都会消耗带宽。带宽消耗的成本是企业的一大开支。通过缓存和其他优化,CDN 能够减少源服务器必须提供的数据量,从而降低网站所有者的托管成本。
提高内容可用性和冗余度
大量网络流量或硬件故障可能会中断网站的正常功能并导致停机。由于其分布式特性,CDN 可以处理更多网络流量,并且比许多原始服务器更能承受硬件故障。此外,如果一个或多个 CDN 服务器因某种原因离线,其他运行服务器可以接管网络流量并保持服务不中断。
提高网站安全性
CDN 处理流量高峰的相同过程使其成为缓解 DDoS 攻击的理想选择。这些攻击中,恶意行为者通过发送大量请求来压垮您的应用程序或原始服务器。当服务器因流量过大而停机时,停机时间会影响网站对客户的可用性。CDN 本质上充当 DDoS 保护和缓解平台,GSLB 和边缘服务器将负载均匀分布在整个网络容量上。CDN 还可以提供证书管理以及自动证书生成和续订。
CDN 还有什么其他用处?
CDN 的优势不仅限于上述优势。现代 CDN 平台为您的业务和工程团队带来更多优势。
它可用于管理地球上不同地区的访问。您可以允许某些地区访问,但可以拒绝其他地区的访问。
您可以轻松地将应用程序逻辑卸载到靠近客户的边缘。您可以处理和转换请求/响应标头和正文,根据请求属性在不同来源之间路由请求,或将身份验证任务委托给边缘。
大量流量需要一套用于日志收集和处理以供进一步分析的基础设施。CDN 收集日志并提供接口以方便分析访问者生成的数据。
当你熟悉某样东西时,它自然会变得容易使用。因此,CDN Pro Edge 基于 NGINX。这意味着您可以使用标准 NGINX 指令执行任务。
我们的工程团队花费了数千小时来扩展 NGINX。
数据安全和 CDN
信息安全是 CDN 不可或缺的一部分。CDN 通过以下方式帮助保护网站的数据。
通过提供 TLS/SSL 证书
CDN 可以通过提供传输层安全性 (TLS)/安全套接字层 (SSL) 证书来帮助保护网站,这些证书可确保高标准的身份验证、加密和完整性。这些证书可确保在用户和网站之间传输数据时遵循某些协议。
当数据通过互联网传输时,很容易被恶意行为者拦截。解决这个问题的方法是使用协议加密数据,以便只有预期的接收者才能解码和读取信息。TSL 和 SSL 就是这样的协议,它们加密通过互联网发送的数据。它是安全套接字层 (SSL) 的更高级版本。如果网站以 https:// 而不是 http:// 开头,则可以判断它是否使用 TLS/SSL 认证,这表明它足够安全,可以进行浏览器和服务器之间的通信。
缓解 DDoS 攻击
由于 CDN 部署在网络边缘,因此它充当了一道虚拟的高安全性围栏,可防止对您的网站和 Web 应用程序的攻击。分散的基础设施和边缘位置也使 CDN 成为阻止 DDoS 洪水攻击的理想选择。由于这些洪水攻击需要在核心网络基础设施之外缓解,因此 CDN 将根据其来源在不同的 PoP 上进行处理,从而防止服务器饱和。
阻止机器人和爬虫
CDN 还能够阻止威胁并限制滥用机器人和爬虫程序占用您的带宽和服务器资源。这有助于限制其他垃圾邮件和黑客攻击并降低您的带宽成本。
静态和动态加速度
静态内容是指在交付给最终用户之前不需要生成、处理或修改的资产。这些可能是图像或其他媒体文件、各种二进制文件,或应用程序的静态部分(如 HTML、CSS、JavaScript 库,甚至是 JSON、HTML 或任何不经常更改的动态响应)。如前所述,您可以提前预取此类内容。然后,当您需要使此类内容无效并将其从边缘服务器中删除时,您可以清除所需的路径。
动态加速适用于由于其动态特性而无法在边缘缓存的内容。想象一下,一个 WebSocket 应用程序监听来自服务器或 API 端点的事件,该事件的响应因凭据、地理位置或其他参数而异。很难以类似于缓存静态内容的方式利用边缘上的缓存机制。在某些情况下,应用程序和 CDN 之间更紧密的集成可能会有所帮助;然而,在某些情况下,应该使用缓存以外的其他方法。对于动态加速,使用 CDN 优化的网络基础设施和高级请求/响应路由算法。
计费模式或“我要付什么钱?”
传统上,在 CDN 中,您需要为最终用户消耗的流量和请求量付费。此外,HTTPS 请求比 HTTP 请求需要更多的计算资源,这会给 CDN 提供商设备带来更多负载。因此,您可能需要为 HTTPS 请求支付额外费用,而 HTTP 请求则无需支付额外费用。
随着计算移至边缘,CPU 成为计费对象。请求可能具有各种处理管道,因此需要不同数量的 CPU 时间。按请求数计费是不切实际的;按流量量 + 使用的 CPU 时间计费更为实际。
CDN 组件说明
CDN 由各种元素组成,使其能够正常运行。
这里简单解释一下三大部件的作用:
接入点 (PoP) – PoP 是战略性放置的数据中心,可加快用户之间的通信速度。弥合网站内容与访问者之间的差距,可带来更快、更少干扰的用户体验。
缓存服务器 – 这些是负责存储和传送缓存文件的组件。它们的主要功能是加快网站加载时间,同时减少带宽消耗。
存储(SSD/HDD + RAM)——所有检索到的数据都位于 SSD(固态硬盘)、HDD(硬盘驱动器)或 RAM(随机存取存储器)中。最常用的文件通常保存在速度最快的介质上——RAM。
不同类型的 CDN
并非所有 CDN 都以相同的方式运行,有些 CDN 比其他 CDN 更适合提供某些类型的内容。以下是 3 种 CDN 类型可供选择:
点对点 CDN
如果您以前使用过 torrent,那么您可能已经知道点对点 CDN 的工作原理。
此 CDN 使用点对点协议工作。在点对点 CDN 中,内容不会缓存在边缘服务器上。相反,网络中访问内容的每个用户也会共享内容。
例如,当用户从 torrent 下载电影时,他也在后台与其他用户共享电影的部分内容。这非常划算,因为它不需要任何昂贵的硬件。
推送 CDN
使用 Push CDN,您作为网站所有者或开发者对此负全部责任。
您无需等待 PoP 服务器在收到请求时提取网页数据,在收到任何请求之前,您就已经将所需的内容推送到 PoP 服务器上。然后,此信息及其相关元素将存储在缓存中,直到被移除或清除。
使用 Push CDN,您可以完全掌控。您在 PoP 服务器上推送的内容就是网络访问者发出网络请求时设备上显示的内容。
原始拉取 CDN
Origin Pull CDN,顾名思义,涉及一个 PoP 服务器从原始服务器提取网页数据和其他元素。
当收到请求时,CDN 将确定向网络用户提供哪些信息。
例如,当客户端发送需要从 CDN 获取静态资产的请求时,如果 CDN 没有该资产,则它将从源服务器获取最新更新的资产,并用该新资产填充其缓存,然后将该新缓存的资产发送给用户。
与 Push CDN 相反,这需要较少的维护,因为 CDN 节点上的缓存更新是根据从客户端到原始服务器的请求执行的。
谁在使用 CDN?
各种规模的企业都使用 CDN 来优化其网络状态和可用性,并为客户提供卓越的用户体验。CDN 在以下行业尤其受欢迎:
- 广告
- 数字出版
- 在线视频和音频
- 游戏 CDN
- 在线教育
- 电子商务
- 公共部门
- 政府
- 银行与金融服务
- 软件即服务