最新消息:

web网站加速之CDN(Content Delivery Network)技术原理

工作 admin 4658浏览 0评论

Author: 北方人 LastUpdate : 2012-03-02 12:12:02


在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的信息,彻底解决网络拥塞,提高响应速度,是目前大型网站使用的流行的应用方案.

1. CDN 概述

  • CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络“边缘”的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。 jinglingshu_2014-07-31_16-46-14
  • Cache层的技术,消除数据峰值访问造成的结点设备阻塞。Cache服务器具有缓存功能,所以大部分网页对象(Web page object),如html, htm, php等页面文件,gif,tif,png,bmp等图片文件,以及其他格式的文件,在有效期(TTL)内,对于重复的访问,不必从原始网站重新传送文件 实体, 只需通过简单的认证(Freshness Validation)- 传送几十字节的Header,即可将本地的副本直接传送给访问者。由于缓存服务器通常部署在靠近用户端,所以能获得近似局域网的响应速度,并有效减少广域 带宽的消耗。不仅能提高响应速度,节约带宽,对于加速Web服务器,有效减轻源服务器的负载是非常有效的。
  • 根据加速对象不同,分为 客户端加速 和 服务器加速
    • 客户端加速 : Cache部署在网络出口处,把常访问的内容缓存在本地,提高响应速度和节约带宽;
    • 服务器加速 : Cache部署在服务器前端,作为Web服务器的代理缓存机,提高Web服务器的性能,加速访问速度
      如果多台Cache加速服务器且分布在不同地域,需要通过有效地机制管理Cache网络,引导用户就近访问(比如通过DNS引导用户),全局负载均衡流量,这是CDN内容传输网络的基本思想.
  • CDN对网络的优化作用主要体现在如下几个方面  - 解决服务器端的“第一公里”问题  - 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响  - 减轻了各省的出口带宽压力  - 缓解了骨干网的压力  - 优化了网上热点内容的分布

2. CDN 的工作原理

2.1. 传统访问过程(未加速缓存服务)

我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别:

jinglingshu_2014-07-31_16-45-57

由上图可见,用户访问未使用CDN缓存网站的过程为:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
  2. LocalDnsROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
  3. ROOT DNS将域名授权dns记录回应给 LocalDns
  4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
  5. 域名授权dns 查询域名记录后,回应给 LocalDns
  6. LocalDns 将得到的域名ip地址,回应给 用户端
  7. 用户得到域名ip地址后,访问站点服务器
  8. 站点服务器应答请求,将内容返回给客户端.

2.2. CDN访问过程(使用缓存服务)

CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据
下面让我们看看访问使用CDN缓存后的网站的过程:

jinglingshu_2014-07-31_16-45-59

通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

  1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
  2. LocalDnsROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
  3. ROOT DNS将域名授权dns记录回应给 LocalDns
  4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
  5. 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns
  6. LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址
  7. 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns
  8. LocalDns 将得到的域名ip地址,回应给 用户端
  9. 用户得到域名ip地址后,访问站点服务器
  10. CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问,需要使用DNS(域名解析)来引导用户来访问Cache服务器,以实现透明的加速服务. 由于用户访问网站的第一步就是 域名解析 ,所以通过修改dns来引导用户访问是最简单有效的方式.

2.3. CDN网络的组成要素

对于普通的Internet用户,每个CDN节点就相当于一个放置在它周围的网站服务器.
通过对dns的接管,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求.
由于它离用户更近,因而响应时间必然更快.

从上面图中 虚线圈起来的那块,就是CDN层,这层是位于 用户端 和 站点服务器之间.

  • 智能调度DNS(比如f5的3DNS) 智能调度DNS是CDN服务中的关键系统.当用户访问加入CDN服务的网站时,域名解析请求将最终由 智能调度DNS 负责处理.
    它通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户可以得到快速的服务.
    同时它需要与分布在各地的CDN节点保持通信,跟踪各节点的健康状态,容量等,确保将用户的请求分配到就近可用的节点上.
  • 缓存功能服务
    • 负载均衡设备(如lvs,F5的BIG/IP)
    • 内容Cache服务器(如squid)
    • 共享存储(根据缓存数据量多少决定是否需要)

