web网站加速之CDN(Content Delivery Network)技术原理

news/2024/5/20 12:05:59/文章来源:https://blog.csdn.net/iteye_4515/article/details/81996092

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

1. CDN 概述

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

    cdn_overview.gif

  • 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缓存访问方式与未加缓存访问方式的差别:

normal.png

由上图可见,用户访问未使用CDN缓存网站的过程为:

2.2. CDN访问过程(使用缓存服务)

CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据
下面让我们看看访问使用CDN缓存后的网站的过程:

cdn.png

通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

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

2.3. CDN网络的组成要素

对于普通的Internet用户,每个CDN节点就相当于一个放置在它周围的网站服务器.
通过对dns的接管,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求.
由于它离用户更近,因而响应时间必然更快.

从上面图中 虚线圈起来的那块,就是CDN层,这层是位于 用户端 和 站点服务器之间.

  • 智能调度DNS(比如f5的3DNS)

    智能调度DNS是CDN服务中的关键系统.当用户访问加入CDN服务的网站时,域名解析请求将最终由 智能调度DNS 负责处理.
    它通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户可以得到快速的服务.
    同时它需要与分布在各地的CDN节点保持通信,跟踪各节点的健康状态,容量等,确保将用户的请求分配到就近可用的节点上.

  • 缓存功能服务
    • 负载均衡设备(如lvs,F5的BIG/IP)
    • 内容Cache服务器(如squid)
    • 共享存储(根据缓存数据量多少决定是否需要)

3. CDN 智能调度Dns 实例分析

  • 分析img.alibaba.com域名

    在系统中,执行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.145a1366.g.akamai.net.	12	IN	A	204.203.18.160; 部分省略
    
    从上面查询结果可以看出 img.alibaba.com. CNAME img.alibaba.com.edgesuite.net. 后面的CNAME是由 Akamai(CDN服务商) 去跳转到 智能调度器上的.

  • 分析www.discovery.com域名

    在系统中,继续执行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.154a212.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服务商的域名上.
    缓存服务和调度功能都是由服务商来完成.

4. CDN的 智能调度Dns 简化实现

4.1. 调度策略说明

在用户请求解析域名的时候,智能DNS判断用户的LocalDns的IP,然后跟DNS服务器内部的IP表范围匹配一下,看看用户是电信还是网通用户,然后给用户返回对应的IP地址
这里使用的是静态拓扑的方法,只是判断LocalDns的IP.要想使用更复杂的调度算法可以考虑商业产品,如F5的3DNS.

4.2. 假设CDN节点规划

在这里我们将使用 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

4.3. bind view 配置

  • 以下是named.conf配置文件的部分截取,只是涉及到 View 的部分,其他细节可参考互联网.

      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";};};
    
  • zone文件的配置说明

    这4个zone配置文件(cnc_cdntest.zone,tel_cdntest.zone,edu_cdntest.zone,default_cdntest.zone)中,只有www.cndtest.com的A记录不一样,其他的都是一样.

域名zone配置文件A记录地址
www.cdntest.comcnc_cdntest.zone192.168.0.1
www.cdntest.comtel_cdntest.zone192.168.0.2
www.cdntest.comedu_cdntest.zone192.168.0.3
www.cdntest.comdefault_cdntest.zone192.168.0.4

以上只列出了 www.cdntest.com 的A记录地址,其他关于zone的语法 请参考互联网.

  • 域名解析流程简要说明

  • 此简化方案中的存在的问题

5. 总结(Summary)

在建立CDN网路时,最关键的就是 智能调度DNS,这个是CND网络总协调,通过高效的调度算法,可以使用户得到最佳的访问体验.
其次就是 CND节点的管理,比如涉及到 内容的同步机制,配置文件的更新等等,都需要有一套机制来保证.
当然在大型网站中,也要考建设CDN体系的成本和回报率.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_774526.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开发竞赛作品展示网站上线!

每年的Esri开发竞赛都会看到来自全国各地同学们的大作,今年报名、参赛学校和作品更是创历史新高,许多优秀作品涌现出来。为了充分发掘这些作品的价值,我们团队的小蜜蜂们将2010年的获奖作品搬到网络,建立了开发大赛作品展示站点&a…

开发竞赛作品展示网站上线!

每年的Esri开发竞赛都会看到来自全国各地同学们的大作,今年报名、参赛学校和作品更是创历史新高,许多优秀作品涌现出来。为了充分发掘这些作品的价值,我们团队的小蜜蜂们将2010年的获奖作品搬到网络,建立了开发大赛作品展示站点&a…

论坛php网站模板,自适应discuz论坛门户网站模板

网站模板说明及安装方法:模板完美支持自适应宽窄屏切换功能,采用DX最新的DIY调用缓存机制,数据调用,设置简单容易上手,数据图片自动生成缩略图, 有效解决调用图片变形失真问题, 对页面速度也有一定提高,页面…

读书:《SEO实战密码》

作者:魏武挥 来源: It Talks 新加坡人昝辉Zac于09年曾出过一本《网络营销实战密码:策略、技巧、案例》,书名虽然波澜不惊,但那本书,在我看来,是最好的营销实战宝典,尤其适合一些刚刚起步的中小型…

Python爬虫之爬取网站图片

暑假在家练科三的时候无聊突然想重拾Python,之前简单的学了学Python2的语法,但以后主流是Python3,就下了Python3,pycharm对着别人的教程试了试爬虫,我之前python2的时候爬虫主要用urllib,urllib2这两个,然后…

