一、CDN简介

1、什么是CDN?

 

CDN的全称是Content Delivery Network,即内容分发网络

 

其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定

 

通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上

 

其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度

 

2、CDN的优势

 

1)、CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低

2)、大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载

 

二、CDN网络结构

 

来来,了解了解CDN_java

CDN网络分为边缘节点、区域节点和中心节点三部分

 

边缘节点数目比较多,但是每个集群规模比较小,不可能缓存下来所有东西,因而可能无法命中,这样就会在边缘节点之上有区域节点。区域节点规模更大,缓存的数据会更多,命中的概率也就更大。在区域节点之上是中心节点,规模更大,缓存数据更多。如果还不命中,就只好回源网站访问了

 

三、CDN工作原理

 

 

来来,了解了解CDN_java_02

在没有CDN的情况下,用户向浏览器输入www.web.com这个域名,客户端访问本地DNS服务器的时候,如果本地DNS服务器有缓存,则返回网站的地址;如果没有,递归查询到网站的权威DNS服务器,这个权威DNS服务器是负责web.com的,它会返回网站的IP地址。本地DNS服务器缓存下IP地址,将IP地址返回,然后客户端直接访问这个IP地址,就访问到了这个网站

 

 

有了CDN之后,在web.com这个权威DNS服务器上,会设置一个CNAME别名,指向另外一个域名www.web.cdn.com,返回给本地DNS服务器

 

当本地DNS服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的就不是web.com的权威DNS服务器了,而是web.cdn.com的权威DNS服务器,这是CDN自己的权威DNS服务器。在这个服务器上,还是会设置一个CNAME,指向另外一个域名,也即CDN网络的全局负载均衡器

 

接下来,本地DNS服务器去请求CDN的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:

 

  • 根据用户IP地址,判断哪一台服务器距用户最近

  • 用户所处的运营商

  • 根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需的内容

  • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力

 

基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的IP地址

 

本地DNS服务器缓存这个IP地址,然后将IP返回给客户端,客户端去访问这个边缘节点,下载资源。缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地

 

四、静态CDN与动态CDN

1、静态CDN

 

对于静态页面,内容的分发往往采取拉取的方式,也即当发现未命中的时候,再去上一级进行拉取。但是流媒体数据量大,如果出现回源,压力会比较大,所以往往采取主动推送的模式,将热点数据主动推送到边缘节点

 

2、动态CDN

 

动态CDN主要有两种模式:边缘计算的模式和路径优化的模式

 

边缘计算的模式:既然数据是动态生成的,所以数据的逻辑计算和存储,也相应的放在边缘的节点。其中定时从源数据那里同步存储的数据,然后在边缘进行计算得到结果

 

 

路径优化的模式:数据不是在边缘计算生成的,而是在源站生成的,但是数据的下发则可以通过CDN的网络,对路径进行优化。因为CDN节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由CDN来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问