百度面试官:给我说是CDN加速的原理?

2023-05-16

一、什么是 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
  • L-ocalDns 将得到的域名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)
  • 共享存储

三、名词解释

CNAME记录(CNAME record)

CNAME即别名( Canonical Name );可以用来把一个域名解析到另一个域名,当 DNS 系统在查询 CNAME 左面的名称的时候,都会转向 CNAME 右面的名称再进行查询,一直追踪到最后的 PTR 或 A 名称,成功查询后才会做出回应,否则失败。

例如,你有一台服务器上存放了很多资料,你使用docs.example.com去访问这些资源,但又希望通过documents.example.com也能访问到这些资源,那么你就可以在您的DNS解析服务商添加一条CNAME记录,将documents.example.com指向docs.example.com,添加该条CNAME记录后,所有访问documents.example.com的请求都会被转到docs.example.com,获得相同的内容。

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协议。

最后

欢迎大家关注和转发文章,也欢迎大家关注我的公众号:程序员麦冬,每天都会分享java相关技术文章或行业资讯!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百度面试官:给我说是CDN加速的原理? 的相关文章

  • 数组下标赋值和指针赋值效率探索

    使用数组下标赋值和指针赋值效率探索 span class token keyword int span span class token function main span span class token punctuation spa
  • Archlinux/Manjaro使用笔记-报错:一个或多个 PGP 签名无法校验!的解决方法

    Archlinux Manjaro使用笔记 报错 xff1a 一个或多个 PGP 签名无法校验 xff01 的解决方法 参考文章 xff1a xff08 1 xff09 Archlinux Manjaro使用笔记 报错 xff1a 一个或多
  • Hadoop生态圈

    Hadoop生态圈 1 什么是Hadoop xff1f Hadoop是由Apache基金会所开发的分布式系统架构 主要解决 xff0c 海量数据的存储和海量数据的分析计算问题广义上来说 xff0c Hadoop通常是指一个更加广泛的概念 H
  • 【解决方案】error: Microsoft Visual C++ 14.0 or greater is required.【保姆级教程】

    在给python虚拟环境安装某些第三方库时 xff0c 会碰到以下报错 error Microsoft Visual C 43 43 span class token number 14 0 span or greater is requi
  • Hadoop3.2.2完全分布式集群环境搭建(一)

    大数据学习之Hadoop3 2 2集群环境搭建 xff08 一 xff09 Hadoop3 2 2完全分布式集群环境搭建 xff08 二 xff09 Zookeeper入门之分布式集群的搭建 xff08 三 xff09 HBase分布式集群
  • picgo+github 图床的使用

    picgo 43 github图床的使用 PicGo这款工具 xff0c 可以轻易的将图片转换为链接 1 准备工作 下载picgo xff1a 在github新建一个仓库 xff0c 用来存放图片 2 然后进入github设置 xff1a
  • Zookeeper入门之分布式集群的搭建(二)

    Zookeeper入门之分布式集群的搭建 xff08 一 xff09 Hadoop3 2 2完全分布式集群环境搭建 xff08 二 xff09 Zookeeper入门之分布式集群的搭建 xff08 三 xff09 HBase分布式集群的搭建
  • HBase分布式集群的搭建(三)

    HBase分布式集群的搭建 xff08 一 xff09 Hadoop3 2 2完全分布式集群环境搭建 xff08 二 xff09 Zookeeper入门之分布式集群的搭建 xff08 三 xff09 HBase分布式集群的搭建 安装 准备工
  • springboot集成swagger3.0

    Swagger3 0 最新版使用 Swagger 最新版的配置步骤和旧版本是一样 xff0c 只是每个具体的配置项又略有不同 xff0c 具体步骤如下 1 添加依赖 span class token comment lt https mvn
  • Windows/IDEA 常用快捷键

    windows 搜索的快捷键 ctr 43 F 切换窗口 win 43 1 2 3 根据任务栏切换 win 43 tab 显示图标 alt 43 esc 切换到上一个 最小化当前窗口 ctr 43 ESC 最小化所有窗口 CTR 43 D
  • windows mysql8.0.26的安装

    mysql8 0 26的安装 1 下载 https dev mysql com downloads mysql 2 解压并在mysql中的bin目录下创建my ini配置文件 mysqld 设置3306端口 port 61 3306 设置m
  • Linux(Debian,Centos,Ubuntu等) gcc的安装

    Linux gcc的安装 xff08 一 xff09 准备工作 1 什么是gcc xff1f GNU编译器集合 xff08 GCC xff09 是一个开源的编译器和库集合 xff0c 支持C xff0c C 43 43 xff0c Obje
  • nodeJs开发app.js解析

    在 node js 中模块分为核心模块和文件模块两种 xff0c 核心模块是通过 require 39 xxxx 39 导入的 xff0c 文件模块是以 require 39 xxxx 39 或 require 39 xxxx 39 req
  • Linux 安装最新版Redis(超简单详细)

    Redis最新版的安装 可以从官网下载 xff0c 然后传输到你的GUN linux中 xff0c 也可像下面那样用wget命令下载 xff0c 下载完后安装步骤基本一样 xff08 一 xff09 安装 1 下载 span class t
  • git:OpenSSL SSL_read: Connection was reset, errno 10054

    方式一 xff1a 可能为网络不稳定 xff0c 连接超时导致的 xff0c 可再次尝试提交 span class token function git span push 方式二 xff1a 打开Git命令页面 xff0c 执行git命令
  • springcloud nacos config快速入门

    nacos config 1 为什么需要配置中心 xff1f 传统配置的方式已经暴露出了很多问题 xff0c 其他的诸如 xff1a 历史版本管理 xff0c 权限控制 xff0c 安全性等等问题 xff0c 是传统的配置文件无法解决的 x
  • 左移运算符和右移运算符的使用

    先简单介绍一下 xff0c 左移运算符和右移运算符的功能 xff1a 计算机中的数字是以二进制补码的形式存放的 xff0c 而左移和右移运算符就是将内存中的二进制补码数字向左或者右移动 左移的结果 xff1a 1 左移会让最高位溢出 xff
  • 51单片机对直流电机的控制

    占空比 61 周期内高电平持续的时间 整个周期 直流电机驱动芯片选择L293D 电机正转 xff1a span class token macro property span class token directive hash span
  • C++结构体数组 | 结构体数组的使用

    C 43 43 结构体数组 C 43 43 结构体数组与以前介绍过的数值型数组的不同之处在于 xff1a 每个数组元素都是一个结构体类 型的数据 xff0c 它们都分别包括各个成员项 C 43 43 结构体数组定义 C 43 43 结构体数
  • 小程序开发学习(4)---天气预报接口API篇

    文章目录 1 实现用户定位API2 获取定位信息 1 实现用户定位API 天气预报API大多数都是需要收费的 xff0c 但是在现在学习阶段可以不需要购买收费的 xff0c 网上能找到免费的天气预报API地址 xff0c 但是可能不是很好找

随机推荐