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

news/2024/5/9 11:39:15/文章来源:https://blog.csdn.net/weixin_30378623/article/details/96038412

在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有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来引导用户访问是最简单有效的方式.

转载于:https://www.cnblogs.com/xuan52rock/p/4666770.html

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

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

相关文章

pdf在线处理网站

sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId1005269003&utm_campaigncommission&utm_sourcecp-400000000398149&utm_mediumshare 转载于:https://www.cnblogs.com/webRobot…

手机wap网站建设的方法和技巧

随着互联网技术的不断进步,越来越多的运营商对于手机wap网站的建设有了更多的投入,手机wap网站的建设和开发要根据网站的特点和经营范围来进行设计和建设,这样才可以提升手机wap网站建设的效果。现在智能手机也基本都普及了,好多的…

Google官方建议:如何让网站在Goog…

自从去年9月谷歌浏览器发布以来,很多网站管理员和开发者纷纷向我们询问如何使自己的网站与谷歌浏览器更兼容。谷歌浏览器团队把这些问题作为很重要的借鉴和参考,这里我想向您提供一些小建议,让您的网站在谷歌浏览器里看起来更出色。 识别谷歌…

[慕课笔记] node+mongodb建站攻略

如何利用nodemongodb来快速搭建一个电影网站? 一:后端部分 整个网站的后端是由node.js来驱动的,所以在后端需要安装node.js,以及在这个基础之上的框架express,它能够帮助我快速的搭建web应用,然后数据库选用的mongodb&…

一步步教你为网站开发Android客户端

http://www.apkbus.com/forum.php?modviewthread&tid17712&extrapage%3D1 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView背景介绍:客户端(Client&…

如何让多个不同类型的后端网站用一个nginx进行反向代理实际场景分析

前段时间公司根据要求需要将聚石塔上服务器从杭州整体迁移到张家口,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完 成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上…

色情网站的光棍节“福利”:加密式挂马玩转流氓推广

结语:攻击者对相关加密算法比较了解,选用了较为少见的Rabbit对称加密算法;攻击者具备一定的前端开发经验,代码容错性强,兼容性高了;后台不再是静态文件,而采用了动态生成内容,生成的…

docker搭建网站详细

远程连接centos7 这里我用的是xshell连接centos7 下载docker 这里我用的是阿里的Docker CE 镜像源站 这里我用的是centos7搭建的,如果是ubuntu的可以进上面那个网站上看 step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lv…

GoDaddy网站程序根目录 网站文件上传到虚拟主机哪个目录

用的linux虚拟主机,网站根目录为public_html,(window主机的目录为httpdocs)我们需要把本地做好的网站上传到此目录下 cPanel控制面板 - 文件管理器 - public_html 转载于:https://www.cnblogs.com/bubuchu/p/10216970.html

论文网站及使用方法(ResearchGate、Sci-Hub等)

文章目录1 浏览器准备1.1 Microsoft Edge1.2 Google Chrome2论文网站2.1 ResearchGate2.2 SCI-HUB2.3 谷歌学术2.4谷粉学术3.数据网站3.1镝数聚3.2国泰安数据库1 浏览器准备 ✨ 这两个浏览器不是必需的,只是这两个浏览器适配大多数的网站,其中chrome已成…

大型网站技术架构:大型网站架构演化

这是《大型网站技术架构》的系列读书记录。 一,大型网站软件系统的特点 1,高并发, 大流量。 每秒7亿次请求,阿里新一代数据库如何支撑? PV(Page View)访问量,即页面浏览量或点击量…

vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别(上)

http://www.cnblogs.com/iceicebaby/archive/2012/02/21/2361558.html 一:先来看看 新建网站 里面的 ASP.NET 网站的建立过程 我们采用 3层架构 如果我们想把整个项目放到 D:\web网站建设 这个文件夹来,那么我们建立Web层的时候,Web层的地…

vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (下)

地址:http://www.cnblogs.com/iceicebaby/archive/2012/02/21/2361686.html 二:下面是 通过 新建项目 来创建 ASP.NET web 应用程序 下面我们创建 数据库DAL层 和 实体类层 Model 他会自动生成 DAL 文件夹 我们继续 Model 层。方法同上,就不…

部署网站出错,定义了重复的“entityFramework”节点

网站在本地运行正常,部署到服务器,访问出现以下 “entityFramework”节点只定义了一个,但它认为是有多个,最终把该节点屏蔽后网站才能正常运行。没弄明白原理。。。

说说大型高并发高负载网站的系统架构

转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p71) Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p71 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理…

MySQL在大型网站的应用架构演变

MySQL在大型网站的应用架构演变 http://www.tuicool.com/articles/VZF3aiF 【编者按】作为最流行的开源数据库,MySQL被广泛应用在Web应用程序以及其它中小型项目上。然而不可忽视的是,在许多大型IT公司中,MySQL在高度优化和定制化后&#x…

MySQL 在大型网站的应用架构演变

写在最前: 本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变 可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段…

Android开发中混淆后Gson序列化、反序列化的那些坑,网站开发前后端分离

为什么呢? 因为反序列化创建对象本质还是利用反射, 会根据 json 字符串的 key 作为属性名称, value 则对应属性值. 如何解决 将序列化和反序列化的类排除混淆 使用 SerializedName 注解字段 SerializedName(parameter) 通过注解属性实现了 序列化的结果中, 指定该属性 ke…

Hexo+Coding搭建自己的博客网站系列1-本地环境部署

前言 我的博客:https://fitz1318.top/ 最近我终于实现了自己很久之前关于搭建自己专属的博客网站的目标,现在把搭建期间的过程和走过的坑记录下来,如果你对搭建自己的网站有兴趣,不妨可以参考一下我的文章。 首先我说下自己的版本…

Hexo+Coding搭建自己的博客网站系列2-部署博客到Coding上

前言 欢迎浏览我的网站https://fitz1318.top/ 最初,我是选择部署到Github上的,但是最后在弄百度收录时出现了问题,Github Pages屏蔽了百度爬虫,这样子你的博客就没办法被百度收录了。 注册并新建仓库 Coding的网址 &#xff0c…