在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度,从最接近用户的地方获得所需的信息,彻底解决网络拥塞,提高响应速度,是目前大型网站使用的流行的应用方案.

1. CDN 概述

  • CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络"边缘"的节点,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。

  • Cache层的技术,消除数据峰值访问造成的结点设备阻塞。Cache服务器具有缓存功能,所以大部分网页对象(Web page object),如html, htm, php等页面文件,gif,tif,png,bmp等图片文件,以及其他格式的文件,在有效期(TTL)内,对于重复的访问,不必从原始网站重新传送文件实体, 只需通过简单的认证(Freshness Validation)- 传送几十字节的Header,即可将本地的副本直接传送给访问者。由于缓存服务器通常部署在靠近用户端,所以能获得近似局域网的响应速度,并有效减少广域带宽的消耗。不仅能提高响应速度,节约带宽,对于加速Web服务器,有效减轻源服务器的负载是非常有效的。

  • 根据加速对象不同,分为 客户端加速 和 服务器加速

    • 客户端加速 : Cache部署在网络出口处,把常访问的内容缓存在本地,提高响应速度和节约带宽;

    • 服务器加速 : Cache部署在服务器前端,作为Web服务器的代理缓存机,提高Web服务器的性能,加速访问速度 
      如果多台Cache加速服务器且分布在不同地域,需要通过有效地机制管理Cache网络,引导用户就近访问(比如通过DNS引导用户),全局负载均衡流量,这是CDN内容传输网络的基本思想.

  • CDN对网络的优化作用主要体现在如下几个方面  - 解决服务器端的“第一公里”问题  - 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响  - 减轻了各省的出口带宽压力  - 缓解了骨干网的压力  - 优化了网上热点内容的分布

2. CDN 的工作原理

2.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.2. CDN访问过程(使用缓存服务)

CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据
下面让我们看看访问使用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地址后,访问站点服务器

  10. CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

通过以上的分析我们可以得到,为了实现对普通用户透明(使用缓存后用户客户端无需进行任何设置)访问,需要使用DNS(域名解析)来引导用户来访问Cache服务器,以实现透明的加速服务. 由于用户访问网站的第一步就是 域名解析 ,所以通过修改dns来引导用户访问是最简单有效的方式.

web网站加速之CDN(Content Delivery Network)技术原理的更多相关文章

  1. CDN(Content Delivery Network)技术原理概要

    简介 CDN(Content Delivery Network)即内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调度等功能,使用户就近获取所需内容,提高用户访问响应速度和 ...

  2. CDN(Content Delivery Network)内容分发网络

    CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节 ...

  3. CDN(Content Delivery Network)原理

    CDN即内容分发网络,一般包括分发服务系统,负载均衡系统和管理系统. 分发服务系统,其基本的工作单元就是各个cache服务器.负责直接响应用户请求,将内容快速分发到用户:同时还负责内容更新,保证和源站 ...

  4. CDN的全称是Content Delivery Network,即内容分发网络

    CDN的全称是Content Delivery Network,即内容分发网络 http://baike.baidu.com/link?url=Wd-IGGgslfJemdpuT3Y0BUi88RPQ ...

  5. CDN(Content Distribution Network)概念

    CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节 ...

  6. Content Delivery Network

    Coding Standards & Best Practices 7 Reasons to use a Content Delivery Network CDN公共库汇总

  7. 深度剖析:CDN内容分发网络技术原理--转载

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  8. 关于CDN对动态网站加速的一些看法

    CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘" ...

  9. CDN网站加速技术

    什么是CDN? CDN(Content Delivery Network 内容分发网络)技术通过在各个地区部署缓存节点加速用户对静态资源的获取速度,提升用户体验,降低运营成本.CDN公司有网宿(Chi ...

随机推荐

  1. Walkthrough: Creating and Using a Dynamic Link Library (C++)

    Original Link: http://msdn.microsoft.com/zh-cn/library/ms235636.aspx Following content is only used ...

  2. [cocos2d-x 2.0.4][iOS7]不能全屏问题

    本篇文章由:http://www.sollyu.com/cocos2d-x-2-0-4-ios7-cannot-be-full-screen-problem/ 说明 ▼ 症状如下图 解决 打开你工程的 ...

  3. RX学习笔记:在FreeCodeCamp的学习

    FreeCodeCamp https://www.freecodecamp.com 2016-07-03 前几日在Github浏览时,偶然看到一个叫FreeCodeCamp的开源项目,进去该网站之后感 ...

  4. Python3 面向对象 高级编程

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试 ...

  5. HTML5的简介

    前言:作为IOS开发工程师,终会接触到网页前端开发,甚至可能会有 用HTML5开发IOS的app客户端的需求.比如现在上架的app就有比如理财类型的app有的就用HTML开发的,从理财类型的app需求 ...

  6. 简单的NHibernate学习笔记

    NHibernate是.NET平台下的ORM框架,与ADO.NET一样实现项目中数据库与项目系统的交互. .首先要用NHibernate框架就要有第三方的dll库来作为支持,附上百度云下载地址:(链接 ...

  7. Oracle表空间传输测试

    源数据库平台:window 7 64bit Oracle 11g 64bit目标数据库平台:RHEL6 64bit Oracle 11g 64bit 1.查看数据集 select * from nls ...

  8. 一个优秀php程序员应具备什么样的能力

    1:php能力 1.1 熟悉 一种或者几种框架,并可以用于开发 1.2 了解 这些框架中的优点与缺点 1.3 假如要你选择框架,你会使用哪种最适合你开发 2:数据库能力 2.1:能写一些简单的sql语 ...

  9. MVC去掉传参时的验证:从客户端中检测到有潜在危险的Request.QueryString值

    解决方法:给Action添加属性[ValidateInput(false)]. 例: [ValidateInput(false)] public ActionResult Index(string o ...

  10. dtv_driver.ko

            替换dtv_driver.ko .步骤:         shell@android:/ # get_rootfs.sh                                 ...