CDN是一个致力于使内容传输更快、更高效的针对web服务器的全局分布式网络。通过CDN来复制使这些内容可以在很多地方同时存在。
比较有名的CDN厂商有AKamari,Amazon Cloudfont以及Edgecast。
为什么CDN会存在?最根本的原因...获得更好的用户体验。而且第二层好处是可以使网络资源更有效的被利用。
CDN主要使用两方面的技术来实现:
保持重要的内容分布在多个全局的分布式数据中心,从而使重要数据离终端用户更近,也使得下载起来更快。
使用基于内容类型的服务端优化技术可以使用户以最高效的方式获取需要的内容。
首先让我们看一下通常情况下web服务器是如何向用户浏览器传输数据的。
用户发出请求来下载一个web页面,这通常是通过点击一个链接来请求。
用户浏览器发送一个请求到web服务器来请求相应内容。
web服务器开始回传所请求页面的所有内容,这通常包括许多独立的资源。
非常简单的东西。一般情况下,和用户请求相关的内容都会去同一个web服务器上请求,而请求者(如:浏览器)则不关心所请求内容的位置和类型。对于真正的大型网站来说也许会有一个负载均衡的web服务器池,但是再从一般情况来看,这些web服务器都在同一个数据中心。
但 是在简单的表象之下,还有很多事情要做。需要有一个DNS解析器来获取web服务器的ip地址。web服务器通常需要回传许多不同类型的内容到浏览器, 如:图片、JavaScript脚本、CSS、文本文件、视频以及页面包含的所有其他内容。一个典型的web页面会包含很多这样的内嵌资源而且都会发送到 浏览器--通常有超过60个不同的文件要读取,有时在一个请求中会包含超过100个资源文件!此外,有的请求为了能够渲染出所请求的内容还需要浏览器去做 一些额外的请求操作。
我们可以将所请求的内容分成以下几种不同的类型:
动态内容:这些内容是由web服务器通过如php,ruby或者java等web编程语言凭空生成的。
静态内容:这些内容通常是经常变化而且不需要生成。图片、CSS样式文件、javascript脚本文件都属于这类内容。
流媒体内容:视频或音频等需要浏览器来控制播放的文件。
这 些类型的文件区别太大以致于没有一个服务器能够很好的为所有类型的文件提供服务。每种类型的文件都有不同的要求和优化方式。动态内容需要占用服务器大量的 内存和CPU资源,却很少占用带宽;静态内容和流媒体内容恰恰相反,占用相对较少的内存资源,却占用很大带宽。如果非要在同一台服务器上来处理两个场景将 会使两方面都会变的更糟:web服务器一方面要加载动态内容需要的内存,另一方面为所需要的非动态内容做准备。至少对同一台服务器来说,这两方面不能同时 做到最好。
(未完,待续。。。)
看到这里有需要cdn的朋友加我QQ 3008557816