【7.28】cdn 访问过程

230 阅读2分钟

什么是 cdn

cdn 是建立在网络之上的,通过分布在不同区域的边缘节点服务器群,组成的分布式网络。通过智能调度将用户请求打到最近的服务器节点,提高资源的访问速度,分担源站的压力

用户第一次访问的过程

1. js.abc.com -> js.acbc.com.ali.com

graph LR
客户端 --> DNS服务器
DNS服务器 --> 客户端

客户端访问网站的静态资源,比如 js.abc.com 这个是在域名供应商那里配置的,业务静态资源使用的加速域名,通过在 cdn 服务商配置这个域名,cdn 服务商会给到一个加速域名,比如 js.acbc.com.ali.com。另外在 cdn 服务商那里,还需要配置一个源站域名,比如 abc.com,在静态资源查找不到回源时,可以在这里去找。

另外要到域名供应商那里配置 js.abc.com 域名的 CNAME 记录,值时刚刚提到的 js.acbc.com.ali.com

于是在客户端请求 js.abc.com 这个域名时,会先到 DNS 服务器中找域名解析的记录,找到了这个 CNAME 记录,于是就返回了 js.acbc.com.ali.com 这个 cdn 服务商的加速域名

2. js.acbc.com.ali.com -> xx.xx.xx.xx

graph LR
客户端 --> DNS服务器
DNS服务器 --> 客户端

客户端拿到 cdn 域名 js.acbc.com.ali.com 后,会再去 DNS 服务器请求,DNS 服务器根据 A 记录(域名到ip的映射记录)查询到域名对应的 ip 地址,返回比如 xx.xx.xx.xx

3. 客户端请求 xx.xx.xx.xx/abc.js 到边缘层节点

graph LR
客户端 --> 边缘层节点

边缘层节点分布在 cdn 网络的边缘位置,给用户就近提供服务

4. 边缘层节点请求中心层节点

graph LR
边缘层节点 --> 中心层节点

中心层节点储存着源站信息,还有缓存了各种资源

5. 中心层节点请求源站(业务服务器)

graph LR
中心层节点 --> 源站

最终请求到业务服务器(源站), 比如 abc.com/abc.js 源站返回对应的资源

文件内容一直返回到客户端

graph LR
资源 --> 中心节点 --> 边缘节点 --> 客户端

同一个用户再次访问

graph LR
客户端 --> 边缘层节点
边缘层节点 --> 客户端

客户端请求 js.abc.com/abc.js 因为本地 DNS 客户端有了域名的缓存,因此不需要再请求 DNS 服务器,因为 CDN 边缘层节点有了对应资源的缓存,于是不需要再请求资源

另外一个用户第一次访问

会找到边缘节点,但是不会继续了,因为边缘节点有缓存

就近访问验证

可以使用 dig 命令查询 DNS 解析记录