IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

CDN技术

PHPor 的blog 2011-02-22 07:38:58 累计浏览 4,899 次
本机暂存

    技术篇  

     概述  

     20世纪80年代以来,随着个人计算机(Personal  Computer)的不断发展和普及,一种全新概念的计算机网络逐步建立并迅速膨胀,最终成为今天大家所熟悉的、世界上最大的国际性计算机互连网 --Internet。人们在Internet上可以轻松地通过各种搜索引擎查找自己需要的信息,与世界各地的人通过E-mail等多种方式实现实时和非 实时的通讯。Internet是当今世界上最大的开放式计算机网络,它成功地将分布在世界各地的无数个计算机网络连接起来,大大提高了全球信息的流动,提 高了人们之间的通信交流。经过几十年的发展,从小到大,功能不断丰富,使用也越来越简便,同时新技术不断出现,继续推动着Internet的不断高速发 展。  

     内容分布网络--Content Distribution  Network(CDN)是构筑在现有的Internet上的一种先进的流量分配网络。该网络将网站原服务器中的内容存储到分布于各地的缓存服务器 (Cache  Server)中,通过网络的动态流量分配控制器,将用户请求自动指向到健康可用并且距离用户最近缓存服务器上,以提高用户访问的响应速度和服务的可用 性,改善Internet上的服务质量。由于内容分布网络可以有效地提高网络资源的利用效率,在提高ISP的广域网带宽利用率的同时提高用户的访问速度, 增加网站的服务可用性和抵抗黑客攻击的能力,因此受到广泛的重视,是一个正在兴起的并高速发展的技术产业。  

     CDN概念的提出是从1998年开始。当时美国麻省理工大学(MIT)的一批研究生通过分析当时Internet网络状况,提出了 一套能够实现用户就近访问的解决方案,最终设计并实现了其独有的系统,在此基础上于2000年建立了世界第一家提供商用CDN服务网的专业技术公司 --AKAIMA。该公司的网络遍布世界各地,目前共有超过10,000个各类服务器分布在66各国家的100多个网络中,为诸如 YAHOO!,CNN.COM等世界级著名公司提供CDN服务。  

     目前,国际上众多的知名厂商如Cisco、Nortel、F5  Network、Radware、ArrayNetworks等公司纷纷推出自己的CDN解决方案或产品。Nortel甚至预言将来的互联网将以CDN为 基础。根据调查,全世界在CDN产品方面的投入,2000年为1亿2千万美元左右,到2003年,这一数字将剧增至14亿美元左右;而用于CDN服务方面 的支出,在2000年仅为9千7百万美元,到2003年将超过20亿美元。  

原图已失效

     国外除了AKAIMA这样的独立的专业CDN服务提供商外,大型的IDC企业也纷纷加入到这个行业中,如国外著名的IDC-- Digital Island通过其遍布全美国的众多的数据中心,建立了其自己的CDN网络,将CDN服务作为一种增值服务向它的数据中心的客户提供。  

     中国的互联网从上世纪90年代末开始高速发展,但网络带宽远远满足不了用户数目的增加,不仅影响了网络服务质量,同时,也制约了流 媒体(Streaming  Media)等新业务的发展。正是基于这样的原因,从2000年底开始,中国的CDN产业逐步开始起步,出现了包?hinaCache等多家公司在内的 CDN服务提供商,大型数据中心如世纪互联数据中心有限公司也开始提供类似的服务。其中ChinaCache作为中国最早的CDN服务商,目前已经在全国 建立了超过26个节点覆盖全国的网络,每个节点都通过100Mbps-1000Mbps独享带宽接入骨干网。目前正在为包括搜狐(Sohu)、新浪 (Sina)、TOM.COM、21CN、可口可乐公司等著名ICP或知名企业的网站服务。  

     CDN的出现  

     现有Internet发展存在的问题  

     Internet是人类历史发展中的一个伟大的里程碑,人类正由此进入一个前所未有的信息化社会。Internet如此快速的发 展,每天都有很多网络连入Internet。虽然没有任何一个人或组织可以对Internet具有控制权,但大家共同遵守国际标准的通讯协议,各子网间相 互协作共享资源,实现相互间信息和数据发送及接收。  

     在传统的Internet网络的结构下,用户访问一个网站的的基本过程,如图2-1所示。  