3. CDN 智能调度Dns 实例分析

  • 分析img.alibaba.com域名 在系统中,执行dig命令,输出如下:
      #dig img.alibaba.com       
      
      ; 部分省略
      
      ;; QUESTION SECTION:
      ;img.alibaba.com.		IN	A
      
      ;; ANSWER SECTION:
      img.alibaba.com.	600	IN	CNAME	img.alibaba.com.edgesuite.net.
      img.alibaba.com.edgesuite.net. 7191 IN	CNAME	img.alibaba.com.georedirector.akadns.net.
      img.alibaba.com.georedirector.akadns.net. 3592 IN CNAME	a1366.g.akamai.net.
      a1366.g.akamai.net.	12	IN	A	204.203.18.145
      a1366.g.akamai.net.	12	IN	A	204.203.18.160
      
      ; 部分省略
    

    从上面查询结果可以看出 img.alibaba.com. CNAME img.alibaba.com.edgesuite.net. 后面的CNAME是由 Akamai(CDN服务商) 去跳转到 智能调度器上的.

  • 分析www.discovery.com域名 在系统中,继续执行dig命令,输出如下:
      #dig www.discovery.com
      
      ; 部分省略
      
      ;; QUESTION SECTION:
      ;www.discovery.com.		IN	A
      
      ;; ANSWER SECTION:
      www.discovery.com.	1077	IN	CNAME	www.discovery.com.edgesuite.net.
      www.discovery.com.edgesuite.net. 21477 IN CNAME	a212.g.akamai.net.
      a212.g.akamai.net.	20	IN	A	204.203.18.154
      a212.g.akamai.net.	20	IN	A	204.203.18.147
      
      ; 部分省略
    

    从上面查询结果可以看出 www.discovery.com. IN CNAME www.discovery.com.edgesuite.net. 后面的CNAME是由 Akamai(CDN服务商) 去跳转到 智能调度器上的. 总结:一般来说,网站需要使用到CDN服务时,一般都是将需要加速访问的域名 CNAME到 CDN服务商的域名上.
    缓存服务和调度功能都是由服务商来完成.

4. CDN的 智能调度Dns 简化实现

4.1. 调度策略说明

在用户请求解析域名的时候,智能DNS判断用户的LocalDns的IP,然后跟DNS服务器内部的IP表范围匹配一下,看看用户是电信还是网通用户,然后给用户返回对应的IP地址
这里使用的是静态拓扑的方法,只是判断LocalDns的IP.要想使用更复杂的调度算法可以考虑商业产品,如F5的3DNS.

4.2. 假设CDN节点规划

在这里我们将使用 BIND 的View功能来实现运营商的区分,假设我们在每个运营商的机房都放有一个CDN节点,列表如下:

域名 运营商(view) 服务地址
www.cdntest.com 网通(CNC) 192.168.0.1
www.cdntest.com 电信(TELECOM) 192.168.0.2
www.cdntest.com 教育网(EDU) 192.168.0.3
www.cdntest.com 默认(ANY) 192.168.0.4

