定义

内容分发网络(Content Delivery Network),是在现有 Internet 中增加一层新的网络架构,由遍布全国的高性能加速节点构成。

作用

这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点直接快速响应,有效降低用户访问延迟,提升可用性。
CDN 有效的解决了目前互联网业务中网络层面的以下问题:

  1. 用户与业务服务器地域间物理距离较远,需要进行多次网络转发,传输延时较高且不稳定;

  2. 用户使用运营商与业务服务器所在运营商不同,请求需要运营商之间进行互联转发;

  3. 业务服务器网络带宽、处理能力有限,当接收到海量用户请求时,会导致响应速度降低、可用性降低。

实例

假设您的业务源站域名为 www.test.com ,当域名接入 CDN 开始使用加速服务后,您的用户发起HTTP请求,实际的处理流程如下图所示:
CDN - 图1
详细说明如下:

  1. 用户向 www.test.com 下的某图片资源,如 1.jpg 发起请求,先要向 Local DNS 发起域名解析请求;

  2. 当 Local DNS 解析 www.test.com 时,会发现已经配置了 CNAME www.test.com.cdn.dnsv1.com,解析请求会发送至CDN运营商的CDN调度系统,调度系统会为请求分配最佳节点IP;

  3. Local DNS 获取CDN运营商返回的解析 IP;

  4. 用户获取解析 IP;

  5. 用户向获取的 IP 发起对资源 1.jpg 的访问请求;

  6. 若该 IP 对应的节点缓存有 1.jpg,则会将数据直接返回给用户(10),此时请求结束。若该节点未缓存 1.jpg,则节点会向业务源站发起对 1.jpg 的请求(6、7、8),获取资源后,结合用户自定义配置的缓存策略(可参考用户指南中缓存时间设置章节内容),将资源存储(9),并返回给用户(10),此时请求结束。

最后

我们可以看到,CDN是其实是一个源站的分布式缓存系统。因为我们的源站服务器固定的物理位置是不会变的,那么用户从其他地区访问我们的服务器,会涉及到网络的多次转发、运营商之间的互联转发等,这样会造成网络延时高、丢包、网页打开缓慢等情况。而CDN运营商在全国各地拥有缓存服务器,直接将我们源站服务器里的静态内容镜像到缓存服务器上(静态CDN加速),当我们的域名解析托付给CDN运营商并开启CDN后,用户访问我们的网站,通过DNS解析,将源站IP解析到距离其最近的CDN缓存服务器,降低了访问的延时,大大提高了访问的速度。因此,对于建站来说,CDN是不可或缺的,你的源站即使是1M的小水管,接入了CDN,也可以达到主流大型网站的访问速度。