一文带你弄懂 CDN 的技术原理

对于 CDN 这个东西,相信大家都有耳闻,感觉既陌生但又熟悉 。最近深入了解了一下 CDN,这才发现原来它如此重要!今天就跟大家分享下关于 CDN 的那些事儿 。
浏览器的网络请求要理解 CDN 这件事情,我们就得先理解浏览器发出一个请求的过程是怎样的,其整体过程如下图所示 。

一文带你弄懂 CDN 的技术原理

文章插图
 
浏览器网络请求过程
  1. 用户在浏览器中输入要访问的网址域名 。
  2. 浏览器向本地 DNS 服务器请求对域名的解析 。
  3. 如果本地 DNS 服务器有域名的解析结果,那么直接响应用户请求,返回该域名对应的 IP 地址 。
  4. 如果本地 DNS 服务器没有域名的解析结果,那么则会递归地向 DNS 系统请求解析,随后将该结果返回给用户 。
  5. 浏览器得到域名解析结果后,其实也就是域名对应的 IP 地址 。
  6. 随后浏览器向服务器请求内容 。
  7. 服务器将用户请求内容返回给浏览器 。
通过这么复杂的步骤,用户就可以看到页面内容了 。但实际上,在第 6、7 这两步的时候,其中间也经过了非常复杂的过程 。为了更清晰地表述,我们可以将这个过程分为 3 主要节点,如下图所示 。
一文带你弄懂 CDN 的技术原理

文章插图
服务器数据传输过程
 
网站服务器通过公网出口,再通过长途骨干网,最后通过用户的宽带广猫到达用户所在的局域网,最终才到达用户电脑的浏览器 。
其中长途骨干网的传输是最为耗时的,它需要经过网站服务器所在的机房、骨干网、用户所在城域网、用户所在接入网等,其物理传输距离非常遥远 。
在这种情况下,如果传输的数据非常多,访问的用户特别大,那么就会出现很长的延时,影响用户体验 。同时,每请求一次数据都需要经过漫长的数据传输,对于长途骨干网来说,都是一次负担 。
刚刚说的这个场景,很形象的一个例子是春节抢票的场景 。当我们春节抢票时,我们都会登陆 12306 网站,网站上肯定有不少图片资源 。这时候可能同时会有 1 个亿的人,同时去请求一张一模一样的图片 。
这时候如果我们都按照上面的过程去请求一次图片数据,那么将会产生 1 亿次的网络数据传输,这对于我们整个国家的互联网基础设施是个灾难啊!
【一文带你弄懂 CDN 的技术原理】但事实情况是:12306 貌似也没有挂掉呀!
那么他们是如何解决这个问题呢?答案就是:CDN!
什么是 CDN ?其实 CDN 就是内容分发网络的意思,其英文全称为 Content Delivery.NETwork 。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的 。
按照我们上面的场景,如果没有 CDN 的话,每次请求都需要从网站服务器经过公网出口、长途骨干网、用户接入局域网,最终到达浏览器 。但是当有了 CDN 之后,可能就变成了下面这样:
一文带你弄懂 CDN 的技术原理

文章插图
CDN 缓存服务器
 
浏览器请求图片数据时,会先取出 CDN 缓存服务器获取 。如果获取到数据,那么就直接返回 。否则才会经过长途骨干网,最终到达网站服务器获取图片数据 。那么只要我们提前在 CDN 缓存服务器上传图片,那么我们就可以极大地减少网络流量,同时减少网络延迟 。
从上图我们可能会觉得:这不就是在长途骨干网和用户局域网中间,加了一个服务器嘛 。但事实上可并不是这样,CDN 其实还缩短了请求数据的距离 。
我们知道用户所处的位置可能是全国各地,为了尽可能地减少网络传输的延时,一般都会在离用户较近的地方设置 CDN 缓存服务器,例如:在华南、华北、华东、西南设置一个主 CDN 服务器,这样各个地区的用户就可以直接请求对应的 CDN 服务器,而不需要来回跑大半个中国,极大地提高了效率!


推荐阅读