AI摘要
CDN(内容分发网络)是一种优化网络性能的解决方案,通过将内容分发到全球各地的服务器,减少用户访问网站或应用程序时的加载时间,提高用户体验。CDN的起源可以追溯到20多年前,当时麻省理工学院的研究人员尝试利用数学算法解决网络拥堵问题,最终创立了Akamai公司。CDN的工作原理包括源站与CDN、调度策略与方式、缓存与缓存调度技术等。CDN的应用场景包括流媒体传输、云存储加速和安全加固等。CDN技术的发展将继续推动网络性能的提升,为用户和企业带来更优质的网络体验和服务。

前言-CDN的诞生

当谈论互联网速度和性能时,CDN是一个不可或缺的元素。在当今数字化时代,人们对网站和应用程序的访问速度要求越来越高,而CDN作为一种优化网络性能的解决方案,扮演着至关重要的角色。通过将内容分发到全球各地的服务器,CDN可以显著减少用户访问网站或应用程序时的加载时间,提高用户体验,降低网络拥堵,减少延迟,从而实现快速、高效的内容交付。

CDN的起源可以追溯到20多年前,当时随着骨干网压力的增加和长传需求的增长,骨干网面临着日益加剧的压力和长传效果的恶化。1995年,麻省理工学院的应用数学教授Tom Leighton与研究生Danny Lewin以及其他顶尖研究人员合作,尝试利用数学问题解决网络拥堵难题。通过数学算法处理内容的动态路由安排,他们成功解决了困扰互联网用户的问题。随后,史隆管理学院的MBA学生Jonathan Seelig加入了Leighton团队,开始实施他们的商业计划。最终,于1998年8月20日,他们正式创立了公司,取名为Akamai。在接下来的20年里,CDN行业经历了巨大的变革和持续发展,涌现出许多云CDN厂商。阿里云CDN起源于淘宝CDN,从2008年开始发展,直至2014年正式成为阿里云CDN。它不仅为阿里巴巴集团旗下所有子公司提供服务,还通过云计算的方式输出自身的资源和技术。这种发展模式使得阿里云CDN在行业中扮演着重要角色,为用户提供高效的内容分发服务,并推动了云计算技术在CDN领域的应用和发展。

本文将深入浅出探讨CDN的概念、原理以及其在现代互联网中的重要性。了解CDN如何工作,以及它如何帮助网站和应用程序提供商加速其内容传输,提高可靠性和安全性。

一、源站与CDN

1.源站直连的交互

在了解CDN前,先了解一下应用CDN之前客户端与源站服务器的交互过程
客户端通过DNS拿到源站IP,访问服务器上的资源时一般分为四个步骤:
步骤一: 客户端和服务器端建立连接
步骤二:客户端发送请求数据到服务器端(HTTP 协议)
步骤三:服务器端接收到请求后,进行处理,然后将 处理结果响应客户端(HTTP 协议)
步骤四:关闭客户端和服务器端的连接(HTTP1.1 后不会立即关闭)
2024-05-15T02:56:02.png
源站服务器就是部署网站所在的服务器,在用户访问指定资源时提供初始内容并握手交互数据,用户距离服务器的距离越远则转发次数越多,浏览器加载会越耗时。
2024-05-15T02:56:31.png
当多个用户访问源站时就会占用大量的资源处理发送与响应数据,导致源站服务器产生过多负载压力。
2024-05-15T02:56:42.png
如同12306在应用CDN技术前逢年过节抢票高峰期大量用户访问源站,导致有时会出现部分服务器宕机,影响用户的使用体验。如今应用了CDN技术的12306通过多个缓存服务器分担压力,大大提升了用户体验。借助公有云的混合CDN使得资源灵活调配,减少了服务器带宽等资源上的开支,效果立竿见影。
图源:知乎@九章算法

2.什么是CDN?

那么有没有办法解决这些缺陷呢?有,它就是CDN技术。
以下为套了CDN后用户浏览器与源站、CDN缓存节点交互数据的情形
2024-05-15T02:57:37.png
CDN通过将部分资源内容缓存在多个缓存服务器上,挑选离用户最近的缓存服务器进行数据传输,减少了数据传输距离和网络拥堵,从而加快了内容加载速度,提高用户体验。而这些需要缓存的资源一般都是静态资源(html、css、js等)、多媒体(图片、音乐、视频等)资源。除去缓存资源,其他数据交由源站服务器来处理。
通过将这些内容复制到多个服务器上,CDN提高了内容的可用性和稳定性。即使某个服务器发生故障,用户仍然可以从其他服务器上获取内容。
不仅如此,CDN可以减少原始服务器的负载,降低服务器带宽使用成本。由于内容被缓存在CDN服务器上,减少了对源站服务器的直接请求,节省了带宽费用、减轻了部分骨干网的压力。

二、CDN的技术实现

1.调度策略与方式

1.1调度策略

在用户请求到达时,CDN如何选择最合适的服务器来响应请求。这些策略将会优化内容交付的速度、性能和效率

