在这里记录一下项目中遇到的一个问题,项目中用到了CDN(内容分发网络),在网上了解了一些基础知识,在这记录一下。CDN就是在用户和服务器之间增加了cache层,将网站的内容发布到CDN上使得用户可以就近获得所需的资源。它解决了不同地域的用户访问网站时候存在访问速度的差异,大大提高了响应速度,同时还能解决用户访问量大的问题,降低了源网站的压力。
- 一些概念:DNS提供域名到IP地址的映射,为了实现该功能它需要维护叫做资源记录的数据(resource record),资源记录有很多类型比如
A(address):这是我们接触较多的,他记录的是域名到IP地址的映射;
CNAME(canonical name,canonical:权威的):域名到域名的映射,为了使用 CDN,必需另外再申请一个加速域名,作为使用 CDN 的入口。
NS(name server):指定了域名由哪一台服务器进行解析, NS 指定的 DNS 服务器叫做该域名的权威 DNS 服务器。
加速域名:需要CDN加速的域名,加速域名由域名供应商提供,这种域名需要配置CNAME记录,无需加速的配置A记录即可,同一域名上A与CNAME不可共存。加速域名值为 CDN 平台提供的 CNAME 域名,该 CNAME 域名指向 CDN 系统节点。添加加速域名时需要配置源站域名,也就是CDN 平台保存了加速域名与源站域名的映射关系。CNAME保存的是加速域名和主供应商域名(比如ali.com) - CDN工作原理:
(假设我建立了一个网站,域名为 www.tt.com,用户访问的主页链接为 www.tt.com/idx.html。为了缓解服务端压力和加快访问速度,决定使用阿里云 CDN 服务。
为了更好地理解工作原理,先了解一下 CDN 的接入流程。
接入流程
主要接入步骤如下:
到某域名供应商处申请一个加速域名:js.tt.com。
到阿里云 CDN 平台添加加速域名 js.tt.com,同时设置其源站域名为 www.tt.com。
阿里云 CDN 平台自动分配一个 CNAME 域名:js.tt.com.ali.com。(指向CDN系统节点)
到域名供应商处给加速域名 js.tt.com 添加 CNAME 记录,其值为上一步得到的 CNAME 域名:js.tt.com.ali.com。
作者:Escape Plan
链接:https://juejin.im/post/6844904190913822727
来源:掘金)
没有使用CDN访问过程详见上一篇笔记,使用CDN的网络主要通过接管NDS将用户的请求引导到cache上以获得源服务器的资源。
- 最开始的步骤和无CDN访问过程一致,一直到本地DNS经过迭代查询将最终解析域名的解析权交给CNAME指向的CDN专用DNS
- CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
用户向CDN的全局负载均衡设备发起内容URL访问请求。 - CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
- 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
- 全局负载均衡设备把服务器的IP地址返回给用户。
- 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。