原图已失效

     传统的访问模式虽然简单,但存在几个主要的问题,会严重影响Internet用户的访问效率和质量  

  • 用户在自己的浏览器中输入要访问的网站的域名www.domain.com  
  • 浏览器向本地DNS请求对该域名的解析  
  • 本地DNS将请求发到网站的授权DNS(Authoritative DNS server)  
  • 授权DNS将服务器的地址作为解析结果(IP地址)送给本地DNS  
  • 本地DNS再将解析结果返还给用户,同时将该域名的解析结果保存在内存中,并直接响应下一个用户的解析请求。直到相应的TTL(生存周期)过期,才再向网站授权DNS请求解析  
  • 用户得到IP地址后,就可以直接对网站进行访问
  •      传统的访问模式虽然简单,但存在几个主要的问题,会严重影响Internet用户的访问效率和质量  

  • 可用性低  
  • 可扩展性低  
  • 访问效率低
  •      目前困扰Internet的一个严重的问题是访问效率无法提高。Internet是一个开放的网络,在这个开放的网络上,访问和寻址都是通 过分布在网络上的众多的路由器来将包从一个网段传递到另一个网段,由于地域分布的广泛,用户对网站的访问必须经过许多路由器的转接,才能最终到达网站的 WEB服务器,中间可能要跨过多个ISP和网络。即使在理想情况下,路由器的每一次转接(HOP),都会造成一个延迟,虽然单个这样的延迟时间较少,但当 网络规模很大时,HOP数会大量增加,造成的延迟也会更加明显。而且,任何一个路由器的故障或者拥塞都可能造成访问的中断或者延迟,严重影响访问的质量。  

         不同网络之间的互联是通过对等点(peering points)连接在一起,这些互联点的带宽比较狭窄,也是导致Internet访问速度慢的一个重要瓶颈。  

         用户对网页的访问是通过HTTP协议向原服务器发出请求,这样用户要在浏览器上看到一个完整的页面就需要与原服务器的多次交互访问才行,使由于路由器转接引起的延迟对页面访问过程的影响成倍增加。图2-2说明了HTTP协议的访问过程。  

    原图已失效

         同时,IP协议中不同物理网络对帧大小的限制不同,使网页中的一个Object可能要被分解到更多个包中进行传递,进一步加大了路由器转接延迟引起的总延迟时间。  

    原图已失效

         从上面的计算公式可以看到,通过提高网络的带宽可以降低网页的响应时间,但要注意,网络中的瓶颈不一定是用户的接入点,而很可能是不同网络运营商之间的对等点。  

         对于同一个用户下载同一个页面,第一项即页面的大小与网络最小带宽的比值是基本一致的。第三项处理时间是指服务器和用户的PC机的 处理能力,该项随着网站服务器的负载而变化。所以网站的服务器处理能力越强,其响应时间相对也会更快,在相同条件下,公式的第二项将会对响应时间产生重要 的影响。从图2-2可以看到,当用户通过HTTP协议访问网站时,首先必须建立一个TCP连接,然后才能向WEB服务器发送GET请求,同时等待服务器的 响应。由于现在页面的设计越来越复杂,页面中的Object的数目往往多达30-50个,使往返次数增加。而每次往返时间则会因为经过的路由器的增加而增 加。所以缩短网站与用户之间的举例是提高访问速度的一个有效方法。即将用户要访问的内容推送到离用户最近的地方。  

        网站镜像  

         在CDN出现以前,为了能将网站的内容安置到离用户更近的地方,人们提出了网站镜像的解决方案,但它的应用同样存在几个重要的缺陷:  

  • 对用户不透明:

         网站在设立镜像站点后,必须要给每个镜像站点设立相应的域名,由于用户访问通常是直接访问其主站,因此必须在主站的显要 位置上放置各镜像站点的链接,这样用户才能访问到相应镜像站点。这样的设置增加了用户访问的复杂性。而且在镜像站点由于故障停机后,链接不能有效及时的修 改,导致部分用户通过链接对镜像站点的访问得不到服务,影响服务质量,  

  • 数据同步困难:

         传统镜像站点使用服务器,将原站点的全部内容通过定时同步的方式拷贝过来,同步周期长,不灵活。  

  • 镜像站点较少:

         由于设立镜像站点的周期长,技术要求高,维护监控费用高,一般只有较大的网站或公司才能在重要城市设立镜像站点,因此服务的范围有限。

  •     CDN的工作原理  

         CDN?ontent Distribution  Network),即内容分发网络,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户 可以就近取得所需的内容,从更本上解决Internet网络拥塞状况,提高用户访问网站的响应速度。  

         CDN的基本工作原理就是广泛采用各种Cache服务器,将这些Cache服务器分布到用户访问相对集中的地区或网络中,在用户访 问网站时,利用全球负载均衡技术(Global Server Load  Balance-GSLB),将用户的访问指向到离用户距离最近的工作正常的Cache服务器上,由Cache服务器直接响应用户的请求。如果Cache 服务器中没有用户要访问的内容,它会根据配置自动到原服务器去抓取相应的页面并提供给用户。因此一旦CDN网络正常运行后,内容的分布,用户访问的定位全 部是自动的。  

         图2-3是CDN网络工作原理的示意图。  

    原图已失效

         CDN网络的分类  

         虽然CDN的基本概念和服务本质上是一样的,但按照其服务目标客户群的不同,还是可以将其划分成3类,如表2-1所示  

                                                                                                                                                                                                                                                                                                                                                                         
    CDN分类目标客户CACHE安装的位置
    Internet类型覆盖型(Internet-Overlay)内容的拥有者或提供商多个数据中心(IDC),ISP的接入端,网络对等点
    对等型(Internet-Peering)内容的拥有者或提供商网络对等点上
    托管型(Internet-Hosting)内容的拥有者或提供商数据托管服务商的多个数据中心
    用户型(Subscriber)最终Internet用户ISP自己的接入端
    企业型(Enterprise)公司公司总部和分支机构所在地

         CDN系统主要组成部分  

         从概念上看,一个CDN的工作原理不是特别难于理解,因为CDN网络的建设并不依赖于非常复杂或难于理解的技术。但无论选择何种技术,要建立一个高效可靠的CDN,都需要至少5个基本部分组成。  

    原图已失效
  • 原始服务器

         为了便于管理和配置,CDN网络中各个节点一般都使用Cache服务器来保存用户频繁访问的网站内容,这些服务器中只保留一 个副本,因此对于网站来说,其内容必须要有原始存放的地方,所以要根据网站的大小用一个或多个服务器用来保存原始的WEB内容。大部分情况下,原始服务器 安装在IDC中,由内容提供商自己负责维护和管理。  

  • GSLB控制服务器

         CDN网络只有有效地解决了可扩展性和可用性才能称得上是一个有价值的解决方案,换句话说,如果由于内容 分布使服务变得缺少可靠性和缺少扩展的可能,就与CDN的初衷相违背了。GSLB控制服务器是一些专用的具有高可靠和高冗余性的设备,用来实现将流量指向 到那些正常工作的Cache服务器上,并在他们工作异常时及时将流量专走。这些控制器应该能够直接或间接地取得分布在各地的CDN节点中Cache服务器 的工作状态和性能,并能够判断用户的来源,以保证用户能被有效的分配到离其\'逻辑上\'最近最健康地节点上。  

  • 节点--Cache和本地负载均衡服务器(SLB)

         在各个节点上,Cache服务器扮演Web服务器的角色,这些机器保存着原始服务器上相应内容的副本以响应用户的请求。

         有 两种方式可以实现将内容分布到各节点的Cache上,一种是\'拉\'的模式,在这种方式下,Cache在刚开始的时候什么内容都没有,在接受用户的请求后, 才代替用户到原服务器去抓取内容,同时保存一份副本在本地。\'推\'的方式是指将预先指定的内容通过专门的方式传送到CDN网络中所有的或指定的Cache 服务器上,这种方式的优点是第一个用户也能得到很好的服务,但由于这种服务需要对内容进行相对复杂的控制和管理,所以一般只对最有用的内容采取这种方式。 事实上在实际CDN网络的环境中,\'拉\'和\'推\'这两种方式一般都会混合使用。

         在每个节点上,一般都会有多于一个Cache服务器用于提供不同 的服务或提高每个节点的处理能力,例如,有的Cache服务器专门用来支持HTTP服务,有的专门支持FTP服务,有的提供流媒体服务。所以需要一个本地 负载均衡控制器(Server Load Balancer)来实现流量分配的功能。  

  • 内容管理系统

         CDN网络本质上是一个\'内容的网络\',因此对内容的管理是一个复杂的任务,无论是采用\'拉\'或\'推\'的方式, 都需要预先做许多判断,如哪些内容可以缓存,哪些内容可以缓存多久或哪些内容根本不能保留在Cache服务器中,必须直接回原服务器。这些都很依赖于内容 提供商提供的内容和目标的客户群。虽然许多传统的内容管理工具或软件能够实现对内容的管理,但主要是针对传统的Web服务器,但与CDN内容管理有这本质 的区别。对于Internet CDN网络,一个完善和稳定的内容管理系统更是网络成功的关键。  

  • 网络监控管理系统

         每个CDN网络都需要有一个网络监控和管理中心,这和任何一个系统或网络都需要网管中心一样。这是保证整个系统正常运转的关键。

         由 于CDN网络是一个分布式系统,如何实现集中监控是保证系统可靠、稳定运行的重要因素,网络监控系统,必须要能够实现分布检测,集中告警,保证能够在第一 时间发现故障并定位故障。而且由于CDN网络是一项内容服务,因此在监控网络连通性的同时,还要对应用层的各项服务进行监控,如各节点的Cache服务器 是否可以正常工作,工作状态如何,Cache的命中率有多高等进行监控。

  •      GSLB控制器实现技术  

         全球负载均衡技术(GSLB,Global Server Load  Balance)是一种将SLB的概念扩展到广域范围的技术,与SLB在一个单独的节点上为一组服务器提供负载均衡服务不同,GSLB提供了一种对多个、 并且地域上不在一起的服务器群(节点)提供提高服务可用性的服务,其最终目的就是为了增加服务的可用性和提供更高的性能。GSLB在实现上可以分为两个方 面,一方面是如何实现将用户的请求指向到选定的节点上,一方面是研究如何确定最佳的节点。  

         用户请求重定向的方式  

         实现用户请求指向到选择的节点的方式主要有3种,分别是:  

  • 基于HTTP重定向  
  • 基于DNS的解析  
  • 基于路由协议
  •      基于HTTP重定向  

         在实现将用户的访问指向到需要的另一个地方的所有方式中,HTTP重定向是一种最直观的方式,HTTP协议中定义了一种方式允许 WEB服务器在响应用户请求时包括一个重定向的错误码(302)同时包括重定向的URL。这些信息通知浏览器必须要到新的URL上才能取得所需的信息。这 样,用户的访问就能被有效地引导到一个合适的节点上。图3-1显示了其工作过程。  

    原图已失效

         实现的具体流程如下:  

  • 用户在自己的浏览器中输入vwww.domain.com  
  • 到本地DNS请求域名的IP地址  
  • 本地DNS到domain.com的授权域名服务器解析  
  • 授权域名服务器返回解析结果  
  • 浏览器向服务器A发出HTTP请求  
  • 服务器发现自己不是最佳的服务器,返回的响应是重定向到wwwB.domain.com  
  • 用户通过域名解析重新定位wwwB.domain.com的地址  
  • 最终到最佳的服务器上抓取网页的内容
  •      使用HTTP重定向方式的最大优势在于GSLB控制器可以直接得到用户的真实的IP地址,并可以以此为基础来选择离用户最近的节点。但在实 际应用中,需要考虑以下几个潜在的问题。第一,用户访问时需要两次域名解析的过程,因此在真正取得所要访问内容前的延迟比较大;第二,只适用于HTTP服 务;第三,用户在浏览器中看到的链接会由于分配的节点不同而不同,有时会使用户感到迷惑;第四,由于所有的HTTP请求在真正到达最佳节点前都要到 GSLB控制器,因此,GSLB控制器可能成为网络的瓶颈而影响整个网络的性能。  

         基于DNS解析  

         用户在访问网站之前,都需要通过DNS服务器将域名解析成IP地址,再发起真正的HTTP请求,因此可以通过在DNS中修改配置, 来实现用户的重新指向。在实现上可以有两种方式。一种是直接利用BIND  DNS自有的RTT测试时间来实现,一种是在负责实现GSLB功能的DNS中设置所有节点的VIP,然后根据用户的位置和当时网络的情况将域名解析到一个 或多个VIP上。基于DNS解析实现GSLB的工作流程如下:  

    原图已失效
  • 用户在自己的浏览器中输入要访问的网站的域名www.domain.com  
  • 浏览器向本地DNS请求对该域名的解析  
  • 本地DNS将解析请求发到ICP的授权域名服务器(Authoritative  DNS),授权域名服务器通知本地DNS,相应频道的别名是www.sub-domain.domain.com,并且sub- domain.domain.com的的授权域名服务器已经是GSLB控制器  
  • 本地DNS向GSLB控制器发出域名解析请求  
  • GSLB控制器根据预设策略,选择最佳节点,并将结果(IP地址)返回本地DNS  
  • 本地DNS将对应的IP地址发给用户  
  • 用户向最佳节点发出请求  
  • 节点中的Cache服务器响应用户的请求,提供相关内容
  •      通过路由协议实现GSLB  

         要实现这种方式,必须在每个节点都配置同样的VIP地址,每个域名在DNS中的A记录只对应一个IP地址,利用路由协议本身具备的最佳路径的算法,就能将请求指向到最佳的站点上。图 3-3显示基于路由协议的GSLB是如何实现的。  

    原图已失效

         在这种方式下,A、B两个节点分别位于不同的地方,但有同样的VIP,即IP地址,并与路由器相连,在这里,路由器必须要能够通过 ARP(Address Resolution  Protocol,地址解析协议)看到这个VIP,即应该能够PING通这个地址,由于这个VIP可用,路由器知道如何通过自己,将包发给这个IP地址, 同时它会将这个路由信息通过路由协议在网上传播并最终到达位于网络边缘的路由器A和B。这时,即使这两个节点都是同时可用的,对于路由器A和B来说就像是 到同一个点有2条路由路径,不会影响路由器的正常工作。  

         当用户对网站的访问到达一个路由器,如A。路由器A查看自己的路由表,以便确定如何将包发到目的地,他可能发现2个不同地路由,于 是根据路由协议算法决定一条最佳的路由,例如OSPF(Open Shortest Path  First),计算每条可用路径的路由开销并选择开销最小的,用户的访问将达A节点。  

         这种方式充分利用了路由器现有的动态选择路由功能,最大的优势就在于不需要专用的GSLB控制器就能实现GSLB功能。但是由于网 络上路由器的配置各不相同,如有的路由器可能会配置成在同时有多个路由路径时会在这多个路径上进行负载均衡,在极端的情况下将导致TCP的三次握手无法正 常的完成,从而影响用户的访问。因此这种方式一般是在一个较小的ISP网络中,CDN网络的建设者必须对ISP网络非常了解,并应该清楚地知道网络上的路 由器采用的路由协议配置才有可能保证CDN网络服务的可靠和安全。  

         选择最佳节点基本原则  

         在Internet上,网络环境瞬息万变,所以GSLB控制器在某一时刻决定某一个用户请求需要被指向到某个节点,在下一时刻可能 同样的用户请求会被指到与刚刚访问的节点在物理上相距非常远另一个节点上。这些都是由GSLB设定的选择节点的策略决定的。无论GSLB控制器的选择最佳 节点的策略或算法是什么,它在做出判断之前都必须要对CDN网络中的各种数据进行搜集和整理,当任何一个用户的请求到达时,再根据这些信息做出决定。  

         CDN网络是一个分布的网络,对于一个运营级的Internet  CDN,网络可能有几十个甚至上百个节点,但只有几个GSLB控制器来实现全局的控制,因此对于GSLB控制器来说,主要的处理能力是放在控制策略和算 法,并将搜集到的信息进行整理,而具体的对信息的搜集和探测一般都会由每个节点的代理(Agent)来完成。代理与GSLB控制器之间通过专用接口协议传 递信息。在实际的CDN网络中,这种代理通常都安装在各个节点本地的SLB上。  

         虽然网络上的数据多种多样,信息搜集和探测的方式也很多,但GSLB控制器在选择节点时有几个基本原则是必须遵循的。  

         服务可用性原则  

         由于GSLB控制器的目的就是要在复杂的网络环境中实现系统(或服务)的最大可用性,所以选择节点的一个基本要求就是服务必须是可 用的。对GSLB控制器来说,最重要的是需要持续地监控节点的健康情况并只将用户指向到那些可以提供服务的节点。这部分工作可以依赖于各节点的SLB设 备,因为这些设备具备检测服务器工作状态的能力。所以只要在GSLB设备和SLB设备之间建立有效的接口,保证信息的传递就能够解决这一问题。当 然,GSLB设备本身也可以直接对服务器的工作状态进行探测,从2、3层到第4层,甚至第7层。如GSLB设备可以简单地发一个Ping的请求到相应的节 点,检查网络环境是不是通畅,也可以发一个HTTP请求,看服务器返回的状态代码是否是\'200 OK\',以此决定服务器的工作状态是否正常。  

         节点负载状态  

         这个原则也是很容易理解的,由于每个节点有不同的容量和当前的负载状态,如果将用户的请求指向到负载已经很重的节点上,即使用户到 节点的跳数(Hop)少,也有可能导致由于节点超负载而影响服务质量。因此GSLB控制器可以将这两个值比率作为一种加权值,在选择节点时考虑进去。为了 能够测量节点的负载状况并把它考虑进去,GSLB控制器必须了解节点能够承载的最大容量以及当前的负载,将下一个请求发送到有更多可用资源的节点上。  

         就近分配  

         首先要明确的一点是在这里所说的就近指的是\'逻辑\'上的近,如两点之间Ping的延迟时间短,两点之间经过的路由器跳数少等。而不是指广州和湖南之间的距离比广州到上海的距离近。虽然在实际情况下物理距离近的两个地方其\'逻辑\'距离通常也会比较近。  

         要实现就近分配,就必须要了解每个节点与用户之间的距离,可以有两种方式来确定:  

  • 静态IP段划分

         在Internet上,每个设备都有一个IP地址,IP地址是由一些专门的机构来管理的。在世界范围内,IP地址被分配 到不同的国家和大洲,一块地址由Asia Pacific Network Information  Center(APNIC)管理并分配给亚太地区的用户,一块地址被保留给American Registery for Internet  Numbers(ARIN) 供南北美洲的用户使用。而Reseaux IP Europeens Network Coordination  Centre(RIPE NCC)则管理着另一块地址为欧洲和非洲服务。

         当GSLB控制器在选择就近站点时,首先能得到用户的IP地址或代表用户请求DNS解析的本地DNS的IP地址,然后GSLB控制器就能够使用这个IP地址与已知的按区域划分的地址块进行匹配来选择不同的节点。如用户的地址在北京地区的地址块中,就将用户指向北京节点。  

  • 动态选择就近的节点

         由于Internet上网络环境的变化是非常频繁的,用户可能分布在世界的任何一个角落,因此在测量用户 与节点之间的距离及响应时间时都只能以统计的方式来实现,即只能按一定的时间间隔和频度来采样。同时,由于\'用户\'的数量非常大,无论是对代表用户的 DNS还是对用户都不可能作到完全探测,只能假设某一IP段的用户是在同样的网络环境中,如假设一个C段的IP是具有相同的网络环境,到同一个节点具有同 样的\'逻辑距离\'。

         目前,测量用户与节点的\'逻辑距离\'有两种方式,一种是用设备进行探测(Probing)的方式;另一种就是所谓的\'赛跑\'(Racing)方式。

  •      CDN服务的内容  

         CDN网络是一个分布的网络,分布于各地的节点大量利用Cache服务器将内容缓存在本地,以提高用户的访问效率和网络的容量。  

         相对于传统的路由和网络交换技术,CDN是一个全新的领域,技术的发展日新月异,服务的内容目前已经不仅仅局限于HTTP协议和基本静态内容。下图说明了CDN服务的发展基本趋势。  

    原图已失效

        图4-1 CDN服务发展趋势

         静态Cache服务器工作原理  

         Cache服务器通过存储用户需要经常访问的内容来提高响应时间及节省网络的带宽。当一个用户在自己的浏览器中输入 http://www.domain.com并最终到达Cache服务器时,如果这是Cache收到的对这个页面的第一个HTTP的请求,由于Cache 服务器内没有这个内容,所以会直接向原服务器请求内容,并将内容保存在本地,如内存和硬盘中,同时将相应的页面响应给用户,当第二个用户请求同样的内容 时,Cache服务器检查后发现内容已经保存在本地,因此立即响应用户而不用回原服务器去取,第二个用户将得到比第一个用户更快的响应时间,同时,由于 Cache服务器没有通过Internet回原服务器去取,也节省了带宽。  

    原图已失效

         通常情况下,一个WEB页面包括很多个内置的对象(Embedded Objec),如小按钮或图片,作为页面内容的一部分,浏览器需要分别取得每个对象,才能组装和显示完整的页面,这时,Cache服务器也需要能够分别缓存这些对象。  

         Cache服务器能根据用户的请求,自动到原服务器去抓取内容,并保存在本地,这是与传统的镜像服务器工作原理上的一个重要区别, 它极大地减轻了数据同步地工作量。另外,Cache服务器还能够在硬盘容量满的情况下,自动将访问频度相对较低的内容删除掉,以保留最新的和访问频度较大 的内容,这样,可以更有效地提高硬盘资源的利用率。  

         流媒体内容的缓存技术  

         流媒体基本介绍  

         流媒体(Streaming  Media)是一种可以使音频、视频和其它多媒体能在Internet或Intranet上以实时的、无需下载等待的方式进行播放的技术。流媒体文件格式 是支持采用流式传输及播放的媒体格式。流传输方式是将视音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。 在采用流传输方式的系统中,用户不必像非流式播放那样等到整个文件全部下载完毕后才能看到当中的内容,而是只需经过几秒或几十秒的少量缓冲时间即可在自己 的计算机上利用相应的播放软件对压缩的视、音频等流媒体文件进行播放,流媒体文件的剩余部分将在播放的过程中继续下载,实现播放与下载的同步进行。  

         常用流媒体格式介绍  

         由于不同的公司发展的文件格式不同,传送的方式也有所差异,因此,我们必须非常清楚各种流媒体文件的格式。  

         到目前为止,互联网上使用较多的流媒体格式主要有美国Real Networks公司的RealMedia、微软公司的Windows Media和苹果公司的QuickTime  

                                                                                                                                                                                                                                                                                                                                                                     
    流媒体格式控制协议数据传输协议下层传输协议
    Real NetworkRTSPRDTTCP或UDP
    WMTMMSMMSTTCP
    WMTMMSMMSUUDP
    QuickTimeRTSPRTPUDP或TCP

         工作模式  

         根据流媒体播放的性质不同,流媒体Cache服务器可以工作在两种模式下,一种是流媒体直播,一种流媒体点播。  

  • 流媒体直播

         在进行流媒体直播时,无论使用UDP或TCP进行传输,第一个用户请求到达流媒体Cache服务器后,它会与原服务器建立一 个数据流通道,服务用户。当有新的用户来请求同样的内容时,流媒体Cache服务器会自动地将原来的数据流分拆(Splitting),同时给后续的用 户,而不需要从原服务器提取任何多于的流。同时在流媒体直播完成后,流媒体Cache服务器中并不保留直播的内容。  

  • 流媒体点播

         流媒体Cache服务器可以支持对流媒体内容的点播工作模式,在这个模式下,当流媒体Cache服务器收到一个用 户请求后,它判断这个内容是否可以缓存,然后检查请求的内容是否已经在自己本地,如果媒体文件不在,流媒体Cache服务器向原服务器请求内容,同时将流 发给请求的用户后续的对同一个媒体文件的请求都直接由流媒体Cache服务器提供内容,而不需要到原服务器取。  

  • 4.2.4 版权保护

         DRM(Digital Rights  Management)技术是流媒体内容发展的一个新趋势,提供内容加密管理、数字许可证管理等功能,是对在线传播及离线数字媒体内容进行版权保护的全套 解决方案,通过CDN网络,内容提供商可以方便地对各种音乐、图象等媒体文件进行加密保护,使受保护的多媒体文件不会被用户非法的屏拷和复制,同时利用 CDN网络运营商丰富的网络和设备资源,将内容推送到离用户最近的地方,提高了用户的访问质量。对于受保护的媒体文件,用户即使拷贝到其他机器,也无法正 确使用

         当客户使用了DRM技术后,可以控制每个用户对每个流媒体文件的使用权限,如,控制流媒体文件可以被用户播放的次数,在什么时间端内被播 放,从而保证用户只能在数字内容提供商规定或用户自选的付费方式下播放数字内容。而且如果用户试图通过修改计算机时间来绕过播放时间限制将会使已经购买的 播放许可失效,彻底杜绝了对流媒体文件的非法使用。

         实现的基本原理框图如下:        原图已失效

  • 将需要保护的内容进行打包,加密。使文件中包含着取得解密密钥的服务器的URL地址  
  •         
  • 将加密的文件通过网站进行发布  
  •         
  • 用户可以自由地将其下载到自己的计算机上  
  •         
  • 在播放之前,媒体播放器会自动连接到文件预先指定的DRM服务器上,选择所要购买的权利,如半个月内可以播放3次  
  •         
  • 取得相应的密码  
  •         
  • 通过取得地密码,用户就可以播放了
  •         

         动态内容的缓存技术  

         任何一个Web网站的内容都是在不断更新和变化,但这并不意味这这个网站的内容就是动态内容,事实上,动态的内容是指用户每次点击 相同的链接时取的的内容是由Web服务器应用程序生成的,如常见得ASP,JSP等,与此相对应,静态内容一般就是指由文本、图像和多媒体组成,在用户每 次单击相应链接时基本保持不变。现在解决动态内容缓存的最新技术就是通过ESI技术来设计网站的内容。  

         ESI技术工作原理  

         动态生成的内容能为用户带来丰富精彩的页面,网站开发者也可以更容易和更灵活地控制相关的内容,但在享受这些便利的同时,也增加了 网站数据库和应用服务器的处理压力的。当网站的访问量增大后,硬件和数据库的投资是非常巨大的,即使如此,仍然有可能导致页面的严重延迟甚至访问失败。  

         用户访问动态生成的内容速度慢的根本原因在于动态生成的内容需要经过一个复杂的过程,首先,根据用户请求的不同将用户的请求分配到 应用服务器相应的软件模块中,软件模块必须通过运算决定需要从数据库中提取什么样的数据给用户,然后再从数据库中提取出相应的数据按照定义的格式传给用 户。这些冗长的过程导致用户访问速度变慢,同时增加了服务器的负载。  

         在实际环境中,一个动态生成的页面,当中可能只有少量的内容是频繁变化的或是个性化的,对于传统的Cache服务器来说,为了能够 保证页面的时效性,却由于页面中这些少量的动态内容而无法将整个页面进行缓存。ESI(Edge Side  Include)通过使用简单的标记语言来对那些可以加速和不能加速的网页中的内容片断进行描述,每个网页都被划分成不同的小部分分别赋予不同的缓存控制 策略,使Cache服务器可以根据这些策略在将完整的网页发送给用户之前将不同的小部分动态地组合在一起。通过这种控制,可以有效地减少从服务器抓取整个 页面的次数,而只用从原服务器中提取少量的不能缓存的片断,因此可以有效降低原服务器的负载,同时提高用户访问的响应时间。  

         ESI是一种简单的标识语言,开发人员可以使用它标志内容片断以便通过相应的Cache服务器来加速缓存。同时ESI还定义了一套 内容效验标准,可以实现原服务器对Cache服务器中缓存内容的管理,提高了网站对内容的控制能力。CDN网络也可以利用在分布全国各地的节点中安装支持 ESI的Cache服务器来提供对网站动态内容提供CDN服务。  

         ESI的主要优点  

         ESI是一个开放的规范,在实际应用中有许多突出的优点:  

  • 公开的标准,可以保证遵循这个标准的不同厂家的设备之间可以兼容  
  • ESI在设计时就考虑了Cache服务器作为中间层,因此非常适合于CDN网络的应用  
  • ESI  Cache服务器在组合页面的时候,不用象Java服务器那样执行相应得Java代码来处理商业逻辑,因此在发送页面之前不用进行大量的计算、格式化页面 和从数据库提取数据操作,而只用将相应的片断组合在一起,因此在同等硬件条件下,比Java服务器处理的请求更多。  
  • ESI定义了完善的兼容机制,即使用户访问当中没有经过ESI Cache服务器而直接访问原站点,仍然可以完整地访问设计完善的ESI网站  
  • ESI提供了复杂地冗错控制,保证在原服务器出现故障地情况下,Cache服务器仍然能提供有效页面给用户  
  • ESI规定了内容效验的标准,使原服务器可以灵活地控制Cache服务器中缓存的内容  
  • 通过使用ESI技术,可以通过在Cache服务器中重新组合的方式,在保证内容新鲜的同时,实现对页面内容最大程度的缓存,提高用户访问时的响应时间  
  • 通过使用ESI技术,可以保证一些带有个性化信息的页面中的大部分内容能被Cache服务器缓存,而只有个性化的片断回原服务器去取,提高用户访问时的响应时间
  •      CDN技术的未来  

         随着网络技术的发展,现有的各种网络,如数据网、电信网、移动网、广播电视网都将融入下一代网络(NGN)--一个以IP为基础的 覆盖各种资源的网络。到了那个时候,网络上的应用将更加丰富,同时只有将用户需要访问的内容尽可能分布到离用户最近的地方才能有效地提高网络的利用率,为 用户提供更高品质的服务,而这些都为CDN提供了无限的发展空间。  

         同时,各种国际标准化组织也不断推出新的技术和协议标准,保证了CDN支持的应用服务的发展,如前面提到的ESI技术的出现和发 展。此外,如RUP(Resource Update Protocol)、OPES(Open Pluggable Extension  Services)、iCAP(Internet Content Adaptation Protocol)  等协议标准的出项,将使CDN能支持更多更丰富的应用服务如内容过滤、广告插播等。  

         可以肯定,CDN技术将随着网络技术的发展而不断的前进,并成为Internt及将来NGN网络中不可分割的一部分。

        原文链接: http://blogold.chinaunix.net/u2/66732/showart_545835.html

        ================================

        相关参考:

        http://idc.spforum.net/info/xinwen/Content.asp?iID=27620

        http://www.techweb.com.cn/internet/2011-01-12/740419.shtml

    同分类推荐文章

    1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
    2. Go 实验特性详解 (2026-06-21 10:05:27)
    3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

    查看更多 后端 文章 →

    建议继续学习

    1. 淘宝图片存储架构 (累计阅读 10,960)
    2. 从谷歌宕机事件认识互联网工作原理 (累计阅读 8,746)
    3. 使用.htaccess 开启gzip 缓存文件 网页 提高速度 (累计阅读 7,602)
    4. web应用应该考虑的一些问题 (累计阅读 7,231)
    5. 谈冷热数据 (累计阅读 7,005)
    6. 基于Squid的视频业务日志分析 (累计阅读 7,003)
    7. Craigslist 的数据库架构 (累计阅读 6,701)
    8. 移动互联网创业公司的服务器选择 (累计阅读 6,304)
    9. 当网站使用CDN后获取客户端真实IP的方法 (累计阅读 5,970)
    10. php-erlang (累计阅读 5,267)