4.3. bind view 配置

  • 以下是named.conf配置文件的部分截取,只是涉及到 View 的部分,其他细节可参考互联网.
      acl "cnc_iprange"{   //定义ip范围(网通)
      192.168.1.0/24;  
      192.168.2.0/24;
      //此处只是示例,其他省略
      };  
      
      acl "tel_iprange"{  //定义ip范围(电信)
      192.168.3.0/24;  
      192.168.4.0/24;
      //其他省略
      };
       
      acl "edu_iprange"{  //定义ip范围(教育网)
      192.168.5.0/24;  
      192.168.6.0/24;
      //其他省略
      };
       
      acl "default_iprange"{ //定义ip范围(默认)
      192.168.7.0/24;  
      192.168.8.0/24;
      //其他省略
      }; 
      
      
      view "CNC" {
      	Match-clients{cnc_iprange};
      	zone "." IN {
      		    type hint;
      		    file "named.root";
      	};
      
      	zone "localhost" IN {
      		    type master;
      		    file "localhost.zone";
      		    allow-update { none; };
      	};
      	
      	zone "cdntest.com" IN {
          		type master;
          		file "cnc_cdntest.zone";
      	};
      };
      
      view "TEL" {
      	Match-clients{tel_iprange};
      	zone "." IN {
      		    type hint;
      		    file "named.root";
      	};
      
      	zone "localhost" IN {
      		    type master;
      		    file "localhost.zone";
      		    allow-update { none; };
      	};
      	
      	zone "cdntest.com" IN {
          		type master;
          		file "tel_cdntest.zone";
      	};
      };
      
      view "EDU" {
      	Match-clients{edu_iprange};
      	zone "." IN {
      		    type hint;
      		    file "named.root";
      	};
      
      	zone "localhost" IN {
      		    type master;
      		    file "localhost.zone";
      		    allow-update { none; };
      	};
      	
      	zone "cdntest.com" IN {
          		type master;
          		file "edu_cdntest.zone";
      	};
      };
      
      view "DEFAULT" {
      	Match-clients{default_iprange};
      	zone "." IN {
      		    type hint;
      		    file "named.root";
      	};
      
      	zone "localhost" IN {
      		    type master;
      		    file "localhost.zone";
      		    allow-update { none; };
      	};
      	
      	zone "cdntest.com" IN {
          		type master;
          		file "default_cdntest.zone";
      	};
      };
    
  • zone文件的配置说明 这4个zone配置文件(cnc_cdntest.zone,tel_cdntest.zone,edu_cdntest.zone,default_cdntest.zone)中,只有www.cndtest.com的A记录不一样,其他的都是一样.
域名 zone配置文件 A记录地址
www.cdntest.com cnc_cdntest.zone 192.168.0.1
www.cdntest.com tel_cdntest.zone 192.168.0.2
www.cdntest.com edu_cdntest.zone 192.168.0.3
www.cdntest.com default_cdntest.zone 192.168.0.4

以上只列出了 www.cdntest.com 的A记录地址,其他关于zone的语法 请参考互联网.

  • 域名解析流程简要说明
  1. 用户向 LocalDns 查询域名 www.cdntest.com
  2. LocalDns 向 授权DNS 查询www.cdntest.com
  3. 授权DNS 判断用户使用的 LocalDns的ip地址,匹配上述设置的ip范围,如果范围在网通,就将网通对应的ip地址(192.168.0.1),回应给LocalDns(其他依此类推)
  4. LocalDns 将得到的域名ip地址,回应给 用户端 (域名解析完成) 说明:再此过程中,我们简化了主DNS智能DNS 之间的CNAME过程(为了简要说明问题).
    这里使用的是静态拓扑(根据ip范围)的方法,也称为地域化方法,只是判断LocalDns的IP.
  • 此简化方案中的存在的问题
  1. 如果用户设置错误的dns,可能会导致用户访问比原来慢(比如网通用户设置了电信的DNS)
  2. 不能判断CDN节点服务器的健康状态和容量状态,可能会把用户定向到不可用的CDN节点
  3. 由于静态拓扑方法,可能存在用户访问的CDN节点不是最优化和最快的
  4. …..可能还有其他想不到的….

5. 总结(Summary)

在建立CDN网路时,最关键的就是 智能调度DNS,这个是CND网络总协调,通过高效的调度算法,可以使用户得到最佳的访问体验.
其次就是 CND节点的管理,比如涉及到 内容的同步机制,配置文件的更新等等,都需要有一套机制来保证.
当然在大型网站中,也要考建设CDN体系的成本和回报率.

