1. CDN 概念
CDN(Content Delivery Network,内容分发网络) 是一个由多个分布式服务器(边缘节点)组成的网络系统,用于高效、快速地分发静态和动态内容(如网页、图片、视频、JavaScript、CSS 等)到全球各地的用户。
作用原理:将资源分发到不同物理地点的服务器上,让不同物理地点的用户都能够实现就近资源访问,实现低延迟,高并发。
2. CDN 的作用
- 加速内容传输:让用户从最近的服务器获取数据,减少延迟。
- 降低源服务器负载:减少直接访问源站的请求,提高源站稳定性。
- 提升高并发访问能力:适用于突发流量(如电商大促、热门新闻)。
- 增强安全性:提供 DDoS 防护、WAF(Web 应用防火墙)等安全功能。
3. CDN 的工作流程
- 用户请求资源(如访问一个网站或加载图片)。
- DNS 解析:CDN 的智能 DNS 会返回离用户最近的边缘节点 IP,而非源站 IP。
- 边缘节点响应:
- 如果该节点缓存了请求的内容,直接返回(缓存命中)。
- 如果没有缓存或缓存过期,则回源向源站请求数据,并缓存到边缘节点。
- 用户获取数据:从最近的 CDN 节点快速加载内容。
以阿里云的 CDN 服务为例了解 CDN 加速原理:
下述内容摘至阿里云官方文档。
假设您的加速域名为www.aliyundoc.com
,接入CDN开始加速服务后,当终端用户在北京发起HTTP请求时,处理流程如下图所示。
- 当终端用户向
www.aliyundoc.com
下的指定资源发起请求时,首先向Local DNS(本地DNS)发起请求域名www.aliyundoc.com
对应的IP。 - Local DNS检查缓存中是否有
www.aliyundoc.com
的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向网站授权DNS请求域名www.aliyundoc.com
的解析记录。 - 当网站授权DNS解析
www.aliyundoc.com
后,返回域名的CNAMEwww.aliyundoc.com.example.com
。 - Local DNS向阿里云CDN的DNS调度系统请求域名
www.aliyundoc.com.example.com
的解析记录,阿里云CDN的DNS调度系统将为其分配最佳节点IP地址。 - Local DNS获取阿里云CDN的DNS调度系统返回的最佳节点IP地址。
- Local DNS将最佳节点IP地址返回给用户,用户获取到最佳节点IP地址。
- 用户向最佳节点IP地址发起对该资源的访问请求。
- 如果该最佳节点已缓存该资源,则会将请求的资源直接返回给用户,此时请求结束。
- 如果该最佳节点未缓存该资源或者缓存的资源已经失效,则节点将会向源站发起对该资源的请求。获取源站资源后结合用户自定义配置的缓存策略,将资源缓存到CDN节点并返回给用户,此时请求结束。