一文看懂CDN加速原理

随着互联网的发展,用户在使用网络时对网站的浏览速度和效果越发重视,但因为网民数量激增,网络访问路径过长,从 而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增长的地区来讲,访问质量不良更是一个 急待解决的问题。
不少时候,你们都在谈CDN,那么何为CDN,原理是什么,今天就给你们普及普及。web

CDN

CDN的全称是Content Delivery Network,即内容分发网络。其目的是经过在现有的Internet中增长一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户能够就近取得所需的内容,提升用户访问网站的响应速度。CDN有别于镜像,由于它比镜像更智能,或者能够作这样一个比喻:CDN=更智能的镜像+缓存+流量导流。于是,CDN能够明显提升Internet网络中信息流动的效率。从技术上全面解决因为网络带宽小、用户访问量大、网点分布不均等问题,提升用户访问网站的响应速度。算法

下面是CDN的一个简单的示意图:
在这里插入图片描述浏览器

如上图所示,是CDN一个常见的架构示意图,其工做流程能够总结为:当用户访问已经加入CDN服务的网站时,首先经过DNS重定向技术肯定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在本身的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略肯定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容。缓存

CDN相关技术

CDN的实现须要依赖多种网络技术的支持,其中最主要的包括负载均衡技术、动态内容分发与复制技术、缓存技术等。服务器

负载均衡技术

负载均衡技术不只仅应用于CDN中,在网络的不少领域都获得了普遍的应用,如服务器的负载均衡、网络流量的负载均衡。顾名思义,网络中的负载均衡就是将网络的流量尽量均匀分配到几个能完成相同任务的服务器或网络节点上,由此来避免部分网络节点过载。这样既能够提升网络流量,又提升了网络的总体性能。在CDN中,负载均衡又分为服务器负载均衡和服务器总体负载均衡(也有的称为服务器全局负载均衡)。服务器负载均衡是指可以在性能不一样的服务器之间进行任务分配,既能保证性能差的服务器不成为系统的瓶颈,又能保证性能高的服务器的资源获得充分利用。而服务器总体负载均衡容许Web网络托管商、门户站点和企业根据地理位置分配内容和服务。经过使用多站点内容和服务来提升容错性和可用性,防止因本地网或区域网络中断、断电或天然灾害而致使的故障。在CDN的方案中服务器总体负载均衡将发挥重要做用,其性能高低将直接影响整个CDN的性能。网络

动态分发与复制技术

众所周知,网站访问响应速度取决于许多因素,如网络的带宽是否有瓶颈、传输途中的路由是否有阻塞和延迟、网站服务器的处理能力及访问距离等。多数状况下,网站响应速度和访问者与网站服务器之间的距离有密切的关系。若是访问者和网站之间的距离过远的话,它们之间的通讯同样须要通过重重的路由转发和处理,网络延误不可避免。一个有效的方法就是利用内容分发与复制技术,将占网站主体的大部分静态网页、图像和流媒体数据分发复制到各地的加速节点上。因此动态内容分发与复制技术也是CDN所需的一个主要技术。架构

缓存技术

缓存技术已经不是一种新鲜技术。Web缓存服务经过几种方式来改善用户的响应时间,如代理缓存服务、透明代理缓存服务、使用重定向服务的透明代理缓存服务等。经过Web缓存服务,用户访问网页时能够将广域网的流量降至最低。对于公司内联网用户来讲,这意味着将内容在本地缓存,而无须经过专用的广域网来检索网页。对于Internet用户来讲,这意味着将内容存储在他们的ISP的缓存器中,而无须经过Internet来检索网页。这样无疑会提升用户的访问速度。CDN的核心做用正是提升网络的访问速度,因此,缓存技术将是CDN所采用的又一个主要技术。负载均衡

工做原理

CDN网络是在用户和服务器之间增长Cache层,主要是经过接管DNS实现,将用户的请求引导到Cache上得到源服务器的数据,从而下降网络的访问时间。
首先,让咱们看一下传统的未加缓存服务的访问过程:
在这里插入图片描述
如图能够看出,传统的网络访问的流程以下:svg

  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. 站点服务器应答请求,将内容返回给客户端.

下面让咱们看一下使用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 获得域名记录后,向智能调度DNS查询域名的ip地址;
  7. 智能调度DNS 根据必定的算法和策略(好比静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns;
  8. LocalDns 将获得的域名ip地址,回应给用户端;
  9. 用户获得域名ip地址后,访问站点服务器。

宗上,CDN网络是在用户和服务器之间增长Cache层,主要是经过接管DNS实现,将用户的请求引导到Cache上得到源服务器的数据,从而下降网络的访问的速度。

本文同步分享在 博客“xiangzhihong8”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索