转自:http://www.51know.info/system_performance/cdn/cdn.html

CDN(内容分发网络)技术原理

1. 前言

Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。解决方案就是在网络传输上利用缓存技术使得Web服 务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。

网络缓存技术,其目的就是减少网络中冗余数据的重复传输,使之最小化,将广域传输转为本地或就近访问。互联网上传递的内容,大部分为重复的 Web/FTP数据,Cache服务器及应用Caching技术的网络设备,可大大优化数据链路性能,消除数据峰值访问造成的结点设备阻塞。Cache服 务器具有缓存功能,所以大部分网页对象(Web page object),如html, htm, php等页面文件,gif,tif, png, bmp等图片文件,以及其他格式的文件,在有效期(TTL)内,对于重复的访问,不必从原始网站重新传送文件实体,只需通过简单的认证 (Freshness Validation)- 传送几十字节的Header,即可将本地的副本直接传送给访问者。由于缓存服务器通常部署在靠近用户端,所以能获得近似局域网的响应速度,并有效减少广域 带宽的消耗。据统计,Internet上超过80%的用户重复访问20%的信息资源,给缓存技术的应用提供了先决的条件。缓存服务器的体系结构与Web服 务器不同,缓存服务器能比Web服务器获得更高的性能,缓存服务器不仅能提高响应速度,节约带宽,对于加速Web服务器,有效减轻源服务器的负荷是非常有 效的。

高速缓存服务器(Cache Server)是软硬件高度集成的专业功能服务器,主要做高速缓存加速服务,一般部署在网络边缘。根据加速对象不同,分为客户端加速和服务器加速,客户端 加速Cache部署在网络出口处,把常访问的内容缓存在本地,提高响应速度和节约带宽;服务器加速,Cache部署在服务器前端,作为Web服务器的前置 机,提高Web服务器的性能,加速访问速度。如果多台Cache加速服务器且分布在不同地域,需要通过有效地机制管理Cache网络,引导用户就近访问, 全局负载均衡流量,这就是CDN内容传输网络的基本思想。

2.什么是CDN?

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘”,使用户可 以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等 原因,解决用户访问网站的响应速度慢的根本原因。

狭义地讲,内容分发布网络(CDN)是一种新型的网络构建方式,它是为能在传统的IP网发布宽带丰富媒体而特别优化的网络覆盖层;而从广义的角 度,CDN代表了一种基于质量与秩序的网络服务模式。简单地说,内容发布网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请 求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。总的来说,内 容服务基于缓存服务器,也称作代理缓存(Surrogate),它位于网络的边缘,距用户仅有”一跳”(Single Hop)之遥。同时,代理缓存是内容提供商源服务器(通常位于CDN服务提供商的数据中心)的一个透明镜像。这样的架构使得CDN服务提供商能够代表他们 客户,即内容供应商,向最终用户提供尽可能好的体验,而这些用户是不能容忍请求响应时间有任何延迟的。据统计,采用CDN技术,能处理整个网站页面的 70%~95%的内容访问量,减轻服务器的压力,提升了网站的性能和可扩展性。

与目前现有的内容发布模式相比较,CDN强调了网络在内容发布中的重要性。通过引入主动的内容管理层的和全局负载均衡,CDN从根本上区别于传 统的内容发布模式。在传统的内容发布模式中,内容的发布由ICP的应用服务器完成,而网络只表现为一个透明的数据传输通道,这种透明性表现在网络的质量保 证仅仅停留在数据包的层面,而不能根据内容对象的不同区分服务质量。此外,由于IP网的”尽力而为”的特性使得其质量保证是依靠在用户和应用服务器之间端 到端地提供充分的、远大于实际所需的带宽通量来实现的。在这样的内容发布模式下,不仅大量宝贵的骨干带宽被占用,同时ICP的应用服务器的负载也变得非常 重,而且不可预计。当发生一些热点事件和出现浪涌流量时,会产生局部热点效应,从而使应用服务器过载退出服务。这种基于中心的应用服务器的内容发布模式的 另外一个缺陷在于个性化服务的缺失和对宽带服务价值链的扭曲,内容提供商承担了他们不该干也干不好的内容发布服务。

