Skip to content

CDN 的原理和特点

CDN 可以加快用户访问网络资源的速度和稳定性,减轻源服务器的访问压力。

实现方式:

通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN 系统能够实时地根据网络流量和各节点的连接和负载状况以及到用户的距离响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,加快访问速度。

CDN 的请求流程

在不使用 CDN 的情况下流程如下:

  1. 用户输入 url 地址

  2. 浏览器向本地 DNS 服务器请求域名解析

  3. 本地 DNS 服务器如果有缓存则直接返回结果,没有的话则通过递归的方式向整个DNS 系统(根 DNS、权威 DNS)请求解析和返回结果

  4. 浏览器得到解析结果对应的IP 地址,向对应 IP 的服务设备请求内容

  5. 服务器响应内容

使用了 CDN 后,DNS 服务器根据用户的 IP 地址,解析成相应节点的缓存服务器 IP 地址,实现就近访问。

也就是将域名解析权分发给 CDN 全局的负载均衡设备,将需要分发的内容注入 CDN。

流程如下:

  1. 用户输入 url 地址

  2. 浏览器向本地 DNS 服务器请求域名解析,DNS 服务器递归请求DNS 系统

  3. DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器

  4. CDN 将全局全局负载均衡设备的 IP 地址返回给用户

  5. 用户向 CDN全局负载均衡设备发起内容 url 的请求

  6. 全局负载均衡设备根据用户 ip 地址和请求 url,选择一台用户所属区域的负载均衡设备,向这台设备发起请求

  7. 区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址

  • 根据用户 IP 地址判断哪台服务器离用户最近

  • 根据用户请求的 URL 携带的内容名称,判断哪一台服务器有用户所需内容

  • 查询各个服务器的负载情况,判断哪一台服务器有服务能力

  1. 全局负载均衡设备把服务器的 IP 地址返回给用户

  2. 用户向缓存服务器发起请求

  3. 缓存服务器响应用户请求,如果缓存服务器上没有用户需要的资源,那么它会向它的上一级缓存服务器请求内容,将内容拉到本地,然后将用户所需内容返回给客户端

CDN 请求的流转简图

客户端 -> DNS -> CDN 全局负载均衡设备 -> CDN 区域负载均衡设备 -> 缓存服务器

客户端 -> 缓存服务器 -> 上级缓存服务器 -> 网站源服务器

CDN 的作用

  1. 加速访问

  2. 负载均衡,解决用户访问量大造成的过载问题

  3. 实现跨运营商、跨地域的全网覆盖

  4. 基于分布式的储存技术,抵挡大部分攻击,加强网站安全性

  5. 异地备援,让网站永不宕机

  6. 节约成本,无需重复购买服务器去进行部署和同步

  7. 由 CDN 服务商提供服务,让公司专注于业务本身

CDN 的应用场景

  1. 静态站点加速

  2. 音视频、大文件加速

  3. 视频直播加速

  4. 移动应用加速(APK 分发)

CDN 更新缓存的方式

  1. 服务端:调用 cdn 服务商的刷新缓存接口

  2. 客户端:资源 url 加上 文件指纹 hash 或时间戳