说说CDN技术

一、背景与基本概念:

 

从网络层面看,一个网站的体验好坏主要以下几个方面(这里只单独介绍网络环境对网站的体验好坏,一个网站的体验好坏除了网络层面还有很多的影响因素):

 

(1)网站服务器接入互联网的链路所能提供的带宽(出口带宽),这个带宽决定了用户的并发量和访问时延,用户越多,对出口带宽的要求就越高,当用户的并发量超过了带宽,就会导致出口网络拥塞,严重的影响用户的体验。

 

(2)不同运营商之间的互联问题,一般来说两个运营商之间只有两三个点是互通的,所有跨运营商之间的交互都要经过这几个点,可以想象一个使用电信的用户去访问部署在联通的网站,速度是有多么慢。

 

(3)长途骨干传输问题,从网站服务器到用户之间要经过网站所在的IDC、骨干网、用户所在城域网、用户所在的接入网等,物理距离非常远,导致传输时延非常高。

 

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

 

二、CDN工作原理:

1、传统访问过程(未使用CDN)

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

8) 站点服务器应答请求,将内容返回给客户端.

 

2、使用CDN后的访问过程

说说CDN技术

 

 

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

经过两幅图的对比,可以看到增加了CDN后可以让用户访问离自己最近的CDN节点,减轻了对源站的访问压力和带宽。

 

三、CDN关键技术


从这上述两幅图的对比可以看到,CDN将用户的请求路由到CDN节点上;将源站点的数据拉取到CDN节点上,并做缓存等,实现了对用户站点的加速,那么CDN如何实现这些功能点,CDN主要利用了四大关键技术(内容路由技术、内容分发技术、内容存储技术、内容管理技术)来实现。

1、内容路由

内容路由功能是由CDN负载均衡系统来实现的。它的作用是将用户的请求导向整个CDN网络中的最佳节点,最佳节点可以是最近节点,延时最低节点等等,负载均衡的准确性和效率直接决定了整个CDN的效率和性能。
通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。全局负载均衡(GSLB)主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域)。GSLB又可分为基于DNS(见下图)、基于HTTP重定向、基于IP欺骗的。基于DNS的GSLB主要是通过GSLB替代DNS服务器来完成IP解析,最终的CDN节点IP由GSLB给出;基于HTTP重定向的主要是用户通过DNS服务器得到的IP地址为GSLB的地址,请求到GSLB后,GSLB会重定向用户的请求到CDN节点;基于IP欺骗的主要是针对HTTP协议外的请求,DNS服务器返回的仍然是GSLB的地址,用户请求到GSLB后,GSLB会将用户的请求转发给对应的CDN节点。
说说CDN技术
基于dns的GLSB

本地负载均衡(SLB)一般局限于一定的区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务,因此,CDN节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要依据。

 

2、内容分发

内容分发是指将内容从源站发送到CDN边缘的Cache的过程。目前主要有两种主流的内容分发技术:PUSH(分发)、PULL(回源)

 

PUSH(分发)是一种主动分发的技术。通常,PUSH由内容管理系统发起,将内容从源或者中心媒体资源库分发到各边缘的Cache节点。分发的协议可以采用 HTTP/FTP等。通过PUSH分发的内容一般是比较热点的内容,这些内容通过PUSH方式预分发(Preload)到边缘Cache,可以实现有针对的内容提供。对于PUSH分发需要考虑的主要问题是分发策略,即在什么时候分发什么内容。一般来说,内容分发可以由CP(内容提供商)或者CDN内容管理员人工确定,也可以通过智能的方式决定,即所谓的智能分发。它根据用户访问的统计信息,以及预定义的内容分发的规则,确定内容分发的过程。

 

PULL(回源)是一种被动的分发技术,PULL分发通常由用户请求驱动。当用户请求的内容在本地的边缘Cache上不存在(未命中)时,Cache启动PULL方法从内容源或者其他CDN节点实时获取内容。在PULL方式下,内容的分发是按需的。
说说CDN技术

3、内容存储

对于CDN系统而言,需要考虑两个方面的内容存储问题。一个是内容源的存储,一个是内容在Cache节点中的存储。

 

对于内容源的存储,由于内容的规模比较大(通常可以达到几个甚至几十个TB),而且内容的吞吐量较大,因此,通常采用海量存储架构。

 

对于在Cache节点中的存储,是Cache设计的一个关键问题。需要考虑的因素包括功能和性能两个方面:在功能上包括对各种内容格式的支持、对部分缓存的支持,在性能上包括支持的容量、多文件吞吐率、可靠性、稳定性。

 

4、内容管理

内容管理在广义上涵盖了从内容的发布、注入、分发、调整、传递等一系列过程。在这里,内容管理重点强调内容进入Cache点后的内容管理,我们称为本地内容管理。

 

本地内容管理主要针对一个CDN节点(由多个CDN Cache设备和一个SLB设备构成)进行。本地内容管理的主要目标是提高内容服务的效率,提高本地节点的存储利用率。通过本地内容管理,可以在CDN节点实现基于内容感知的调度,通过内容感知的调度,可以避免将用户重定向到没有该内容的Cache设备上,从而提高负载均衡的效率。通过本地内容管理还可以有效地实现在CDN节点内容的存储共享,提高存储空间的利用率。

 

四、CDN的使用

目前CDN技术的使用主要是在静态加速、动态加速、流媒体等几个方面:

 

(1)    静态加速:最传统的CDN加速服务,加速的对象一般是静态文件,如html、flash动画、css、js文件等,加速就是将静态文件放到CDN节点(PULL或PUSH),并缓存;用户通过CDN访问就近或最快的CDN节点获取文件。

 

(2)    动态加速:动态加速的对象是动态声称的网页,动态加速一般是对针对内容(如数据库信息等)在用户与源站之间建立高速通道,通过路由优化、TCP加速等技术手段对动态内容进行加速,降低节点到源站之间的时延,从而大大降低了用户访问动态网页的延迟。

 

(3)    流媒体加速:流媒体加速的对象主要是点播、直播类的服务,主要是利用CDN与P2P技术以及TCP协议优化技术来完成流媒体加速。
              
通过上述的介绍相信大家对CDN已经有了一个基本的认识,看到了一个CDN网络建设所需的关键技术,也能够看到到CDN技术对网络服务的重要性。目前CDN的应用场景在不断丰富,网络规模也不断的扩大,随着云计算与移动互动网的兴起,相信CDN还会有更多的发展机遇!
  • 我的微信
  • 使用微信扫一扫
  • weinxin
  • IT运维交流群
  • 使用QQ扫一扫
  • weinxin
༺小ʚɞ寞༻

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: