CDN的定义和作用
CDN的全称是ContentDeliveryNetwork,即内容分发网络。其基本目的是让用户能够更快速的得到请求的数据。简单来讲,CDN就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据。CDN的实现原理是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
CDN的发展历程
CDN的发展历程可以追溯到1995年,当时万维网发明者TimBerners-Lee预见到了网络拥挤的问题,他向自己在MIT的同事,应用数学教授TomLeighton提出了这个技术挑战。TomLeighton认识到可以在应用数学和算法中找到解决网络拥塞的方法,因此他组建了一个研究小组来解决该问题。1998年,TomLeighton和另一名成员Lewin一起,制定了能够在大型分布式服务器网络上智能传送和复制内容的数学算法。于是,1998年8月,大名鼎鼎的CDN服务提供商Akamai诞生了。
CDN的服务提供商
目前,CDN行业百花齐放,形成了传统的专业CDN提供商、云CDN提供商、三大运营商、创新型CDN服务商等多方竞争的格局。其中,以网宿科技和阿里云为代表的传统专业CDN提供商和云CDN提供商在市场中占据重要地位。网宿科技拥有遍布全球的1000多个CDN加速节点,阿里云则拥有1200多个全球CDN加速节点。这两家公司的服务覆盖范围遍布全国31个省市和地区以及海外地区。
总的来说,CDN是一个内容分发网络,它的作用是让用户能够更快速的得到请求的数据,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
CDN的基本原理
CDN,全称内容分发网络(Content Delivery Network),是一种构建在网络之上的内容分发网络。它依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN的基本原理是在用户访问相对集中的地区和网络设置一些缓存服务器。当用户访问网站时,利用全局的负载均衡技术将用户的访问指向距离最近的缓存服务器,由缓存服务器代替源站响应用户的访问请求。这样一方面减轻了源站服务器的工作压力,另一方面使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
CDN的相关技术
CDN实现需要依赖多种网络技术,如负载均衡技术、动态内容分发与复制技术、缓存技术等。负载均衡技术就是将网络中的流量尽可能平均分配到多个能完成相同任务的服务器或网络节点,由此来避免单个或部分网络节点过载瘫痪,影响正常的网络访问。动态内容分发与复制技术则是将网站主体中的大部分静态页面、图像和流媒体数据等分发复制到各地的加速节点上,以提高用户访问网站的响应速度。
CDN的优点
CDN具有以下优点:一是本地Cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度;二是跨运营商的网络加速,保证不同网络的用户都得到良好的访问质量;三是远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器;四是自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点web服务器负载等功能;五是广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵。
CDN的工作过程
当用户访问网站时,首先会通过本地DNS系统解析域名,最终将域名解析为一个IP地址。如果要访问的网站名为:www.edu.lagou.com ,客户端首先会在本机的hosts文件和hosts缓存中查找该域名对应的IP地址;如果本机中没有此信息,则会到我们的本地DNS进行询问该域名对应的IP地址;如果本地DNS中仍然没有该域名的IP信息时,则会由本地DNS依次向根DNS、顶级域DNS、权威DNS进行询问,最终本地DNS将IP地址发送给客户端。客户端通过IP地址向远程的源站服务器发出HTTP请求并获取相应的数据内容。
而使用CDN后,用户的请求会被导向距离用户较近的最优缓存节点,而非源站。在DNS解析域名时新增了一个全局负载均衡系统(GSLB),GSLB的主要功能是根据用户的本地DNS(通常距离用户的物理位置较近)的IP地址判断用户的位置,筛选出距离用户较近的本地负载均衡系统(SLB),并将该SLB的IP地址作为结果返回给本地DNS。SLB主要负责判断缓存服务器集群中是否包含用户请求的资源数据,如果缓存服务器中存在请求的资源,则根据缓存服务器集群中节点的健康程度、负载量、连接数等因素筛选出最优的缓存节点,并将HTTP请求重定向到最优的缓存节点上。