在第1章中已经讲到,CDN的发展与互联网的发展相辅相成,互为推手。从技术演进过程来看,互联网应用的每一次突破都要求CDN技术产生与之相适应的发展变革,因而CDN加速服务技术经历了从静态网页到动态网页,再到流媒体和今天的云计算这样的演变和拓展过程;而CDN技术的发展反过来也帮助互联网提高网站访问速度、带给用户更好的服务和上网体验,促进互联网生成更多更新的应用形态。二者的相互促进使CDN逐步成为互联网的一项重要的基础性服务,同时也不断产生出新的产品和服务类型。目前,从主流的CDN运营商来看,至少都可提供十几种到二十多种基础服务和产品,令人眼花缭乱。不过从技术角度分析,我们可以归纳出一些基本类型的CDN系统和服务,其他产品和服务都是从这些基本的服务类型衍生出来的。
可以从两个角度来对CDN基本服务进行分类,一是基于不同内容承载类型视角,二是基于不同内容生成机制视角。
从CDN承载的内容类型来看,主要有静态网页内容、动态网页内容、流媒体、下载型文件和应用协议,因而我们将CDN服务分为网页加速、流媒体加速、文件传输加速和应用协议加速。
网页加速是最早出现的CDN服务类型,伴随着第一次互联网浪潮,大量网站涌现,而当时用户以窄带接入为主,网页的内容也主要以文字、图片、动画等形式为主,支持文本方式的电子邮件交换,因此CDN技术最初的应用重点就是用来对这些网页的静态内容进行加速。CDN服务商通过将网页内容缓存到各个CDN节点上,并将用户请求调度到最优节点上来获得所需的内容,从而加速页面响应速度,减轻源站点的访问负担。这种网页加速服务主要面向各类门户网站、新闻发布类网站、访问量较大的行业网站、政府机构网站和企业门户网站等。随着Web 2.0的兴起和互联网应用的丰富,网页加速也逐渐从静态内容加速向动态内容加速扩展,支持股票行情、电子商务、在线游戏等网站的动态内容加速。
从2002年开始,以ADSL为主的宽带接入技术被运营商普遍采用,用户的主流接入带宽提升到1MB或2MB,这一带宽水平已经能够支持网络视频业务,因此大量视频网站涌现,流媒体流量迅速跃升为互联网流量主力军。CDN技术的应用重点逐步转向流媒体加速,关注视频文件的全网缓存、调度,用户播放器动作响应等。
流媒体加速的实现是通过将流媒体内容推送到离用户最近的POP点,使得用户能够从网络边缘获取内容,从而提高视频传输质量,缩短访问时间,节省骨干网络流量,避免单一中心的服务器瓶颈问题。流媒体加速服务又可以分为两类:
●流媒体直播加速。直播(Live)与电视台或电台现在追求实效的现场直播方式一样,电视台或电台正在播放的节目或现场实时制作的直播节目可以在互联网上以流媒体的方式同步传输。网络电视曾经是一项非常受欢迎的服务,P2P技术也是在流媒体直播业务的催生下红极一时。
●流媒体点播加速。流媒体点播(On-demand)是流媒体在互联网上播放的另一种方式,它将流媒体以内容类别、版本等为索引按片段存放在服务器上,用户根据需要或感兴趣的内容选择播放。它与直播方式的最大区别在于,用户不受电视台播放节目时间和内容的限制,在自己合适的时间观看自己想看的内容。
文件传输加速服务一直是一项重要的CDN服务,通过使用CDN的分布式POP点提供下载服务,网站可以将大量文件下载的性能压力和带宽压力交给CDN来分担,提高用户的下载速度。目前CDN技术可以支持HTTP下载、FTP下载和P2P下载等各种下载方式,主要用于软件厂商的补丁发布、杀毒软件厂商病毒库更新、网络游戏运营商的游戏客户端下载以及其他提供文件下载服务的网站,比如音乐网站等。
另外,目前一些领先的云计算服务提供商,如Amazon、微软等在向用户提供云主机、云存储等服务时,也同时推出了CDN文件传输加速服务,主要是对在云中托管的站点或内容进行传输加速。
应用协议加速并不针对特定的内容类型进行加速,而是通过对TCP/IP等传输协议的优化,改善和加快用户在广域网上的内容传输速度,或者对一些特定协议,如SSL协议进行加速,解决安全传输时的性能和响应速度问题。主要的应用协议加速服务有如下几种。
●广域网应用加速。其目的是“让广域网像局域网一样”,这实际上有两方面的意思:1)使广域网的性能产生质的飞跃,尤其针对那些在局域网上可以正常运行,但一到广域网就受到极大影响的应用和协议,比如CIFS协议、NFS协议。2)能处理多种分布式企业网络环境下的各种应用和协议。广域网应用加速的目的是在不改变远程用户使用习惯的前提下,将分布式的IT 基础设施如文件服务器、邮件服务器、网络附加存储(NAS)和远程办公室备份系统等集中起来,整合到统一的数据中心。这样,让企业位于世界各地的同事共享大型文件变得简单而高效,使他们感觉就好像在同一建筑里办公一样。广域网应用加速还支持通过长距离广域网链路进行文件备份与复制操作,在不升级带宽的前提下在现有的广域网上提供比以前丰富得多的应用服务。
● SSL应用加速。许多基于网络的重要核心应用都采用了SSL技术来保证服务的安全性和私密性。由于需要进行大量的加密解密运算,SSL应用对服务器端的资源消耗是非常巨大的。CDN提供SSL应用加速后,由CDN的专用SSL加速硬件来完成加密解密运算工作,通过认证之后方可建立起数据传输通道。用户的源站点只需信任有限的CDN cache,而无须面对海量用户,从而减轻了繁重的运算和认证压力。
●网页压缩。现在的网页中含有大量的Flash、图片等内容,文件体积比以前大得多,因此在HTTP 1.1协议中提出了对网页压缩功能的支持。在服务器端可以先对网页数据进行压缩,然后将压缩后的文件提供给访问用户,最后在用户的浏览器端解压显示。通过这种方式可以减少数据传输的时间,加快页面显示速度。CDN利用这种网页压缩技术,为网站提供网页内容的压缩传输,从而加快内容传送速度。
应用协议加速服务的出现和逐步发展完善体现了CDN演进的第三阶段:多应用协议加速。这一阶段是从2009年开始的,一方面用户接入带宽向4MB或更高水平发展,另一方面,运营商对3G业务的大规模部署极大刺激了移动互联网的发展。移动互联网业务呈现新的特征,终端类型多样化,这使得CDN需要适应协议的不断增加和变化,以传统方式提供加速业务已经无法满足要求。因此,CDN技术出现了应用和基础传输功能相分离的发展趋势,比如HTTP Streaming协议适配服务、云服务提供商(Amazon、微软等)提供的块传输服务等。
从内容的生成机制来看,互联网上的内容主要有两类:一是静态内容,二是动态内容。其中,静态内容主要是指内容完全由网页HTML文件提供,任何人在任何时间浏览静态内容看到的都是一样的东西。而动态内容是指不同的访问者或在不同时间访问同一个Web页面时可能得到不同的页面内容,内容具有实时性,访问的过程具有交互性。因此,动态内容的提供除了和静态内容一样需要网页外,还需要采用数据管理系统和业务逻辑程序来使网站具有更多自动的和高级的功能。
主流的Web网站系统都能够在逻辑上划分为三个层次,即表现层、业务逻辑层和数据访问层,如图2-5所示,不同的层次在系统中有不同的功用。
图2-5 主流Web系统分层架构
表现层是以Web方式为用户提供访问界面,主要负责接收用户的请求以及业务逻辑层处理结果的返回及展示;业务逻辑层主要是针对具体业务逻辑的处理,能够根据表现层传来的用户需求向数据访问层发出数据查询要求并将查询结果进行相应的整合,返回给表现层向用户展现;数据访问层主要是以数据库、文件系统等方式对原始数据进行保存和管理,并为业务逻辑层或表示层提供数据查询服务。
在一个Web系统中,不同类型的内容由不同的系统层保存和提供。通常与用户直接交互的表现层提供大部分静态内容,例如图片、Flash动画、多媒体文件以及部分静态网页片段等。而动态内容,就需要由业务逻辑层和数据访问层协作提供。其中,业务逻辑层是Web系统的核心层,负责处理所有的业务逻辑并生成动态内容。
了解了Web系统的分层架构以后,我们再回过头来看CDN的分类。CDN实现网页内容加速主要依赖于内容边缘缓存和功能复制两类机制,本质就是将Web源站各个层次上的功能转移到CDN边缘Cache上完成。根据CDN完成的不同层面的Web功能转移,将CDN分为表示层复制和全站复制两大类。
对于Web网站提供的各种类型的静态内容(不论是网页、文件还是流媒体数据),其加速都可以通过在边缘Cache上复制Web系统的表示层来完成。在实现中,CDN的Cache设备将以反向代理的角色接受用户发来的连接请求,然后在本地复制的数据表示层的静态数据中寻找满足用户需求的数据,直接反馈给用户。在Cache上命中的内容,则无须再向源站Web系统请求。这种情况下,Cache上缓存的内容通常是完整的Web内容实体,例如网页嵌入内容、多媒体文件等。现在大多数商用CDN系统采用的都是这类只处理静态内容请求的网站加速方案。
对于当前日益丰富的动态内容加速,需要在CDN上复制和缓存业务逻辑层和后台数据访问层。其中,业务逻辑层在CDN Cache上的复制使之能够承担用户请求处理、应用数据计算、动态内容生成等工作,因此这类方法也被称为“边缘计算”。将Web应用程序或应用组件直接安装在CDN Cache中,目的是在最接近用户的位置完成应用处理,同时也分担了源站的计算压力。在某些应用场景中,动态内容的生成需要大量的数据支持,比如目录服务、交易数据等,仅仅将业务逻辑复制到边缘服务器中还不足以解决从源站获取其生成动态内容所需的数据而造成的传输性能瓶颈,因此还需要对数据访问层进行必要的复制,即除了在Cache上完成业务逻辑的运算工作,还复制了源站后台数据访问层的内容,用以加速动态内容的生成。这个过程的关键在于合理解决系统中多个数据副本间的一致性问题。另外,还有一些网站的动态内容是基于具体用户的个性化数据定制生成的,需要在数据访问层对用户数据进行特别的关注。用户数据本身也是依托于数据访问层的存储介质和管理系统存在的,但在访问模式等方面具有独特性,因此CDN需要制订相应的复制和缓存策略,并解决相关的隐私和安全问题。也许这样的讲解仍然有些令人困惑,没关系,在本书的第7章还将深入讲解动态内容的生成和加速技术。