什么是CDN?CDN和DNS有哪些关系和区别?

什么是CDN?CDN和DNS有哪些关系和区别?,第1张

一、什么是CDN?

CDN的全称是Content Delivery Network,翻译成中文就是内容分发网络。CDN依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取内容,降低网络延迟,提高访问速度。简单来讲,CDN是用来进行加速的,它可以让用户更快获得所需的数据。

举个例子,某个网站的服务器在北京,如果深圳的用户想要获取服务器上的数据,就需要跨越很远的距离,由于传输速度和路由转发等因素,就会导致访问速度非常缓慢。但如果我们在深圳建立一个CDN服务器,上面缓存了一些服务器数据,那么深圳用户只需要访问这个CND的服务器就能获取相关的内容,这样速度就提升了很多。

二、什么是DNS?

要了解cdn就先要了解一下dns。当我们在浏览器中输入一个域名时,就能访问对应的站点。但实际的情况远比我们看到的复杂,因为计算机不能直接识别域名,所以必须依靠某种环节将域名翻译成IP地址才能,这个环节就是DNS。

当我们向DNS服务器发起解析域名的请求时,DNS服务器首先会查询自己的缓存中有没有该域名,如果缓存中存在该域名,则可以直接返回IP地址。如果缓存中没有,服务器则会以递归的方式层层访问。

例如,我们要访问www.baidu.com,首先我们会先向全球13个根服务器发起请求,询问com域名的地址,然后再向负责com域名的名称服务器发送请求,找到baidu.com,这样层层递归,最终找到我们需要的IP地址。

三、CDN和DNS的区别

上面我们提到CDN实际上提供就是一个就近访问的功能,但现在有一个问题是,我们如何直到用户所在的位置并为其分配最佳的CDN节点呢。这就需要用DNS服务进行定位了。

当我们使用DNS服务时,可以根据用户使用的递归服务器进行定位。但你给我们看到用户使用的是深圳的递归服务器,那么就认为该用户来自深圳,然后调度服务器就让该客户去访问深圳的CDN服务器。

但这种调度方式可能存在一个问题,就是用户的实际IP与递归服务器并不一致。比如我是北京联通的用户却使用了深圳电信的递归服务器,那么调度服务器为我分配深圳电信的CDN服务器,就会产生错误的调度。

四、HTTP调度

针对上面的问题,我们还有另一种调度方式——http调度。

当用户访问服务器时,先分析用户的IP地址,然后服务器给用户返回一个302重定向,将离用户最近的服务器存在缓存中,用户再去请求时就能得到最佳的CDN节点。

这种方式定位更加准确,但缺点是需要增加一次额外的HTTP访问,这样导致首次访问的延时比较高。

所以在实际情况中,我们可以将两种方式结合起来,先通过dns的方式来定位,然后通过http的方式来纠正偏差。

五、缓存的两种方式

CDN节点中缓存了服务器上的部分资源。那么服务器怎么去更新CDN节点的缓存呢?

一种方式,是服务器主动进行缓存的更新,CDN节点被动接受。另一种方式是用户请求的资源不存在时,CDN节点主动放弃请求,更新缓存,然后将数据返给用户。

显然第一种方式存在很多问题,例如很容易产生404等,所以一般采用第二种缓存方式。

六、CDN工作流程

当用户请求一个文件时,CDN的工作过程如下:

1.DNS请求当地local DNS

2.当地local DNS递归地查询服务器的gslb

3.服务器根据local DNS 分配最佳节点,返回IP

4.用户获得最佳接入IP,访问最佳节点。

5.如果该节点没有用户想要获取的内容,则通过内部路由访问上一节点,直到找到文件或到达源站为止。

6.CDN节点缓存该数据,下次请求该文件时可以直接返回。

很多人可能都听说过DNS和CND,但对于两者之间有哪些联系和区别可能不太了解。本文将对这个问题做下简单介绍。

我们平时输入的网址(或者域名)不能直接由计算机识别,必须通过DNS服务器将域名翻译成IP地址,才能完整访问过程。这个过程被称为DNS解析,这是完成访问必不可少的一个环节。

如果网站没有设置CDN缓存,那么用户访问该网站的过程大概分为以下几个步骤:

1.用户在浏览器中输入要访问的域名;

2.浏览器像本地DNS查询域名的IP地址;

3.本地DNS向根服务器发起请求;

4.根服务器向本地服务器返回域名所属的顶级服务器;

5.顶级服务器将域名所属的权威服务器返回给本地DNS;

6.本地服务器向权威服务器发起请求,权威服务器将域名对应IP地址返回给本地服务器;

7.本地服务器将IP地址返回给用户,完成整个解析过程。

CDN的全称是Content Delivery Network,即内容分发网络,它能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

使用CDN的方法很简单,只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可。

在使用CDN后,访问过程如下:

1.当用户想要访问某个网站,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。

2.CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。

3.用户向CDN的全局负载均衡设备发起访问请求。

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

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

6.全局负载均衡设备把服务器的IP地址返回给用户

7.用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

CDN服务本身并不具备 DNS解析 功能,而是依托于DNS智能解析功能,由DNS根据用户所在地、所用线路进行智能分配最合适的CDN服务节点,然后把缓存在该服务节点的静态缓存内容返回给用户.所以在启用CDN后进行ping查询时IP发生了变化,是因为此时返回的是我司DNS根据用户所在网络和服务器情况等智能适配后得出的最佳CDN服务节点IP而并真实服务器。

一、DNS域名解析:( Domain Name System)是“域名系统”的英文缩写, www.qq.com ==>192.168.1.1 域名方便记忆

二、CDN内容分发网络:

假设通过CDN加速的域名为 www.a.com ,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:

1.当终端用户(北京)向 www.a.com 下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。

2.LDNS检查缓存中是否有 www.a.com 的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。

3.当授权DNS解析 www.a.com 时,返回域名CNAME www.a.tbcdn.com 对应IP地址。

4.域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。

5.LDNS获取DNS返回的解析IP地址。

6.用户获取解析IP地址。

7.用户向获取的IP地址发起对该资源的访问请求。

8.如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。

9.如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。

10.获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。

总结:(1)CDN的加速资源是跟域名绑定的。

(2)通过域名访问资源,首先是通过DNS分发查找离用户最近的CDN节点(边缘服务器)的IP

(3)通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/341606.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存