2 -【 高并发 - 服务 】- 3 CDN 内容分发

1 Web 前端优化

  1. 使用网站动静分离架构;
  2. 减少 Http 请求的传输,CSS/JS 合并传输,压缩 JSCSS 技术;
  3. 使用浏览器缓存静态资源,减少服务器端压力;
  4. 使用 CDN 内容分发,减少宽带传输,获取用户 IP,分配到最近的服务器访问;
  5. 前后端分离技术。

2 实战 CDN 内容分发

2.1 DNS 域名解析过程

DNSDomain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的 IP 地址。人们习惯记忆域名,但机器间互相只认 IP 地址,域名与 IP 地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

常见的 DNS 解析服务商有:阿里云解析、万网解析、DNSPod、新网解析、Route53(AWS)、Dyn、Cloudflare等。

2.2 传统方式请求静态资源

如果没有使用 CDN 服务器,那么走的就是 HTTP 请求,本质就是 RequestResponse

传统方式架构弊端:

  1. 带宽传输压力大;
  2. 因为所有用户全部聚集到同一个地区服务器*问,无法保证整体的系统高可用;
  3. 因为如果客户端与服务器端传输距离越远,那么宽带传输非常耗资源,导致用户体验非常差,响应慢。

2.2.1 什么是 CDN

CDN 加速意思就是在用户和我们的服务器之间加一个缓存机制,动态获取 IP 地址根据地理位置,让用户到最近的服务器访问。

CDN 的全称是 Content Delivery Network,即 内容分发网络

CDN 是一组分布在多个不同地理位置的 Web 服务器,用于更加有效地向用户发布内容,在优化性能时,会根据距离的远近来选择。

CDN 系统能实时地根据网络流量和各节点的连接,负载状况及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,其目的是使用户能就近地获取请求数据,解决网络拥塞,提高访问速度,解决由于网络带宽小、用户访问量大、网点分布不均等原因导致的访问速度慢的问题。

由于 CDN 部署在网络运营商的机房,这些运营商又是终端用户网络的提供商,因此用户请求的第一跳就到达 CDN 服务器,当 CDN 服务器中缓存有用户请求的数据时,就可以从 CDN 直接返回给浏览器,因此可以提高访问速度。

CDN 能够缓存 JavaScript 脚本、CSS 样式表、图片、图标、Flash 等静态资源文件(不包括 html 页面),这些静态资源文文件的访问频率很高,将其缓存在 CDN 可以极大地提高网站的访问速度,但由于 CDN 是部署在网络运营商的机房,所以在一般的网站中都很少用 CDN 加速。

2.2.2 CDN 内容分发原理

  1. 用户向浏览器提供要访问的域名;
  2. 浏览器调用域名解析库对域名进行解析,由于 CDN 对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的 CNAME 记录,为了得到实际 IP 地址,浏览器需要再次对获得的 CNAME 域名进行解析以得到实际的 IP 地址;在此过程中,使用的全局负载均衡 DNS 解析,如根据地理位置信息解析对应的 IP 地址,使得用户能就近访问;
  3. 此次解析得到 CDN 缓存服务器的 IP 地址,浏览器在得到实际的 IP 地址以后,向缓存服务器发出访问请求;
  4. 缓存服务器根据浏览器提供的要访问的域名,通过 Cache 内部专用 DNS 解析得到此域名的实际 IP 地址,再由缓存服务器向此实际 IP 地址提交访问请求;
  5. 缓存服务器从实际 IP 地址得得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程;
  6. 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

2.2.3 阿里云环境实战搭建 CDN 内容分发

2 -【 高并发 - 服务 】- 3 CDN 内容分发

步骤:

1、创建阿里云 CDN 地址
2 -【 高并发 - 服务 】- 3 CDN 内容分发

2、前往解析 CNAME
2 -【 高并发 - 服务 】- 3 CDN 内容分发

2.3 名词解释

2.3.1 CNAME 记录

CNAME 即别名( Canonical Name );可以用来把一个域名解析到另一个域名。

当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。

例如,你有一台服务器上存放了很多资料,你使用 docs.example.com 去访问这些资源,但又希望通过 documents.example.com 也能访问到这些资源,那么你就可以在您的 DNS 解析服务商添加一条 CNAME 记录,将 documents.example.com 指向 docs.example.com,添加该条 CNAME 记录后,所有访问 documents.example.com 的请求都会被转到 docs.example.com,获得相同的内容。

2.3.2 CNAME 域名

接入 CDN 时,在阿里云控制台添加完加速域名后,您会得到一个阿里云CDN给您分配的CNAME域名,(该CNAME域名一定是 *.*kunlun*.com), 您需要在您的DNS解析服务商添加CNAME记录,将自己的加速域名指向这个*.*kunlun*.com的CNAME域名,这样该域名所有的请求才会都将转向阿里云CDN的节点,达到加速效果。