网站运营之比较和差异化

网站运营之比较和差异化 人类内心有很多情绪,其中一种最基本的情绪是嫉妒。人类社会的幸福不在于你拥有什么,而在于比较。这个比较可能是负面的,也可能是正面的。比如说,良好的竞争,这是一种正向的比较,能…

网站运营之前后一致

网站运营之前后一致 谈判大师罗杰道森在谈个人影响力时提到“敬畏力”的概念,认为敬畏力来自于人们言行一致的力量。有些人的敬畏力强,有些人的敬畏力弱。但是不管如何,大多数人都有一个心理趋向,即保持前后一致。人们不太喜欢前…

一个使用Ruby on Rails开发LBS网站的简单实例

一个使用Ruby on Rails开发LBS网站的简单实例 cheungmine 2011-7 这几天一直在学习使用Ruby on Rails(RoR),想建立一个功能全面一点的LBS(Location Based Service)网站。但是对于我这个RoR的初学者(仅有几天时间)来说,毕竟太复杂…

实战SEO——实用技法与案例剖析

实战SEO——实用技法与案例剖析 藏锋者编著 ISBN978-7-121-14273-4 2011年9月出版 定价:55.00元 16开 472页 内 容 简 介 本书针对SEO细节操作、技术实施、实际案例进行了详细分析,主要包括建站前的SEO策划、网站上线前的本地SEO、上线后的SEO方…

网站结构优化的基本方法

网站结构优化的基本方法 网站结构优化就是对网站页面的存储方式(物理结构)、内部链接关系(逻辑结构)进行合理的调整,以减少网站的目录层级,优化普通页面与重要页面之间的链接深度,增加重要页面…

什么是网站物理结构、逻辑结构

什么是网站物理结构、逻辑结构 网站结构分为物理结构和逻辑结构两种,很多刚刚接触SEO的新手,往往搞不清楚物理结构和逻辑结构的异同,进而造成自己的网站结构规划很乱,不但搜索引擎不容易快速建立起网站的整体结构体系&#xff0c…

NoJS的网站数据统计

目前主流的网站分析工具都是通过JavaScript来实现数据的获取的,如Google Analytics就是通过在网页中嵌入一段JS代码,当该网页被浏览时,JS代码被加载,就会向Google Analytics的数据收集服务器发送用户浏览该网页的相应数据&#xf…

Freestyle第4期之网站前端安全分享XSS进阶篇

写在前面 2 知识回顾 2 XSS的定义2 XSS的危害2 XSS的产生3 如何攻击 4 深入解读XSS4 XSS分类4 XSS出现场景4 实战XSS9 攻击篇 9 防御篇 10 其他 11 写在前面 本周五为大家带来的是安全分享之XSS的进阶篇,这部分的内容是基于前2次的安全分享的基础之上的,…

苹果cms模板_苹果cms怎么做seo?

苹果cms怎么做seo?苹果cms怎么做seo?点击查看:苹果cms如何修改分类的标题、关键字、描述等seo参数为了让自己的网站排名更靠前,现在很多网站都在做SEO优化,对于很多网站来说,都想通过搜索引擎来让自己的网站…

动态网站的技术路线_3个会让你上瘾的小网站!第三个特别好玩

感谢你关注“最佳应用”每篇文章解决某行业或某人群的一个痛点第八十四期原创文章By:小佳昨天刷抖音听了一首很有魔性的歌曲,结果分享到社交平台,没想到被很多键盘侠喷了,留言全是批判“审美有毒”,这种垃圾歌曲能火就…

怎么去调需要登录的接口_Java 爬虫遇到需要登录的网站,该怎么办?

点击上方“平头哥的技术博文”,选择“关注公众号”技术文章第一时间送达!这是 Java 网络爬虫系列博文的第二篇,在上一篇 Java 网络爬虫,就是这么的简单 中,我们简单的学习了一下如何利用 Java 进行网络爬虫。在这一篇中…

访问虚拟机上的本地网站

我的小程序: 待办计划:给自己立个小目标吧!1首先检查虚拟机是否安装httpd服务,命令:rpm -q httpd;若显示下图内容,说明已安装,进入步骤2,否则需要你安装httpd服务; 2.查看…

手机访问本地电脑网站

1.前提是手机和电脑处于同一个局域网内; 2.查看电脑ip,手机浏览器输入该ip访问,若提示不能打开网页进入步骤3;若提示403 forbidden,进入步骤4; 3.手动开放防火墙80端口,参考http://jingyan.ba…

win2008r2发布php网站,Server2008r2发布wordpress站点(环境)

1. 安装vcredist_x64.exe2. 解压php解释器&#xff0c;即 php-5.6.37-nts-Win32-VC11-x64.zip3. 配置php.ini拷贝php.ini-development&#xff0c;改名为php.ini&#xff0c;并进行如下修改&#xff1a;<1>扩展插件的路径 extension_dir “c:\PHP\ext”<2>设置要引…

给做假网站的提个醒——我承认我无聊了

刚才闲着没事&#xff0c;打开自己的一堆QQ挨个看看。不是我喜欢用很多QQ&#xff0c;我一直主要用一个QQ号码&#xff0c;还有一个是6位的号码&#xff0c;虽然不怎么用&#xff0c;但看在号码比较短的份上还经常登录看看&#xff0c;免得被收回。不过自从在腾讯开放平台作应用…