【Distributed】CDN

一、概述

1.1 Web前端优化

  1. 网站动静分离动静分离动态的资源和静态资源分别部署到不同的服务器上,使用Nginx实现静态服务器,因为nginx实现静态服务器访问速度的效果比tomcat实现静态服务器访问效果好很多。
  2. 要使用浏览器缓存,客户端(浏览器)内置缓存技术,只要访问一次静态资源请求,都会缓存到本地客户端,304状态码表示客户端缓存一般服务器上线的时候一定要在静态js、css资源后面加上时间戳,目的是为了防止发布版本与资源有冲突。
  3. 页面减少Http请求合并CSS或者JS资源,JS或者CSS一定使用压缩技术。 压缩文件变为.min
  4. 使用CDN内容分发,缓存静态资源(JS、 图片、CS),让用户从最近的服务器访问,减少客户端与服务器端宽带传输速度。使用CDN可以配置压缩。nginx也可以配置。
  5. 前后分离技术。异步化、ajax、 vue

1.2 DNS域名解析过程

  • DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。比如:上网时输入的www.baidu.com会自动转换成为220.181.112.143。
  • 常见的DNS解析服务商有:阿里云解析,万网解析,DNSPod,新网解析Route53(AWS),Dyn,Cloudflare等。

1.3 传统方式请求静态资源

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

二、CDN内容分发

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 CDN内容分发原理

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

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

  • 名词解释
  • CNAME记录(CNAME Record)
  • 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,获得相同的内容。

  • CNAME域名

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

  • 详细参考地址:阿里云CDN文档

相关推荐