1.1.1 最近节点调度
这种策略会将用户请求路由到距离用户最近的CDN节点。通过测量用户的地理位置和网络延迟,CDN可以选择最近的服务器来响应请求,从而减少数据传输时间和延迟,提高用户体验。
2024-05-15T03:00:04.png

1.1.2 负载均衡调度
负载均衡调度策略旨在平衡CDN服务器之间的负载,避免单一服务器过载。通过监控服务器的负载情况,CDN可以将请求分发到负载较低的服务器上,确保整体性能和可靠性。
2024-05-15T03:00:16.png

1.1.3. 源站响应时间调度
该策略基于各个CDN节点与原始服务器的响应时间来进行调度。CDN会选择响应时间最短的服务器来处理请求,以减少数据传输时间和提高内容交付速度。

1.1.4 带宽利用率调度
这种策略会根据各个CDN节点的带宽利用率来进行调度。CDN会将请求路由到带宽利用率较低的服务器上,以避免网络拥堵和提高整体带宽利用效率。

1.1.5 动态调度策略
动态调度策略根据实时的网络状况和服务器负载情况来进行调度决策。CDN可以根据不同情况动态调整调度策略,以确保最佳的内容交付性能。

1.1.6 内容类型调度策略
针对不同类型的内容(如图片、视频、文本等),CDN可以采用不同的调度策略。例如,对于大型视频文件,CDN可能会选择带宽较大的节点来提供更快的传输速度。

通过合理选择和组合这些调度策略,CDN可以实现更高效的内容交付,提高用户体验,降低延迟,减少带宽成本,并确保网络的稳定性和可靠性。

1.2调度方式

CDN使用多种方式来进行调度,以确保最佳的内容交付性能和用户体验。以下是一些常见的方式:

1.2.1 DNS负载均衡
DNS负载均衡是一种常见的CDN调度方式,通过DNS解析将用户请求路由到最合适的CDN节点。CDN提供商会在DNS解析阶段根据用户的地理位置、网络条件和其他因素,将用户请求定向到最佳的服务器上。每请求一次可能都会让服务器查找合适的IP,属于是压力给到了DNS上,我觉得这种方式还是比较考验DNS集群的性能。

1.2.2 HTTP请求重定向(302)
CDN可以通过HTTP请求重定向也就是302来实现调度主要基于客户端 IP 和 302 调度集群。当用户请求到达时,CDN节点可以根据用户的地理位置和其他因素,向用户返回重定向响应,指示用户访问最适合的服务器。

1.2.3 负载均衡算法
CDN使用各种负载均衡算法来决定将用户请求路由到哪个服务器。常见的负载均衡算法包括轮询、加权轮询、最小连接数、最小响应时间等,以确保服务器负载均衡和性能优化。

1.2.4 Anycast
Anycast是一种网络寻址和路由技术,允许多个服务器拥有相同的IP地址。当用户请求到达时,网络会将请求路由到距离最近的服务器,从而提高内容交付速度和性能。像我们熟知的AWS CloudFront、CloudFlare等运营商都在使用这样的路由层面调度。

1.2.5 实时监控与动态调整
CDN通过实时监控服务器负载、网络状况和用户请求情况,动态调整调度策略。这种实时调整可以确保始终选择最佳的服务器来响应用户请求,提高内容交付效率。

1.2.6 内容感知调度
CDN可以根据不同类型的内容(如静态内容、动态内容、视频等)采用不同的调度策略。例如,对于大型视频文件,CDN可能会选择带宽较大的节点来提供更快的传输速度。

综合利用这些调度方式,CDN可以实现高效的内容交付,提高用户体验,降低延迟,减少带宽成本,并确保网络的稳定性和可靠性。

2.缓存与缓存调度技术

2.1缓存技术

2.1.1边缘缓存
边缘缓存是CDN最常用的缓存方式之一。CDN在全球各地部署服务器节点,这些节点被称为边缘服务器。当用户请求内容时,CDN会将内容缓存到最接近用户的边缘服务器上,以减少数据传输距离和提高内容交付速度。

2.1.2内容预抓取
CDN可以通过内容预取的方式提前将一些内容缓存到边缘服务器上。这样,当用户请求这些内容时,CDN可以直接从缓存中响应,而不必再向原始服务器请求,从而加快内容交付速度。

2.2缓存的调度技术
CDN通过缓存控制策略来管理缓存内容的过期时间、缓存规则等。通过合理设置缓存控制策略可以提高缓存命中率,减少对源站服务器的请求。

除了静态内容,也可以缓存动态内容,如动态网页、API响应等。CDN可以根据内容的更新频率和用户请求情况,动态地缓存和更新这些内容。
在优化方面则主要是对内容进行压缩,减小文件大小,从而减少传输时间和带宽消耗。压缩后的内容被缓存到边缘服务器上,用户请求时可以更快地传输和加载。

通过上述的这些缓存方式,更是确保内容的稳定性和可靠性。

三、CDN的多种形式

1.传统CDN

