摘要
假设你身在北京,想要访问一家伦敦商店的网站,这个网站托管在英国的服务器上,你的请求需要漂洋过海穿过 中国大陆、南海、印度洋、红海、黑海,直到大西洋东岸 传送到这个服务器,你在屏幕前等了半天,家里的网速也足够快,可发现网站内容还是没有加载出来:为了解决这个网络时延的问题,CDN 便出现了
#1 什么是CDN?
内容分发网络(CDN)是一个互连服务器网络,可加快数据密集型应用程序的网页加载速度。CDN 可以表示内容分发网络或内容分配网络。当用户访问某个网站时,来自该网站服务器的数据必须通过互联网传输到用户的计算机。如果用户距离该服务器较远,则加载大文件(例如视频或网站图像)将需要很长时间。相反,如果网站内容存储在距离用户较近的 CDN 服务器上,就可以更快到达他们的计算机。
原理示意图
通俗讲,可以把 CDN 想成是一部 ATM 机。有了分散在各地的ATM机,我们不用再去银行排长长的队伍,而是可以在许多便捷的地点找到 ATM机快速地取到现金。在互联网上传送丰富的 Web 内容(如图形和视频)时,往往会造成网络拥塞 – 就像我们现实世界里的交通堵塞一样,而从集中在某个地点的服务器将内容交付给每一位用户需要花费的时间太过漫长,CDN 服务应运而生,其初衷就是解决这样的问题。
将CDN看成ATM机
回到伦敦网站的那个例子,CDN会将这个伦敦网站内容的缓存版本存放在世界各地的不同地理位置的服务器中,再由离你最近的服务器将这些内容交付给你。通过这种交付方式,CDN能带给你响应更快、性能更高的 Web 访问体验。
CDN 技术的发展史&解决的问题
内容分发网络(CDN)技术兴起于 1990 年代后期,侧重于加快通过互联网分发内容的速度:
第一代 CDN 服务专注于智能网络流量管理和用于复制的数据中心的联网原理。
第二代 CDN 的出现是为了应对音频和视频流媒体服务(尤其是视频点播和新闻点播)的兴起。该项技术还不断发展,以解决在移动设备上进行内容交付的新挑战。各公司使用云计算技术和对等联网来加速内容交付。
第三代 CDN 仍在不断发展。由于大多数 Web 服务集中在云中,因此现在的重点是边缘计算,即使用智能通信的智能设备管理带宽消耗。自治和自我管理的边缘网络可能是 CDN 技术的发展方向。
#2 CDN的工作原理
内容分发网络(CDN)通过在多个地理位置建立一个入网点(PoP)或一组 CDN 边缘服务器来工作。这个分布在不同地理位置的网络基于缓存、动态加速和边缘逻辑计算的原则工作。
01 缓存
缓存是存储相同数据的多个副本以加快数据访问的过程。在计算中,缓存的原理适用于所有类型的内存和存储管理。在 CDN 技术中,该术语是指将静态网站内容存储在网络中多个服务器上的过程。CDN 中的缓存的工作原理如下:
1. 来自偏远地理位置的网站访客首次从你的网站请求静态 Web 内容。
2. 请求到达你的 Web 应用程序服务器或原始服务器。原始服务器将响应发送给远程访客。同时,它还将响应的副本发送到与该访客地理上最近的 CDN POP。
3. CDN POP 服务器将副本存储为缓存文件。
4. 下次该访客或该位置的任何其他访客发出相同的请求时,将由缓存服务器而不是原始服务器发送响应。
02 动态加速
动态加速是指通过在 Web 应用程序和客户端之间设置中间 CDN 服务器,从而加快对动态 Web 内容请求的服务器响应。缓存不适用于动态 Web 内容,因为内容因用户请求而异。CDN 服务器必须针对每个动态请求重新连接原始服务器,但它们通过优化自己与原始服务器之间的连接加速了该过程。
如果客户端通过互联网直接向 Web 服务器发送动态请求,则该请求可能会由于网络延迟而丢失或延迟。此外,可能还需要花费时间打开和关闭连接以进行安全验证。另一方面,如果附近的 CDN 服务器将请求转发到原始服务器,它们就已经建立了一个持续的、受信任的连接。例如,以下功能可以进一步优化它们之间的连接:
– 智能路由算法(典型:Cloudflare)
– 地理位置靠近原始服务器(其他经典CDN)
– 能够处理客户端请求,缩减其大小
03 边缘逻辑计算
你可以对 CDN 边缘服务器进行编程,以简化客户端和服务器之间通信的逻辑计算。例如,此服务器可以执行以下操作:
– 检查用户请求并修改缓存行为。
– 验证和处理不正确的用户请求。
– 在响应之前修改或优化内容。
Web 服务器和网络边缘之间的应用程序逻辑分布有助于开发人员减轻原始服务器的计算需求并提高网站性能。
#3 CDN 可以分发哪些互联网内容?
静态内容
静态内容是不会因用户而异的网站数据。网站标题图像、徽标和字体样式对于所有用户都保持不变,并且企业不会经常更改它们。静态数据无需修改、处理或生成,非常适合存储在 CDN 上。
动态内容
诸如社交媒体新闻推送、天气报告、登录状态和聊天消息等动态内容因网站用户而异。这些数据会根据用户的位置、登录时间或用户首选项而变化,并且网站必须为每个用户和每次用户交互生成数据。
#4 CDN 有哪些优势?
内容分发网络(CDN)具有众多优势,可以提高网站性能并支持核心网络基础设施。例如,CDN 可以达到这些效果:
01 加快页面加载速度
如果你的页面加载速度太慢,网站流量可能会减少。CDN 可以通过加快页面加载速度降低跳出率,延长用户在你网站上停留的时间。
用户在网站的停留时间
02 降低带宽成本
带宽成本是一笔巨大的开支,因为每个传入的网站请求都会消耗网络带宽。通过缓存和其他优化,CDN 可以减少原始服务器必须提供的数据量,从而降低网站所有者的托管成本。
保证服务不中断
03 提高内容可用性
同一时间的访客过多或网络硬件故障可能会导致网站崩溃。CDN 服务可以处理更多 Web 流量并降低 Web 服务器的负载。此外,如果一台或多台 CDN 服务器离线,其他运营服务器可以替换它们,以确保服务不中断。
04 提高网站安全性
CDN可以降低DDoS对网站攻击的影响。分布式拒绝服务(DDoS)攻击试图通过向网站发送大量虚假流量来关闭应用程序,而CDN 可以通过在多个中间服务器之间分配负载来处理此类流量峰值,从而降低对原始服务器的影响。
分配负载降低攻击影响
优势小结
CDN最大的优势在于,对于来自世界各地的用户,它可以就近分配CDN节点获取数据,并且多次重复获取同一个文件数据的时候,有缓存加速的作用。它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应。通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。