目录
- 什么是CDN ?
- CDN有什么优势 ?
- CDN工作原理是什么 ?
- CDN如何工作 ?
- CDN边缘服务器
什么是 CDN ?
CDN (Content Delivery Network,内容分发网络) 是一个分布在不同地理位置的服务器群,其目的是更有效地向用户分发互联网内容。通过缓存内容(如网页、图片、视频等)在多个服务器上,将访问者的请求路由至最近的服务器。内容分发网络(CDN)的主要目的是减少延迟,或减少由网络设计造成的通信延迟。
CDN有什么优势 ?
内容分发网络(CDN)具有众多优势,但对于大多数用户而言,主要好处可以分为以下四个不同的部分:
- 加快页面加载速度
通过将内容分发到访问者附近的 CDN 服务器(以及其他优化措施),访问者体验到更快的页面加载时间。由于访问者更倾向于离开加载缓慢的网站,CDN 可以降低跳出率并增加人们在该网站上停留的时间。换句话说,网站速度越快,用户停留的时间越长。
- 降低带宽成本
网站托管的带宽消耗成本是网站的主要费用。通过缓存和其他优化,CDN 能够减少源服务器必须提供的数据量,从而降低网站所有者的托管成本。
- 提高内容可用性
大流量或硬件故障可能会扰乱正常的网站功能。由于 CDN 具有分布式特性,因此与许多源服务器相比,CDN 可以处理更多流量并更好地承受硬件故障。
- 提高网站安全性
CDN通常包括各种安全防护措施,如DDoS攻击防御、DNS劫持和内容劫持保护等,帮助防止恶意攻击,确保内容的安全分发。
CDN工作原理是什么 ?
内容分发网络(CDN)通过在多个地理位置建立一个入网点(PoP)或一组 CDN 边缘服务器来工作。这个分布在不同地理位置的网络基于缓存、动态加速和边缘逻辑计算的原则工作。
- 缓存
缓存是存储相同数据的多个副本以加快数据访问的过程。在 CDN 技术中,该术语是指将静态网站内容存储在网络中多个服务器上的过程。 CDN 中的缓存的工作原理如下:
-
来自偏远地理位置的网站访客首次从您的网站请求静态 Web 内容;
-
请求到达您的 Web 应用程序服务器或原始服务器。原始服务器将响应发送给远程访客。同时,它还将响应的副本发送到与该访客地理上最近的 CDN POP。
-
CDN POP 服务器将副本存储为缓存文件。
-
下次该访客或该位置的任何其他访客发出相同的请求时,将由缓存服务器而不是原始服务器发送响应。
- 动态加速
动态加速是指通过在 Web 应用程序和客户端之间设置中间 CDN 服务器,从而加快对动态 Web 内容请求的服务器响应。缓存不适用于动态 Web 内容,因为内容因用户请求而异。CDN 服务器必须针对每个动态请求重新连接原始服务器,但它们通过优化自己与原始服务器之间的连接加速了该过程。如果客户端通过互联网直接向 Web 服务器发送动态请求,则该请求可能会由于网络延迟而丢失或延迟。此外,可能还需要花费时间打开和关闭连接以进行安全验证。但是,如果附近的 CDN 服务器将请求转发到原始服务器,它们就已经建立了一个持续的、受信任的连接。例如,以下功能可以进一步优化它们之间的连接:
-
智能路由算法
-
传输优化
- 边缘逻辑计算
您可以对 CDN 边缘服务器进行编程,以执行简化客户端和服务器之间通信的逻辑计算。例如,此服务器可以执行以下操作:
-
检查用户请求并修改缓存行为;
-
验证和处理不正确的用户请求;
-
在响应之前修改或优化内容;
CDN如何工作 ?
- 部署和缓存
CDN服务提供商会在全球不同的地理位置建立并维护一系列的数据中心。这些数据中心内部部署有称为缓存服务器的设备,负责存储源站内容的副本。当网站所有者使用CDN服务时,CDN会将网站的内容(如HTML页面、图片、视频、脚本等)复制并存储到这些缓存服务器上。
- DNS解析
当用户尝试访问使用CDN服务的网站时,他们的浏览器首先会发起一个DNS请求。DNS请求被解析到CDN供应商的DNS服务器,该服务器负责指导请求到最合适的缓存服务器。
- 最佳节点选择
CDN的DNS服务器会运用智能算法来选择最佳的缓存服务器节点,以便为用户提供内容。节点选择是基于一系列因素做出的,包括用户的地理位置、服务器的当前负载、网络拥塞情况、服务器的健康状况以及可能的成本考虑。
- 内容传输
一旦确定了最佳节点,用户的请求就会被重定向到该节点。如果所请求的内容在缓存服务器上是最新的,CDN节点会直接将内容返回给用户。如果内容已经过期或不在缓存中,CDN节点将会从源服务器或另一个较近的缓存节点获取最新内容,再传递给用户。
- 内容更新和维护
为了确保缓存的内容是最新的,CDN会定期检查源站的内容更新。一旦发现源站内容有变化,CDN会更新缓存服务器上的内容副本。此外,CDN还会不断监控全球网络状况和使用模式,以调整缓存策略和优化数据路由。
例如,加速域名为www.aliyun.com,接入CDN开始加速服务后,当终端用户在北京发起HTTP请求时,处理流程如下图所示:
-
当终端用户向www.aliyun.com下的指定资源发起请求时,首先向本地DNS发起请求域名www.aliyun.com对应的IP;
-
本地DNS检查缓存中是否有www.aliyun.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS请求域名www.aliyun.com的解析记录;
-
当网站授权DNS解析www.aliyun.com后,返回域名的CNAMEwww.aliyun.com.example.com;
-
本地DNS向阿里云CDN的DNS调度系统请求域名www.aliyun.com.example.com的解析记录,阿里云CDN的DNS调度系统将为其分配最佳节点IP地址;
-
本地DNS获取阿里云CDN的DNS调度系统返回的最佳节点IP地址;
-
本地DNS将最佳节点IP地址返回给用户,用户获取到最佳节点IP地址;
-
用户向最佳节点IP地址发起对该资源的访问请求;
-
如果该最佳节点已缓存该资源,则会将请求的资源直接返回给用户,此时请求结束。如果该最佳节点未缓存该资源或者缓存的资源已经失效,则节点将会向源站发起对该资源的请求。获取源站资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户,此时请求结束;
CDN 边缘服务器
边缘服务器是一种边缘设备,可提供进入网络的入口点。其他边缘设备包括路由器和路由交换机。边缘设备通常放置在互联网交换点以允许不同的网络连接并共享传输。边缘服务器通常充当独立网络之间的连接。CDN边缘服务器的主要目的是将内容存储在尽可能靠近发出请求的客户端计算机的位置,从而减少延迟并缩短页面加载时间。
在有多个设备连接的典型家庭或办公室网络中,移动电话或计算机等的设备通过星型网络模型与网络进行连接。所有设备都存在于同一局域网 (LAN) 中,并且每个设备都连接到中央路由器,它们正是通过中央路由器相互连接的。要将第二个网络连接到第一个网络,必须在某个点在两个网络之间建立连接。边缘设备是网络能够通过其相互连接的设备。
现在,如果网络 A 内的计算机需要连接到网络 B 内的计算机,则该连接必须从网络 A 跨网络边缘传递到第二个网络。通过 Internet 建立连接时,网络共享传输的能力受到网络之间的边缘设备可用性的限制。当连接必须穿越互联网时,就必须在网络 A 和网络 B 之间采取更多的中间步骤。为简单起见,我们假设每个网络都是一个圆圈,圆圈相互接触的地方是网络边缘。为了使连接跨互联网移动,它通常会接触许多网络并跨许多网络边缘节点移动。一般来说,连接穿越的距离越远,必须遍历的网络数量就越大。在达到目标之前,连接可能会遍历不同的互联网服务提供商和互联网骨干基础设施硬件。
CDN提供商会将服务器放置在许多位置,但是最重要的是不同网络之间的边缘连接点。这些边缘服务器将与多个的网络连接,允许流量在网络之间快速有效地传递。如果没有 CDN,传输可能会在来源和目的地之间历经较慢或较复杂的路线。在最坏的情况下,流量将”延展”出较大距离;当连接到街对面的另一台设备时,连接可能会在全国移动后再返回。通过将边缘服务器放置在关键位置,CDN 可以将内容快速交付给不同网络内的用户。
参考
- [1] 什么是内容分发网络(CDN)?
- [2] 什么是 CDN 边缘服务器?