纵观整个宽带服务的价值链,内容提供商和用户位于整个价值链的两端,中间依靠网络服务提供商将其串接起来。随着互联网工业的成熟和商业模式的变 革,在这条价值链上的角色越来越多也越来越细分。比如内容/应用的运营商、托管服务提供商、骨干网络服务提供商、接入服务提供商等等。在这一条价值链上的 每一个角色都要分工合作、各司其职才能为客户提供良好的服务,从而带来多赢的局面。从内容与网络的结合模式上看,内容的发布已经走过了ICP的内容(应 用)服务器和IDC这两个阶段。IDC的热潮也催生了托管服务提供商这一角色。但是,IDC并不能解决内容的有效发布问题。内容位于网络的中心并不能解决 骨干带宽的占用和建立IP网络上的流量秩序。因此将内容推到网络的边缘,为用户提供就近性的边缘服务,从而保证服务的质量和整个网络上的访问秩序就成了一 种显而易见的选择。而这就是内容发布网(CDN)服务模式。CDN的建立解决了困扰内容运营商的内容”集中与分散”的两难选择。无疑对于构建良好的互联网 价值链是有价值的,也是不可或缺的。

3.CDN新应用和客户

目前的CDN服务主要应用于证券、金融保险、ISP、ICP、网上交易、门户网站、大中型公司、网络教学等领域。另外在行业专网、互联网中都可 以用到,甚至可以对局域网进行网络优化。利用CDN,这些网站无需投资昂贵的各类服务器、设立分站点,特别是流媒体信息的广泛应用、远程教学课件等消耗带 宽资源多的媒体信息,应用CDN网络,把内容复制到网络的最边缘,使内容请求点和交付点之间的距离缩至最小,从而促进Web站点性能的提高,具有重要的意 义。CDN网络的建设主要有企业建设的CDN网络,为企业服务;IDC的CDN网络,主要服务于IDC和增值服务;网络运营上主建的CDN网络,主要提供 内容推送服务;CDN网络服务商,专门建设的CDN用于做服务,用户通过与CDN机构进行合作,CDN负责信息传递工作,保证信息正常传输,维护传送网 络,而网站只需要内容维护,不再需要考虑流量问题。

CDN能够为网络的快速、安全、稳定、可扩展等方面提供保障。

IDC建立CDN网络,IDC运营商一般需要有分部各地的多个IDC中心,服务对象是托管在IDC中心的客户,利用现有的网络资源,投资较少, 容易建设。例如某IDC全国有10个机房,加入IDC的CDN网络,托管在一个节点的Web服务器,相当于有了10个镜像服务器,就近供客户访问。宽带城 域网,域内网络速度很快,出城带宽一般就会瓶颈,为了体现城域网的高速体验,解决方案就是将Internet网上内容高速缓存到本地,将Cache部署在 城域网各POP点上,这样形成高效有序的网络,用户仅一跳就能访问大部分的内容,这也是一种加速所有网站CDN的应用。

4.CDN 的工作原理

在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别:

jinglingshu_2014-07-31_16-46-01

  由上图可见,用户访问未使用CDN缓存网站的过程为:

1)、用户向浏览器提供要访问的域名;

2)、浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;

3)、浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;

4)、浏览器根据域名主机返回的数据显示网页的内容。

通过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。CDN网络是在用户和服务器之间增加 Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,下面让我们看看访问使用CDN缓存后的网站的过程:

jinglingshu_2014-07-31_16-45-58

  通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

