2 -【 高并发 - 服务 】- 3 CDN 内容分发
1 Web 前端优化
- 使用网站动静分离架构;
- 减少
Http
请求的传输,CSS/JS
合并传输,压缩JS
、CSS
技术; - 使用浏览器缓存静态资源,减少服务器端压力;
- 使用
CDN
内容分发,减少宽带传输,获取用户IP
,分配到最近的服务器访问; - 前后端分离技术。
2 实战 CDN
内容分发
2.1 DNS
域名解析过程
DNS
即 Domain Name System
,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的 IP 地址。人们习惯记忆域名,但机器间互相只认 IP 地址,域名与 IP 地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。
常见的 DNS
解析服务商有:阿里云解析、万网解析、DNSPod、新网解析、Route53(AWS)、Dyn、Cloudflare等。
2.2 传统方式请求静态资源
如果没有使用 CDN
服务器,那么走的就是 HTTP
请求,本质就是 Request
和 Response
。
传统方式架构弊端:
- 带宽传输压力大;
- 因为所有用户全部聚集到同一个地区服务器上访问,无法保证整体的系统高可用;
- 因为如果客户端与服务器端传输距离越远,那么宽带传输非常耗资源,导致用户体验非常差,响应慢。
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
内容分发原理
- 用户向浏览器提供要访问的域名;
- 浏览器调用域名解析库对域名进行解析,由于
CDN
对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME
记录,为了得到实际IP
地址,浏览器需要再次对获得的CNAME
域名进行解析以得到实际的IP
地址;在此过程中,使用的全局负载均衡DNS
解析,如根据地理位置信息解析对应的IP
地址,使得用户能就近访问; - 此次解析得到
CDN
缓存服务器的IP
地址,浏览器在得到实际的IP
地址以后,向缓存服务器发出访问请求; - 缓存服务器根据浏览器提供的要访问的域名,通过
Cache
内部专用DNS
解析得到此域名的实际IP
地址,再由缓存服务器向此实际IP
地址提交访问请求; - 缓存服务器从实际
IP
地址得得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程; - 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
2.2.3 阿里云环境实战搭建 CDN
内容分发
步骤:
1、创建阿里云 CDN
地址
2、前往解析 CNAME
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的节点,达到加速效果。