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

news/2024/5/20 22:12:25/文章来源:https://blog.csdn.net/weixin_34107739/article/details/85740935

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

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

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

相关文章

node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息

node抓取58同城信息网络抓取工具是一种工具,可让我们选择网站的非结构化数据并将其转换为结构化数据库。 那么,网络刮板将在哪里派上用场呢? 我列出了我最喜欢的用例,以使您对启动自己的应用感到兴奋! Quora上的这个问…

如何使用标准库和Node.js轻松抓取网站以获取信息

网络抓取工具是一种工具,可让我们选择网站的非结构化数据并将其转换为结构化数据库。 那么,网络刮板将在哪里派上用场呢? 我列出了我最喜欢的用例,让您对启动自己的应用感到兴奋! Quora上的这个问题鼓励我构建网络刮板…

测试 node.js网站_在2018年测试Node.js

测试 node.js网站流为300亿以上的最终用户提供数据源。 在所有这些用户都依赖我们的基础架构的情况下,我们非常乐意测试投入生产的所有产品。 我们的主要代码库是用Go编写的,剩下的是Python。 我们最近的展示应用程序Winds 2.0是使用Node.js构建的&…

大型网站技术架构(五)网站高可用架构

2019独角兽企业重金招聘Python工程师标准>>> 网站的可用性(Avaliability)描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间(故障时间)故障修复时间点-故障发现(报告)时间点…

跟我一起数据挖掘(20)——网站日志挖掘

收集web日志的目的 Web日志挖掘是指采用数据挖掘技术,对站点用户访问Web服务器过程中产生的日志数据进行分析处理,从而发现Web用户的访问模式和兴趣爱好等,这些信息对站点建设潜在有用的可理解的未知信息和知识,用于分析站点的被访…

Shell脚本——批量检测网站是否异常并邮件通知

批量检测网站是否异常脚本 检测网站运行是否正常,如果不能正常访问,发送邮件通知管理员 curl -o /de/dev/null -s -w "%{http_code}" www.baidu.com 结果演示 访问失败,也又可能和网络等等原因有关。 所以我们要进行次数判断&a…

超级好用的解析JSON数据的网站

超级好用的解析JSON数据的网站 网址 http://json.parser.online.fr/beta/ 效果图 测试数据 {"city":{"id":1816670,"name":"Beijing","coord":{"lon":116.397232,"lat":39.907501},"country"…

网站input及textarea提示文字的样式及功能模块总结

coding表单的过程中,经常会遇到input及textarea的部分,而这两种标签几乎都伴随着框内提示文字的情况,如果把每处需要做提示的地方都做一套样式及脚本的话,又不利于网站的代码共用,并且调整起来也十分费力,所…

[置顶]大型网站技术架构(七)网站的可扩展性架构

扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模块通过分布式部署,独立的模块部署在独立的服务…

nginx 安装ssl 网站证书的方法

安装ssl网站证书: 现在https越来越主流,如果SSL证书没有配置好,每次访问的时候浏览器就会报错,说你这是一个不安全的网站云云,我也花了很多时间来研究所谓“自颁证书”,很麻烦而且也没法彻底解决&#xff…

react开发h5移动网站_适用于移动应用程序开发人员的5个最佳React本机课程

react开发h5移动网站Ugur Akdemir的 “手持银色iPhone 6的人”在Unsplash上 如果您是一个网络开发人员,希望进入庞大的移动应用程序开发世界,但又不想花时间学习Java或Kotlin进行Android开发,或者不想花Objective C或Swift进行iOS开发&#x…

页面点击体验优化神器Ptengine Heatmap让你拥有完美网站

如果内容是国王,设计就是城堡。好的网页设计不仅仅要让观众对你的产品或服务内容感兴趣而且还要能产生高的转化率。很多设计师认为他们有很聪明的想法来设计ui,但是没有真实的用户体验来告诉你用户需要什么,你怎么能知道你的设计是最好的&…

网站集成QQ登录功能

原文:网站集成QQ登录功能最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把…

你好,我们在自己的服务器上做好了一个网站运行很正常,用FTP工具传到万网的云虚拟主机上后台文本里的内容无法添加怎么回事...

你好,我们在自己的服务器上做好了一个网站后台文本类可以添加运行很正常,用FTP工具传到万网的云虚拟主机上后台文本里的内容无法添加怎么回事

大型网站架构之JAVA中间件

中间件就是在大型网站中,帮助各子模块间实现互相访问,消息共享或统一访问等功能的软件产品。常见的有: 远程服务框架中间件:主要解决各子模块之间互相访问的问题。 消息队列中间件:主要解决各子模之间消息共享的问题。…

印度软件开发人员_印度独角兽网站开发人员访谈

印度软件开发人员与印度最大的金融科技公司之一的开发人员进行的信息丰富的问答环节。 最近,我有机会采访了该国最大的初创公司之一的开发人员Abhinav Pandey 。 Abhinav喜欢整天编写Node.js API和数据库争执。 阅读这篇文章,以找到他对那些希望与年轻的…

印度独角兽网站开发人员访谈

与印度最大的金融科技公司之一的开发人员进行的信息丰富的问答环节。 最近,我有机会采访了该国最大的创业公司之一的开发人员Abhinav Pandey 。 Abhinav喜欢整天编写Node.js API并与数据库纠缠。 阅读本文,以找到他对那些希望磨练自己的技能并在大公司工…

编程爱好者网站_6个爱好编程者可以参与以促进放松

编程爱好者网站Pexels.com 编程可能会令人兴奋,也可能会带来压力。 作为程序员,您在计算机前花费了大量时间。 为了减轻压力和放松,您可以参加以下六个爱好,这将有助于您放松。 1.上音乐课 学习演奏乐器既轻松又有益。 这将有助…

在Google Cloud Storage上托管免费的静态网站

本指南将引导您设置免费存储桶,以使用Google Cloud Platform服务通过自定义域名为静态网站提供服务。 登录到Google Cloud Platform,导航到Cloud DNS服务并创建一个新的公共DNS区域: 默认情况下,它将具有一个NS (名称服…