浅谈CDN原理

一、前言

一直对CDN原理有点一知半解,好像知道它是什么意思,”不就是能加速静态资源的获取,加快网页的渲染嘛”,不过当有人问你它是什么原理,又支支吾吾说不太清,本文就将用两种方式解释什么是CDN原理,一种较为通俗易懂,方便跟别人解释;另一种用专业词汇进行阐述,加深理解。

二、CDN具象化

举个简单的例子描述什么是cdn,一张很大的餐桌上,很多人在吃饭,其中包括小明和小李,小明和小李想要吃到距离他们很远的锅包肉,就得跋山涉水甚至站起来走过去才能吃到,那这个时候有人发现这道菜离小明和小李太远了,就主动把菜分出来一些分别放到小明和小李身边,这样小明和小李就可以就近吃到美味的锅包肉了。小明和小李就近吃锅包肉这个过程就用到了CDN。

img.jpg

再举个例子,你在园区内工作,此时你想下载一个游戏,但这个游戏服务器带宽被限制在2M,那么你下载这个好几个G的游戏就需要很长时间,但如果这个游戏非常热门,园区内很多人都下载过,那园区内的缓存设备就会将游戏资源缓存下载,那么你再下载的时候就会用远远大于2M的速度从缓存设备中获取,还减轻了目标服务器的压力。

三、CDN具体原理

用简单通俗的例子说明了什么是CDN之后就要再剖析一下它的具体原理了:

首先用又臭又长的名词说一下CDN的全称,Content Delivery Network或Content Ddistribute Network,即内容分发网络。

CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。

最简单的CDN网络由一个DNS服务器和几台缓存服务器组成:

  1. 当用户请求网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
  2. CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
  3. 用户向CDN的全局负载均衡设备发起内容URL访问请求。
  4. CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
  5. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。
  6. 全局负载均衡设备把服务器的IP地址返回给用户。
  7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

上面的文字可能读起来有点费劲,下面用一张图来解释说明

049b124feb55100ff2f147b768ad4c8b_1440w.jpg

以上就是CDN能加快网络资源加载的原理。

四、游戏加速器原理

顺便说一下游戏加速器的原理,提到游戏加速就不得不提到延迟,那为什么会产生延迟呢?

影响延迟的关键因素就是本机电脑到服务器的距离,延迟有个公式是延迟≈距离/光速。

上网连接游戏比作一条道路,从用户电脑到游戏服务器所经历的时间就是延迟。用户电脑到游戏服务器的距离走向,遵循一个基本原则
国内:局域网->城域网->骨干网->城域网->局域网
出国:局域网->城域网->骨干网->国际出口→海外线路→...

如用户在四川成都,游戏服务器在北京,我们理论觉得这段距离是成都到北京的直线路线,但是我们用tracet命令查看所走路由表如图

b264de9280810130bf5ffbe9d449c522_r.jpg

没错,他从成都先走到了上海,然后再从上海到了北京,无形中这段距离被拉长了,自然延迟就会长了。

那么如何降低延迟呢?游戏加速器就可以做到,下图就展示了游戏加速器是如何缩短距离,降低延迟的

v2-f8324903eda197c44a10ab485a27c682_r.jpg

可以理解为从成都到天津本来是一条崎岖的乡道,还长还不好走,而加速器在成都到天津架设了一条高速通路,直达天津,距离缩短了,延迟自然也低了。

完。

你可能感兴趣的:(浅谈CDN原理)