传统的CDN基本包含上述的所有特性,区别在于公有云CDN和私有云CDN。像腾讯云、阿里云、CloudFlare这种都属于公有云CDN。一般来说部署在组织自己的服务器和网络中,用于加速内部应用程序或网站的内容交付的,就是私有云CDN。

2.SCDN

SCDN与一般的CDN架构都差不多,关键点在于CDN的节点上都部署有防火墙,兼顾加速的同时提供安全防护。网站服务器的痛点主要就来自于流量攻击和入侵攻击,SCDN的出现带来了一个很好的解决方案。比如需要抵挡恶意流量(DDOS、CC等)使用硬件防火墙过滤或者清洗恶意流量,提高源站与缓存节点的安全性。

除了在缓存节点部署硬防外,往往还会部署Web防火墙集群,有效防护SQL注入、提交木马等等的网站层面的攻击。常见的像知道创宇云防、奇安信安域之类的都属于SCDN的范畴。

3.PCDN

主要利用P2P对等网络技术,让用户共享带宽和资源来加速内容交付。在PCDN中,用户的设备(如电脑手机,在往下甚至是一台机顶盒一台路由器等等)都可以缓存服务器用来相互共享数据,比如说A用户可以从B、C等用户设备获取数据片段然后拼接成完整的文件,不用像传统CDN技术那样完全依赖中心服务器。比如啊我看一集电视剧一部电影,我的浏览器或是播放器首先拿到CDN调度服务器给的m3u8表,然后用这个m3u8表把不同片段的ts文件下载地址给下载了再拼接转码就得到mp4文件,处理完后的视频文件通过播放器让我观看。这样不仅减轻了CDN缓存服务器的负担,也提高内容传输效率,更是减少了云厂商的成本投入。

4.融合CDN

融合CDN主要混合公有云或是私有云CDN厂商的优质节点,通过智能调度策略为用户选择最合适的CDN缓存节点。比如融合CDN国内用户访问的时候就会优先通过国内的像阿里云腾讯云这样的而且是距离最近的CDN缓存节点来加速。国外用户访问融合CDN就会自动切换成CloudFlare、AWS这样的公有云厂商离海外用户最近的缓存节点,可以说是打破了单个CDN厂商的节点资源以及调度能力有限的困境,突破了地域时间以及不同运营商的限制。像京东云与Cloudflare合作的融合CDN,不论是给国内还是海外用户都提供了很好的加速体验。

5.全站加速DCDN / ECDN

全站加速服务可能在不同云厂商都有不同的叫法,它是一项基于CDN加速技术的云技术升级,智能地区分静态和动态内容以提升浏览体验。静态内容直接利用CDN进行加速;而对动态内容,则通过高效的回源拉取,包括路由决策优化和协议优化等方法。全站加速不仅提供基本的CDN静态资源加速功能,还进一步提供动态加速、TCP和UDP四层加速、以及Websocket七层加速等功能。这使得安全性和边缘计算等能力能够快速整合到全球节点的全站加速中,可靠性要比传统CDN更高。其运作原理如下图所示:
图源:腾讯云社区

四、CDN的场景应用

1.流媒体传输

常用的比较主流的视频平台一般都用上了CDN视频直播和视频点播服务,通过将视频内容缓存在分布式的边缘节点上,使用户可以从距离更近的服务器获取视频数据,加速视频的加载速度,减少缓冲时间,提高观看体验。大型直播的环境下CDN也可以支持高并发的视频流传输,确保观众可以流畅观看直播内容。

2.云存储加速

像现在的网盘很多都是分布式的下载节点了,要不然源站服务器得吃不少性能,这个除了用在网盘上也可用于企业分发软件更新和补丁,加快软件下载速度,减少服务器负载,提高软件发布的效率。

3.安全加固

CDN通常提供DDoS防护服务,可以帮助抵御大规模的分布式拒绝服务攻击,也可以检测和阻止恶意流量,保护网站和应用不受攻击。
内容安全方面上CDN也可以提供内容过滤功能,以防止恶意内容的传播,保护内容的完整性和安全性。

结语

在互联网高速发展的今天,CDN技术的进步和应用将继续推动网络性能的提升,满足用户对高速、高效内容交付的需求。随着技术的不断创新和发展,我们相信CDN将继续发挥重要作用,为构建更加智能、高效的互联网世界贡献力量。期待CDN技术在未来的发展中继续发挥重要作用,为用户和企业带来更优质的网络体验和服务。

感谢阅读,喜欢的话可以的话能帮忙点个赞吗

参考文献
12306是不是能抗住上亿级的高并发,背后它如何承受的? - 知乎 (zhihu.com)
CDN图解(秒懂 + 史上最全) - 疯狂创客圈 - 博客园 (cnblogs.com)
全站加速网络 产品概述-产品简介-文档中心-腾讯云 (tencent.com)
什么是cdn_CDN的工作原理_使用CDN服务器的好处 | Cloudflare (cloudflare-cn.com)

尊重原创,允许规范转载。如需转载请标明来自作者:@JiuXia2025 以及本文的原文链接

最后修改:2024 年 05 月 15 日
喜欢就支持一下吧