什么是CDN?(附多吉云CDN教程)

一、前言

网络优化一直是开发者需要解决的问题。CDN 在近年来十分流行,并且在各大项目中落地,对项目的优化效果十分明显,因此受到广大网站建设者的青睐。什么是 CDN?CDN 解决了什么问题?CDN 又是如何解决这些问题的?今天这篇文章将带大家来一一讲透。

二、什么是CDN

CDN(Content Delivery Network)是 内容分发网络,主要用于 加快网页加载速度

它的原理是通过在全球各地的多个服务器节点来缓存分发内容。当用户请求某个网站或资源时,CDN 会请求重定向到离用户最近的服务节点,从而加快内容的传输速度。在 CDN 技术中,这些节点也有专业名词,叫“边缘节点”,缓存了源站内容的代理服务器。

CDN 有如下优势:

  • 加速内容传递
  • 减轻资源服务器负载
  • 全球覆盖
  • 安全性增强

CDN 的使用场景一般有下面几种:

  • 静态资源的加速
  • 媒体流的加速
  • 网站性能优化
  • 安全防护

三、CDN解决了什么问题

先提个问题:互联网中用户和服务器之间的数据是如何传输的?

从运营商的角度来说,传输主要经历了三个部分,本地网络、骨干网和服务器。

image-20240813175728598

从上图中可以看出,访问速度取决于三个部分:

  1. 服务器带宽:即服务器的负载能力,例如在之前的教程中,我们购买的云服务器为 4M 带宽。
  2. 运营商节点交换:这部分链路复杂,涉及到城域网、不同运营商的骨干网等。
  3. 用户带宽:用户接入互联网部分,如家庭网络、小区网络等,这部分带宽一般比较小。

CDN 优化的就是中间这部分,即运营商节点间的交换。不同运营商之间的通信并不是直接通信的,它们之间因为网络差异,需要在数据中心进行数据交换。如果此时数据中心离运营商节点地理位置比较远,就需要耗费更多的时间传输数据。

image-20240902165441456

访问质量一般遵循以下三点:

  • 同运营商访问质量优于跨运营商访问质量;
  • 同省同运营商访问质量优于跨省同运营商访问质量;
  • 跨省同运营商访问质量优于同省跨运营商访问质量。

此外 CDN 还可以缓解源服务器的压力。我们都知道,如果大量请求落在服务器,必然会造成服务器压力过大,出现网络拥塞的问题。如果此时我们把一些静态资源放在 CDN 节点上,可以减轻服务器压力,从而提高访问质量。

总结一下,CDN 可以缓解运营商数据交换的压力,同时也能够减少对源站资源的请求(由 CDN 节点分担了流量),从而提高用户的访问质量

四、CDN如何提高访问质量

CDN 可以理解为一层缓存,下面我们来看看 CDN 是如何工作的。

对于一次用户的请求,传统的网络调度过程如下图所示(以 www.yngcy.com 为例)。

image-20240903103941858

DNS 服务器会从根域服务器开始查找顶级域名,然后依次迭代查找二级域名、三级域名,最终返回域名对应的 IP 地址。

前面提到,CDN 其实本质就是缓存。在传统模式下,拿到 IP 地址后,我们直接向源站请求资源。而对于有 CDN 参与的模式中,由 CDN 节点处理请求,返回对应的资源。

比如为 yngcy.com多吉云 进行域名加速,配置完成生成加速域名 yngcy.com.s2-web.dogedns.com,这个域名也叫 CNAME。

CNAME(Canonical Name Record,规范名称记录)是一种 DNS(域名系统)记录类型,用于将一个域名别名指向另一个规范域名。CNAME 记录可以帮助管理域名的重定向和解决复杂的域名结构。

A记录(Address Record)是 DNS(域名系统)中的一种记录类型,用于将域名映射到 IPv4 地址。它是 DNS 解析过程中最常用的记录之一,帮助用户通过域名访问互联网资源。

当我们再请求 yngcy.com 时,因为域名做了 CDN 加速,在根域服务器得到的是加速域名。得到加速域名后,向专用 DNS 服务器请求 IP 地址。

image-20240903105913463

在上图中,访问加速域名请求了专用 DNS 调度服务器,再由 DNS 调度服务器内部进行调度策略,返回 CDN 节点的 IP 地址。

五、国内CDN教程

下面我将以我的主页 yngcy.com 为例。这里我将主页先部署在了 vercel 上,并且绑定了域名。

我使用 多吉云 对其进行域名加速,因为其有免费的额度,并且能设置流量策略。配置如下图所示。

image-20240903185651512

在上面的配置中,回源域名不是 xxx.app 是因为这个域名被墙了,国内无法访问。解决的办法也很简单,你只需要和图中的配置一致即可。回源协议选择 HTTPS 因为域名绑定了 SSL 证书,也建议使用 HTTPS。回源 Host 是为了告诉 vercel 回源的域名是什么,也就是我们加速的域名。其他配置使用默认配置即可。

配置完成后,记得在证书管理中上传 SSL 证书。

六、国外CDN教程

国外 CDN 一般用 cloudflare,不仅能够加速,还能起到防护作用。详细内容可以看 这篇教程(开坑中……)。

七、写在最后

CDN 作为一种边缘计算技术,在网站建设中被广泛使用。CDN 可以理解为一层缓存,因此从数据一致性的角度考虑,CDN 非常适合给 静态资源 加速。本文除了介绍 CDN 的相关知识外,还讲述了国内 CDN 以及国外 CDN 的实战教程,希望能够帮助你更好地理解 CDN 这项技术,同时为提高网站质量助力!