CDN 工作原理

基本概念

CDN

CDN 即内容分发网络(Content Delivery Network)的简称,是建立在承载网基础上的虚拟分布式网络,能够将源站内容(包括各类动静态资源)智能缓存到全球各节点服务器上。这样不仅方便了用户就近获取内容,提高了资源的访问速度,也分担了源站压力。

加速域名

加速域名指需要使用 CDN 加速的域名。加速域名也是一个域名。加速域名一般配置 CNAME 记录,指向 CDN 网络节点。普通域名一般配置 A 记录,指向提供服务的业务服务器。

CNAME 记录、 A 记录和 NS 记录

DNS ( Domain Name System,域名系统)提供了将域名转换为 IP 地址的服务。为了完成这个转化工作,DNS 的数据库中需要维护相关的数据,这些数据被叫做 RR(Resource Record,资源记录)。资源记录有很多种类型,比如 A、NS、SOA、CNAME 和 PTR 记录。

大家接触最多的就是 A(Address)记录。A 记录是一条从域名到 IP 地址的映射记录。而 CNAME(Canonical Name)记录是一条从域名到域名的映射记录。它在 CDN 技术中有举足轻重的作用,很好地实现了业务域名与 CDN 系统域名的解耦。简单理解,如果一个域名配置了 A 记录,DNS 就会把它解析成 A 记录指定的 IP 地址;如果一个域名配置了 CNAME 记录,DNS 就会把它解析成 CNAME 记录指定的另外一个域名;A 记录和 CNAME 记录是互斥的,不能同时存在。

NS (Name Server)记录是和 DNS 服务器相关的一条记录,它指定该域名应该由哪一台 DNS 服务器进行解析。一般把通过 NS 记录指定的 DNS 服务器叫做该域名的权威 DNS 服务器。

源站

提供原始资源(使用 CDN 加速的资源)的业务服务器,可以指定为域名或 IP 地址。

回源

CDN 节点未缓存请求资源或缓存资源已到期时,回到源站获取资源,返回给客户端。

访问流程

用户 A 的第一次访问流程如图 1 所示:

需要进一步说明的是:

第 1 步访问的是加速域名,而不是源站域名。 第 3 步返回 CNAME 域名。 第 4 步服务商会给此 CNAME 域名指定 NS 解析规则,有指定的 DNS 服务器负责解析 第 5 步返回 CNAME 域名对应的 IP 地址,指向 CDN 边缘层节点。 第 6 步请求的 URL (或者说 Referer )仍为‘js.tt.com/idx.html’。 第 7 步请求中心层节点时,会带上第 6 步的 URL 作为参数。 第 8 步通过查询配置数据得到源站域名,进而向源站发起请求。这里的业务服务器即为 CDN 的源站。简单起见,省略了从 DNS 服务器查询 A 记录的过程。 在整个过程中,URL 的域名会变化,但是 URL 的路径不会变化。 用户 A 第二次访问流程如图 2 所示:

需要进一步说明的是:

由于本地 DNS 客户端拥有了加速域名的解析缓存,就不需要再查询 DNS 服务器了。 由于 CDN 边缘层节点有了对应资源的缓存,就不需要再向上请求资源了。 用户 B 第一次访问流程如图 3 所示:

需要进一步说明的是:

由于用户 A 和用户 B 地域相差比较远,使用不同的边缘层节点,所以边缘层节点没有对应资源的缓存,需要向中心层节点请求资源。 中心层节点拥有该资源的缓存,所以就不需要回源了。

接入流程

为了使用 CDN,必需另外再申请一个加速域名,作为使用 CDN 的入口。 加速域名配置的是 CNAME 记录,值为 CDN 平台提供的 CNAME 域名,该 CNAME 域名指向 CDN 系统节点。 添加加速域名时需要配置源站域名,据此,CDN 平台保存了加速域名与源站域名的映射关系。 CNAME 域名的格式一般是:<加速域名> + <供应商主域名>。

就近访问原理

CDN 系统是如何实现就近访问的呢?

CNAME 域名是 CDN 供应商提供的,CDN 供应商拥有对 CNAME 域名的配置权。CDN 供应商会把 CNAME 域名的 NS 记录设置为自己搭建的 DNS 服务器。这样一来,解析 CNAME 域名的时候就会请求 CDN 供应商搭建的 DNS 服务器。而 CDN 供应商在 DNS 服务器中实现了负载均衡,会返回离用户较近的边缘层节点的 IP 地址。如此便实现了就近访问。

Last updated