1)、用户向浏览器提供要访问的域名;

2)、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为 了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信 息解析对应的IP地址,使得用户能就近访问。

3)、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;

4)、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;

5)、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;

6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被加速网站原有的域名即可访 问),又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,下面是CDN网络实现的 具体操作过程。

1)、作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。

2)、作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;

3)、当需要进行sorlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;

4)、由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;

5)、在维护内部DNS服务器时,还需要维护一台授权服务器,控制哪些域名可以进行缓存,而哪些又不进行缓存,以免发生开放代理的情况。

5.CDN的技术手段

实现CDN的主要技术手段是高速缓存、镜像服务器。可工作于DNS解析或HTTP重定向两种方式,通过 Cache服务器,或异地的镜像站点完成内容的传送与同步更新。DNS方式用户位置判断准确率大于85%,HTTP方式准确率为99%以上;一般情况下, 各Cache服务器群的用户访问流入数据量与Cache服务器到原始网站取内容的数据量之比在2:1到3:1之间,即分担50%到70%的到原始网站重复 访问数据量(主要是图片,流媒体文件等内容);对于镜像,除数据同步的流量,其余均在本地完成,不访问原始服务器。

镜像站点(Mirror Site)服务器是我们经常可以看到的,它让内容直截了当地进行分布,适用于静态和准动态的数据同步。但是购买和维护新服务器的费用较高,另外还必须在各 个地区设置镜像服务器,配备专业技术人员进行管理与维护。大型网站在随时更新各地服务器的同时,对带宽的需求也会显著增加,因此一般的互联网公司不会建立 太多的镜像服务器。

高速缓存手段的成本较低,适用于静态内容。Internet的统计表明,超过80%的用户经常访问的是20%的网站的内容,在这个规律下,缓存 服务器可以处理大部分客户的静态请求,而原始的WWW服务器只需处理约20%左右的非缓存请求和动态请求,于是大大加快了客户请求的响应时间,并降低了原 始WWW服务器的负载。根据美国IDC公司的调查,作为CDN的一项重要指标 —— 缓存的市场正在以每年近100%的速度增长,全球的营业额在2004年将达到45亿美元。网络流媒体的发展还将剌激这个市场的需求。

6.CDN的网络架构
  CDN网络架构主要由两大部分,分为中心和边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房,边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。

当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时 最接近用户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用 户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。

对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求。由于它离用户更近,因而响应时间必然更快。

每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器

负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。

高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。

CDN的管理系统是整个系统能够正常运转的保证。它不仅能对系统中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测 到系统中总的流量和各节点的流量,并保存在系统的数据库中,使网管人员能够方便地进行进一步分析。通过完善的网管系统,用户可以对系统配置进行修改。

理论上,最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache,即可运行。DNS支持根据用户源IP地址解析不同的IP, 实现就近访问。为了保证高可用性等,需要监视各节点的流量、健康状况等。一个节点的单台Cache承载数量不够时,才需要多台Cache,多台Cache 同时工作,才需要负载均衡器,使Cache群协同工作。

  7. CDN 示例

商业化的CDN网络是用于服务性质的,高可用性等要求非常高,有专业产品和CDN网络解决方案,本文主要从理论角度,理解CDN的实现过程,并利用已有网络环境和开源软件做实际配置,更深刻理解CDN的具体工作过程。

Linux 是开放源代码的免费操作系统,已经成功应用于许多关键领域。Bind是Unix/FreeBSD/Linux等类Unix平台上非常有名DNS服务程 序,Internet上超过60%的DNS运行的是bind。Bind的最新版本是9.x,用的比较多的是8.x,bind 9有很多新特性,其中一项是根据用户端源地址对同一域名解析不同的IP地址,有了这种特性,能把用户对同一域名的访问,引导到不同地域节点的服务器上去访 问。Squid是Linux等操作系统上有名的Cache引擎,与商业Cache引擎相比,Squid的性能比较低,基本功能工作原理与商业Cache产 品是一致的,作为试验,是非常容易配置运行起来。以下简要介绍CDN的配置流程。

