在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的信息,彻底解决网络拥塞,提高响应速度,是目前大型网站使用的流行的应用方案.
我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别:
由上图可见,用户访问未使用CDN缓存网站的过程为:
CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据
下面让我们看看访问使用CDN缓存后的网站的过程:
通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:
通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问,需要使用DNS(域名解析)来引导用户来访问Cache服务器,以实现透明的加速服务. 由于用户访问网站的第一步就是 域名解析 ,所以通过修改dns来引导用户访问是最简单有效的方式.
对于普通的Internet用户,每个CDN节点就相当于一个放置在它周围的网站服务器.
通过对dns的接管,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求.
由于它离用户更近,因而响应时间必然更快.
从上面图中 虚线圈起来的那块,就是CDN层,这层是位于 用户端 和 站点服务器之间.
智能调度DNS是CDN服务中的关键系统.当用户访问加入CDN服务的网站时,域名解析请求将最终由 智能调度DNS 负责处理.
在系统中,执行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服务商) 去跳转到 智能调度器上的.
在系统中,继续执行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服务商的域名上.
在用户请求解析域名的时候,智能DNS判断用户的LocalDns的IP,然后跟DNS服务器内部的IP表范围匹配一下,看看用户是电信还是网通用户,然后给用户返回对应的IP地址
这里使用的是静态拓扑的方法,只是判断LocalDns的IP.要想使用更复杂的调度算法可以考虑商业产品,如F5的3DNS.
在这里我们将使用 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 |
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"; }; };
这4个zone配置文件(cnc_cdntest.zone,tel_cdntest.zone,edu_cdntest.zone,default_cdntest.zone)中,只有www.cndtest.com的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的语法 请参考互联网.
说明:再此过程中,我们简化了主DNS 到 智能DNS 之间的CNAME过程(为了简要说明问题).
在建立CDN网路时,最关键的就是 智能调度DNS,这个是CND网络总协调,通过高效的调度算法,可以使用户得到最佳的访问体验.
其次就是 CND节点的管理,比如涉及到 内容的同步机制,配置文件的更新等等,都需要有一套机制来保证.
当然在大型网站中,也要考建设CDN体系的成本和回报率.
转自:http://www.51know.info/system_performance/cdn/cdn.html
CDN(Content Delivery Network)即内容分发网络。通过在现有的Internet中增加一层新的网络架构,部署边缘服务器,将网站的内容发布到最接近用户的Cache服务器,使用户可以就近取得所需的内容,实现用户就近访问,有效提升网站的访问效果、安全性和稳定性。
CDN的实现需要依赖多种网络技术的支持,其中负载均衡技术、动态内容分发与复制技术、缓存技术是比较主要的几个,下面让我们简单看一下这几种技术。
---- 负载均衡技术
---- 负载均衡技术不仅仅应用于CDN中,在网络的很多领域都得到了广泛的应用,如服务器的负载均衡、网络流量的负载均衡。顾名思义,网络中的负载均衡就是将网络的流量尽可能均匀分配到几个能完成相同任务的服务器或网络节点上,由此来避免部分网络节点过载。这样既可以提高网络流量,又提高了网络的整体性能。在CDN中,负载均衡又分为服务器负载均衡和服务器整体负载均衡(也有的称为服务器全局负载均衡)。服务器负载均衡是指能够在性能不同的服务器之间进行任务分配,既能保证性能差的服务器不成为系统的瓶颈,又能保证性能高的服务器的资源得到充分利用。而服务器整体负载均衡允许Web网络托管商、门户站点和企业根据地理位置分配内容和服务。通过使用多站点内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。
在CDN的方案中服务器整体负载均衡发挥着重要作用,其性能高低将直接影响整个CDN的性能。如图所示的全局调度服务器就可以看做一个服务器全局负载均衡。它根据网民的位置决定CDN系统哪个Cache服务器为网民服务。在使用CDN服务的时候,全局调度服务器可以进行智能域名解析,网站需要将原来的域名CNAME到全局调度服务器智能解析的域名上,这样CDN的工作就做到了对网民的透明,网民可以访问到部署在边缘的Cache服务器。
具体到一个Cache节点,对网民看是一个的服务个体,其实内部实现也是一个服务器负载均衡。当单台服务器不能满足该地区的Cache业务时,负载均衡器扮演了重要角色,它将Cache服务集群联系到一起,其服务能力也是多台Cache服务能力的总和。
---- 动态内容分发与复制技术
---- 大家都知道,网站访问响应速度取决于许多因素,如网络的带宽是否有瓶颈、传输途中的路由是否有阻塞和延迟、网站服务器的处理能力及访问距离等。多数情况下,网站响应速度和访问者与网站服务器之间的距离有密切的关系。如果访问者和网站之间的距离过远的话,它们之间的通信一样需要经过重重的路由转发和处理,网络延误不可避免。
为了避免网络延误,就需要一个有效的方法将占网站主体的大部分静态网页、图像和流媒体数据分发复制到各地的加速节点上。同时在国内又有南北互联的问题,电信联通间的访问速度非常不好,所以动态内容分发和复制技术显得更为必要,因此动态内容分发与复制技术也是CDN所需的一个主要技术。
---- 缓存技术
---- 缓存技术已经不是一种新鲜技术。Web缓存服务通过几种方式来改善用户的响应时间,如代理缓存服务、透明代理缓存服务、使用重定向服务的透明代理缓存服务等。通过Web缓存服务,用户访问网页时可以将广域网的流量降至最低。对于公司内联网用户来说,这意味着将内容在本地缓存,而无须通过专用的广域网来检索网页。对于Internet用户来说,这意味着将内容存储在他们的ISP的缓存器中,而无须通过Internet来检索网页。这样无疑会提高用户的访问速度。CDN的核心作用正是提高网络的访问速度,所以,缓存技术将是CDN所采用的又一个主要技术。
如图示,各地的Cache服务器保存着源站静态内容的一份有效拷贝,网民无需直接访问源站,就可以在离自己最近的Cache服务器上获得新鲜正确的内容。目前缓存服务器可以有多种选择,大名鼎鼎的squid,还有ngnix(ncache),vanish都可以用作Cache服务器。Cache服务器的主要工作提高内容HIT率,使得大多数的访问都能在Cache设备获得,而不用MISS回源去取.技术要点是过期机制等内容更新管理,此外Cache服务器可以将源站的一些功能分担出来,实现起来更加灵活。
综上,CDN 从技术上解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题,关注全国范围内不同网络中的用户都能得到优质的访问质量的网站可以采用CDN 来提高网站的体验水平。