乐闻世界logo
搜索文章和话题
CDN 了解一下

CDN 了解一下

乐闻的头像
乐闻

2022年06月18日 11:45· 阅读 806

前言

「为啥咱们的网站访问那么慢」「网站加载这么慢客户都跑了」「能不能把咱们的网站加载速度提升下」本文记录的内容「CDN」是解决上面问题的方法之一,也是技术难度,成本相对较低的一种方式。

「问题起源」

首先分析一下网站加载速度慢的原因(问题基于前端静态文件部署在普通的云服务器CVM上,没有设置其他任何优化措施的情况)

浏览器渲染页面需要在请求到需要渲染的html文件的情况下,然后解析html中的

如何能加快请求静态资源的速度呢?1. 加快服务器读取文件的速度 2.加快服务器传输文件流给客户端的速度。加快读取文件速度,那就换个好的硬盘,加快传输速度,那就增加服务器的带宽。解决这两个问题都是需要银子的,能用银子解决问题,那还费什么脑子学习呢。

为了解决上面的问题,可以考虑引入CDN。

「CDN 是个啥」

百度百科定义

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

通俗的解释:CDN「内容分发网络」,出于尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快更稳定的目的,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络方式,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

这通俗的解释好像也不是很通俗,那么尝试从CDN的原理上下手,看看CDN的运行过程,方便进一步理解CDN到底是怎么解决访问速度问题的。

「CDN 工作原理」

image-20201030165304073

按照图中顺序,详细介绍每一步的动作

「1」 当用户浏览器或者其他代理客户的请求网站页面的内容URL,首先查询本地DNS系统,如果之前访问过并且缓存ip存在,则直接返回ip给浏览器,然后用户浏览器通过ip向目标服务器发起请求获得资源,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。

「2」 如果本地DNS服务器不存在缓存信息,进一步向权威DNS服务器请求CNAME类型的解析记录,CNAME记录对应的是CDN专属DNS服务器。

「3」 用户向CDN的全局负载均衡设备发起内容URL访问请求, CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

「4」 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

「5」 全局负载均衡设备把服务器的IP地址返回给用户。

「6」 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容。

「7」 追溯到网站的源服务器将内容拉到本地。

「实践出真知」

纸上得来终觉浅,最好的学习方式莫过于亲自下场参与一下。

接下来将通过普通部署 vs CDN 部署两种方式,对比一下加载效果。

「Nginx普通部署」 vs 「七牛云CDN部署」

nginx普通部署

七牛云cdn部署

备注:七牛云CDN部署效果图中 js 文件的大小变小了,是因为七牛云服务器开启了gzip压缩,实际上是同一个js文件。但是返回响应时间920ms 跟 26ms,差距也是有点大。这还是文件比较小的情况,如果js文件再大一点,普通云服务器部署简直没得玩。

标签: