CDN加速原理那些事

名词解释

  • CNAME记录(CNAME record)

CNAME即别名( Canonical Name );可以用来把一个域名解析到另一个域名,当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。 例如,你有一台服务器上存放了很多资料,你使用http://docs.example.com去访问这些资源,但又希望通过http://documents.example.com也能访问到这些资源,那么你就可以在您的DNS解析服务商添加一条CNAME记录,将http://documents.example.com指向http://docs.example.com,添加该条CNAME记录后,所有访问http://documents.example.com的请求都会被转到http://docs.example.com,获得相同的内容。

详见: DNS 各记录类型说明及规则

  • CNAME域名

接入CDN时,在CDN提供商控制台添加完加速域名后,您会得到一个CDN给您分配的CNAME域名, 您需要在您的DNS解析服务商添加CNAME记录,将自己的加速域名指向这个CNAME域名,这样该域名所有的请求才会都将转向CDN的节点,达到加速效果。

  • DNS

DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地址。人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。比如:上网时输入的www.baidu.com会自动转换成为220.181.112.143。 常见的DNS解析服务商有:阿里云解析,万网解析,DNSPod,新网解析,Route53(AWS),Dyn,Cloudflare等。

  • 回源host

回源host:回源host决定回源请求访问到源站上的具体某个站点。

例子1:源站是域名源站为www.a.com,回源host为www.b.com,那么实际回源是请求到www.a.com解析到的IP,对应的主机上的站点www.b.com

例子2:源站是IP源站为1.1.1.1, 回源host为www.b.com,那么实际回源的是1.1.1.1对应的主机上的站点www.b.com

  • 协议回源

回源时使用的协议和客户端访问资源时的协议保持一致,即如果客户端使用 HTTPS 方式请求资源,当CDN节点上未缓存该资源时,节点会使用相同的 HTTPS 方式回源获取资源;同理如果客户端使用 HTTP 协议的请求,CDN节点回源时也使用HTTP协议。

什么是 CDN?

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

简单的说,CDN的工作原理就是将您源站的资源缓存到位于全球各地的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。

在这里插入图片描述
CDN对网络的优化作用主要体现在如下几个方面

  • 解决服务器端的“第一公里”问题

  • 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响

  • 减轻了各省的出口带宽压力

  • 缓解了骨干网的压力

  • 优化了网上热点内容的分布

CDN工作原理

传统访问过程

在这里插入图片描述
由上图可见,用户访问未使用CDN缓存网站的过程为:

  • 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址

  • LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)

  • ROOT DNS将域名授权dns记录回应给 LocalDns

  • LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址

  • 域名授权dns 查询域名记录后,回应给 LocalDns

  • LocalDns 将得到的域名ip地址,回应给 用户端

  • 用户得到域名ip地址后,访问站点服务器

  • 站点服务器应答请求,将内容返回给客户端

CDN访问过程

在这里插入图片描述
通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

  • 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.

  • LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)

  • ROOT DNS将域名授权dns记录回应给 LocalDns

  • LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址

  • 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns

  • LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址

  • 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns

  • LocalDns 将得到的域名ip地址,回应给用户端

  • 用户得到域名ip地址后,访问站点服务器

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

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

CDN网络的组成要素

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

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

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

  • 缓存功能服务 负载均衡设备(如lvs,F5的BIG/IP) 内容Cache服务器(如squid) 共享存储

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

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

相关文章

初探 Spring Boot 源码:揭秘其高效魔法

Spring Boot 作为当今 Java 世界中最受欢迎的框架之一,以其简化配置和快速部署的能力赢得了开发者的广泛赞誉。但是,你是否曾经好奇过,是什么让 Spring Boot 如此高效和强大?本文将带你深入 Spring Boot 的源码,揭示其…

js str字符串和arr数组互相转换

js str字符串和arr数组互相转换 字符串转为数组 1、split()方法 返回的是原字符串的数组 var str "hello"; var arr str.split(""); console.log(arr); //输出["h", "e", "l", "l", "o"]2、Ar…

创建型模式--4.抽象工厂模式【弗兰奇一家】

1. 奔向大海 在海贼世界中,位于水之都的弗兰奇一家是由铁人弗兰奇所领导的以拆船为职业的家族,当然了他们的逆向工程做的也很好,会拆船必然会造船。船是海贼们出海所必备的海上交通工具,它由很多的零件组成,从宏观上看…

算法:完全背包问题dp

文章目录 一、完全背包问题的特征二、定义状态三、状态转移四、降维优化五、参考例题5.1、Acwing:3.完全背包问题5.2、Acwing:900. 整数划分 一、完全背包问题的特征 完全背包问题是动态规划中的一种经典问题,它的主要特征可以总结如下&…

LeetCode热题Hot100 - 删除链表的倒数第N个结点

一刷~ 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 思路: 用两个指针,第一个指针先往前走n步(注意起始点不是head),然后第二个指针和第一个指针一起移动,当第一…

[HackMyVM]靶场Flossy

难度:Medium kali:192.168.56.104 靶机:192.168.56.142 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.142 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-01 21:01 CST Nmap scan report for 192.168.56.142 Host is up (0.00018s latency).…

浏览器的几种存储方式

浏览器的几种存储方式(图表形式) 存储方式特点应用场景示例有效期容量是否共享安全性Cookie存储少量数据,例如用户偏好、登录状态等用户认证、个性化设置登录状态、语言偏好会话或永久4KB同源中等Local Storage️永久存储数据,同…

从0开始搭建基于VUE的前端项目(四) Vue-Router的使用与配置

版本 vue-router 3.6.5 (https://v3.router.vuejs.org/zh/) 安装 安装要指定版本,默认安装的4版本的 npm install vue-router3.6.5代码实现 在src目录下创建router目录 router/index.js import Vue from vue import Router from vue-routerVue.use(Router)con…

Nginx入门 -- 解析Nginx中的基本概念:Keepalive

引言: Nginx是一款流行的开源Web服务器软件,被广泛用于构建高性能的Web服务器和反向代理。在Nginx中,Keepalive是一个基本概念,它在网络连接中起到重要的作用。本文将深入探讨Keepalive的工作原理和在Nginx中的应用。 1.Keepaliv…

A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用

A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用 1 CAN通用驱动程序所有函数预览1.1 HAL_CAN_Init1.2 HAL_CAN_ConfigFilter1.3 HAL_CAN_DeInit1.4 HAL_CAN_MspInit1.5 HAL_CAN_MspDeInit1.6 HAL_CAN_Transmit1.7 HAL_CAN_Transmit_IT1.8 HAL_CAN_Receive1.9 HAL_C…

fssh挂载远程服务器目录

fssh挂载远程服务器目录 1、服务器自动登录 1.1 生成SSH 密钥对 ssh-keygen -t rsa这个命令会生成一个私钥(默认保存在 ~/.ssh/id_rsa)和一个公钥(默认保存在 ~/.ssh/id_rsa.pub)。 你可以通过 -f 参数指定一个不同的文件名和路径来保存这些密钥。 会要求输入名称和密码…

聊聊Linux内核中内存模型

介绍 在Linux中二进制的程序从磁盘加载到内存,运行起来后用户态是使用pid来唯一标识进程,对于内核都是以task_struct表示。二进制程序中的数据段、代码段、堆都能提现在task_struct中。每一个进程都有自己的虚拟地址空间,虚拟地址空间包含几…

【2024】Prometheus通过node_exporter都监控了什么

我们通过prometheus进行监控,通过node_exporter进行Linux系统的监控。 那么我们通过node_exporter都监控了什么? 目录 常用指标CPU相关内存相关磁盘相关网络相关其他指标常用监控告警案例:cpu案例:内存案例:磁盘案例:网络案例:常用指标 Prometheus通过node_exporter可以…

交换机虚拟化技术

1、思科虚拟化技术: (1)stackwise:堆叠,一般用于盒式交换机的场景 ①原理:可以将多台物理设备逻辑的虚拟成一台大的设备 ②冗余交换机管理引擎: 三种模式: 1)RPR&am…

stack和queue的使用

前言 前面我们对string、vector、list做了介绍并对底层进行了实现!本期我们继续来介绍STL容器,stack和queue! 本期内容介绍 stack 常用接口的介绍 queue 常用接口的介绍 什么是stack? 这里的栈和我们C语言实现的数据结构的那个栈功能是一样…

向上向下采样

在数字图像处理中,向上采样(upsampling)和向下采样(downsampling)是两种常见的操作,用于改变图像的分辨率。 向上采样(Upsampling): 向上采样是指增加图像的分辨率&…

leetcode代码记录(最长连续递增序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

如何查看当前python环境的安装路径

起因&#xff1a;在查看python安装路径时&#xff0c;由于环境变量未添加&#xff0c;导致直接用python无法查看&#xff0c;但是pip又可用。因此找到另外一种代替方法。 利用pip show 库 pip show numpy

代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 贪心算法&#xff0c;这不就是常识&#xff1f;还能叫贪心&#xff1f;LeetCode&#xff1a;1005.K次取反后最大化的数组和_哔哩哔…

德兰梅尔:耐高温热销的膜元件亮相2024上海国际生物发酵展

德兰梅尔&#xff1a;耐高温热销的膜元件盛装亮相2024上海国际生物发酵展&#xff0c;8月7-9号上海新国际博览中心与您不见不散&#xff01; 据了解&#xff0c;从成立至今&#xff0c;德兰梅尔一直专注膜技术、膜产品的开发生产。在中国市场上&#xff0c;德兰梅尔刚步入中国…