1、要加入CDN服务的网站,需要域名(如www.linuxaid.com.cn, 地址202.99.11.120)解析权提供给CDN运营商,Linuxaid的域名解析记录只要把www主机的A记录改为CNAME并指向 cache.cdn.com即可。cache.cdn.com是CDN网络自定义的缓存服务器的标识。在/var/named /linuxaid.com.cn域名解析记录中,由:

www             IN      A       202.99.11.120
改为
www             IN      CNAME   cache.cdn.com.

2、CDN运营商得到域名解析权以后,得到域名的CNAME记录,指向CDN网络属下缓存服务器的域名,如cache.cdn.com,CDN网络的全局负载均衡DNS,需要把CNAME记录根据策略解析出IP地址,一般是给出就近访问的Cache地址。

Bind 9的基本功能可以根据不同的源IP地址段解析对应的IP,实现根据地域就近访问的负载均衡,一般可以通过Bind 9的sortlist选项实现根据用户端IP地址返回最近的节点IP地址,具体的过程为:

1) 为cache.cdn.com设置多个A记录,/var/named/cdn.com 的内容如下:

$TTL 3600
@       IN      SOA             ns.cdn.com.     root.ns.cdn.com. (
                  2002090201      ;Serial num
                  10800           ;Refresh after 3 hours
                  3600            ;Retry
                  604800          ;Expire
                  1800            ;Time to live
                  )
        IN      NS              ns
www     IN      A               210.33.21.168
ns      IN      A               202.96.128.68
cache   IN      A               202.93.22.13    ;有多少个CACHE地址
cache   IN      A               210.21.30.90    ;就有多少个CACHE的A记录
cache   IN      A               211.99.13.47

2) /etc/named.conf中的内容为:

options {
    directory "/var/named";
      sortlist {
#这一段表示当在本地执行查询时
#将按照202.93.22.13,210.21.30.90,211.99.13.47的顺序返回地址
          { localhost;
              { localnets;
                  202.93.22.13;
                  { 210.21.30.90; 211.99.13.47; };
              };
          };
#这一段表示当在202/8地址段进行DNS查询时
#将按照202.93.22.13,210.21.30.90,211.99.13.47的顺序返回地址
          { 202/8;
              { 202.93.22.13;
                  { 210.21.30.90; 211.99.13.47; };
              };
          };
#这一段表示当在211/8地址段进行DNS查询时
#将按照211.99.13.47,202.93.22.13,210.21.30.90的顺序返回地址,
#也就是211.99.13.47是最靠近查询地点的节点
          { 211/8;
              { 211.99.13.47;
                  { 202.93.22.13; 210.21.30.90; };
              };
          };
          { 61/8;
              { 202.93.22.13;
                  { 210.21.30.90; 211.99.13.47; };
              };
          };
      };
};
zone "." {
      type hint;
    file "root.cache";
};
zone "localhost" {
      type master;
      file "localhost";
};
zone "cdn.com" {
    type master;
      file "cdn.com";
};

  3、Cache在CDN网络中如果工作在服务器加速模式,因为配置里已经写明加速服务器的 url,所以Cache直接匹配用户请求,到源服务器获得内容并缓存供下次使用;如果Cache工作在客户端加速模式,Cache需要知道源服务器的IP 地址,所以CDN网络维护和运行一个供Cache使用的DNS服务器,解析域名的真实IP地址,如202.99.11.120 ,各域名的解析记录与未加入CDN网络之前一样。

  4、工作在CDN网络中缓存服务器必须工作在透明方式,对于Squid来说,需要设置以下参数:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

 

转载请注明:jinglingshu的博客 » web网站加速之CDN(Content Delivery Network)技术原理


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址