【计算机网络】图解内容分发网络 CDN

news2024/11/16 8:48:39

【计算机网络】图解内容分发网络 CDN

参考资料:

用了CDN就一定比不用更快吗?

什么是内容分发网络

高性能利器:CDN我建议你好好学一下!

文章目录

  • 【计算机网络】图解内容分发网络 CDN
    • 一、CDN 概述
      • 1.1、什么是 CDN
      • 1.2、为什么需要 CDN
        • 1.2.1、互联网中的三个一公里
        • 1.2.2、运营商的互联互通问题
        • 1.2.3、难兄难弟
    • 二、CDN 工作原理
      • 2.1、接入CDN
        • 2.1.1、两个重要的概念
        • 2.1.2、怎么知道哪个服务器IP里调用方最近?
      • 2.2、CDN访问过程
        • 2.2.1、传统模式下DNS的调度过程
        • 2.2.2、有CDN参与的DNS调度过程
    • 三、CDN 的回源
      • 3.1、CDN的资源可以直接访问吗?
      • 3.2、回源是什么?
      • 3.3、怎么判断是否发生回源
    • 四、CDN的组成
      • 4.1、全局负载均衡系统 GLB
      • 4.2、缓存服务器
      • 4.3、源站
      • 4.4、CDN的分层架构
    • 五、CDN 总结

一、CDN 概述

1.1、什么是 CDN

CDN 全称 Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定

CDN 的工作原理 就是将源站的资源缓存CDN各个节点上,当请求命中了某个节点的资源缓存时,立即返回客户端,避免每个请求的资源都通过源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验。

内容分发网络 解决了因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。

1.2、为什么需要 CDN

CDN并非网络基础设施,而是构建在实体网络基础设施的一个"应用层",来看看为什么需要它。

1.2.1、互联网中的三个一公里

image-20230503195011000

这幅图展示了互联网通信领域中常说的"三公里":

  • 第一公里
    网站服务器接入互联网公网的链路,这里的带宽也决定了网站的负载能力,也称为网站的接入带宽。
  • 中间一公里
    中间一公里主要是接入网、城域网、骨干网组成的链路实体,其中会涉及多家运营商,也就出现了运营商之间互联互通的数据交换问题。
  • 最后一公里
    这是用户接入互联网获取信息的最后环节,换句话说就是你们小区的网络、你们家楼的网,往往这部分的带宽不高,影响也比较明显。

1.2.2、运营商的互联互通问题

运营商之间数据的互联互通问题,比如A市联通要访问A市电信的数据资源,按照互联互通的规则限制,不同运营商的数据要在指定的交换中心进行数据交换,假如交换中心位于较远的B市,那么就存在如下图的关系:

image-20230503195156453

换句话说,本来两个运营商是同一个城市的,但由于运营商的网络差异需要到几百公里之外的交换中心所在的城市进行数据交换,实现资源的访问。

对于不同运营商间的互联互通,一般是采用BGP peering(对等)的方式进行。两家运营商相互协商,在特定地点建立连接,通过一系列的配置,运营商A的用户就能访问运营商B的资源了。
在中国,运营商之间通过“国家级互联网骨干直联点”进行连接,2001到2014年,国内只有北上广三个直联点,导致跨网访问体验极差,流量无法本地中转需要长途迂回,大大增加了延迟。

1.2.3、难兄难弟

试想北美的海外用户要访问在服务器在深圳的资源,物理距离就有几万公里,算上三个一公里的消耗,恐怕用户的体验会非常糟糕。

image-20230503195410524

同样的,网站服务器的接入带宽是有限的,对于海量用户的接入访问非常容易出现拥塞,这样很容易把网站服务器压垮。

image-20230503195435788

同时,对于运营商来说也很糟糕,骨干网充斥着大量相同的请求,网络基建压力很大,如果把这些请求在本地处理掉该多好!

可见,如果没有CDN这一层Cache应用,网站、用户、运营商都会很崩溃。

image-20230503195502822

二、CDN 工作原理

2.1、接入CDN

在接入CDN前,当我们访问某个域名,直接拿到第一个真实服务器的IP地址,整个流程如下:

image-20230503195809844

当我们需要加速网站时,通过向运营商注册自己加速域名,源站域名,然后进入到自己域名的DNS配置信息,将 A 记录修改成 CNAME 记录即可。阿里云加速申请参考如下:

image.png

2.1.1、两个重要的概念

比如为源站abc.com到阿里云进行域名加速,配置完成后阿里云会自动关联生成加速域名的别名如abc.com.aliyuncdn.net,这个别名也称为CNAME。

image-20230503200525925

这里我们提两个重要的概念:CNAME和A记录,它们是理解CDN的基础概念。

CNAME记录,也叫别名记录,比如www.xx.com的别名是www.yy.com,CNAME记录是一种指向关系,把www.yy.com指向了www.xx.com,一个域名可以有多个别名,存在多对一的关系。

A记录,即Address记录,我们可以把它理解为一种域名和IP地址的映射关系。

drawio

由于加速域名已经进行了CDN的CNAME配置,在权威DNS服务器的解析下得到的并不是IP地址,而是CNAME。

2.1.2、怎么知道哪个服务器IP里调用方最近?

可以看到"最近"这个词其实是加了双引号的。

CDN专用的DNS域名服务器其实是CDN提供商提供的,比如阿里云当然知道自己的的CDN节点有哪些,以及这些CDN服务器目前的负载情况和响应延时甚至权重啥的,并且也能知道调用方的IP地址是什么,可以通过调用方的IP知道它所属的运营商以及大概所在地,根据条件筛选出最合适的CDN服务器,这就是所谓的"最近"。

举个例子。假设地理位置最近的CDN机房流量较多,响应较慢,但地理位置远一些的服务器却能更好的响应当前请求,那按理说可能会选择地理位置远一些的那台CDN服务器。

也就是说,选出来的服务器不一定在地理位置最近,但一定是当前最合适的服务器。

2.2、CDN访问过程

2.2.1、传统模式下DNS的调度过程

image-20230503200123027

  1. 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
  2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。
  3. 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”
  4. 本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com 的 IP 地址吗?”
  5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。
  6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
  7. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

2.2.2、有CDN参与的DNS调度过程

当我们在浏览器输入这个URL就会发起HTTP GET请求,然后经历以下过程。

image-20230503201837010

1、用户访问图片内容,先经过 本地DNS 解析,如果 LDNS 命中,直接返回给用户。

2、LDNS MISS,转发 授权DNS 查询

3、返回域名 CNAME picwebws.pstatp.com.wsglb0.com. 对应IP地址(实际就是DNS调度系统的ip地址)

4、域名解析请求发送至DNS调度系统,DNS调度系统为请求分配最佳节点IP地址。

5、返回的解析IP地址

6、用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。

三、CDN 的回源

3.1、CDN的资源可以直接访问吗?

我们平时看到的图片,可以右键复制查看它的URL。

image-20230503202251367

会发现图片的URL长这样。

https://cdn.xiaobaidebug.top/1667106197000.png

其中前面的cdn.xiaobaidebug.top就是CDN的域名,后面的1667106197000.png是图片的路径名。

也就是说这张图片是访问CDN拿到的。

那么,直接访问对象存储能不能拿到图片数据并展示?

比如像下面这样。

https://oss域名/图片地址.png

当然能。但这样成本更高,这里的成本,可以指性能成本,也可以指调用成本。看下下面这个图。

image-20230503202424738

3.2、回源是什么?

上面的截图里,红框里有个词叫"回源"。

当我们访问https://cdn域名/图片地址.png时,请求会打到cdn服务器上面。但cdn服务器本质上就是一层缓存,并不是数据源,对象存储才是数据源

第一次访问cdn获取某张图片时,大概率在cdn里并没有这张图片的数据,因此需要到数据那去取出这份图片数据。然后再放到cdn上。下次再次访问cdn时,只要缓存不过期,就能命中缓存直接返回,这就不需要再回源。

于是访问的过程就变成了下面这样。

image-20230503203032080

那还有哪些情况会发生回源呢?

除了上面提到的cdn上拿不到数据会回源站外,还有cdn上的缓存过期失效了也会导致回源站。另外,就算有缓存,且缓存不过期,也可以通过cdn提供的开放接口来触发主动回源,但这个我们比较少机会能接触到。

另外,回源这个事情,其实用户是感知不到的,因为用户去读图片的时候,只能知道自己读到了还是读不到。

同样是读到了,还细分为是从cdn那直接读的,还是cdn回源读对象存储之后返回的

image-20230503203146759

3.3、怎么判断是否发生回源

假设我要请求下面这张图https://cdn.xiaobaidebug.top/image/image-20220404094549469.png

为了更方便的查看响应数据的http header,我们可以用上postman

image-20230503203242373

此时查看response header下的X-Cache的值是 MISS TCP_MISS。意思是未命中缓存导致CDN回源查oss,拿到数据后再返回。

那此时CDN里肯定是有这张图片的缓存了。我们可以试着再执行一次 GET 方法获取图片。

image-20230503203442829

X-Cache的值就变成了 HIT TCP_MEM_HIT,这就是命中缓存了。

这个是某里云的做法,其他比如腾某云啥的,也都大差不差,几乎都可以从response header里找到相关的信息。

四、CDN的组成

4.1、全局负载均衡系统 GLB

image-20230503203749794

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

4.2、缓存服务器

缓存服务器主要的功能就是缓存热点数据,数据类型包括:静态资源(html,js,css等),多媒体资源(img,mp3,mp4等),以及动态数据(边缘渲染)等。

众所周知耳熟能详的与 CDN 有关的开源软件有:

  • Squid
  • Varnish
  • Nginx
  • OpenResty
  • ATS
  • HAProxy

4.3、源站

源站指发布内容的原始站点。添加、删除和更改网站的文件,都是在源站上进行的;另外缓存服务器所抓取的对象也全部来自于源站。

4.4、CDN的分层架构

image-20230503204242278

五、CDN 总结

1、资源访问加速: 本地Cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性

2、消除运营商间网络互联的瓶颈问题: 镜像服务消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。

3、远程加速: 远程访问用户根据DNS负载均衡技术 智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度

4、带宽优化: 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。

5、集群抗攻击: 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。

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

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

相关文章

数字化转型导师坚鹏:数字化转型背景下的企业人力资源管理

企业数字化转型背景下的企业人力资源管理 课程背景: 很多企业存在以下问题: 不清楚企业数字化转型目前的发展阶段与重要应用? 不知道企业数字化转型给企业人力资源管理带来哪些机遇与挑战? 不知道企业数字化转型背景下如何…

SpringBoot 项目如何实现动态配置多数据源?

简介: dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7, SpringBoot 1.4.x 1.5.x 2.x.x。 特性: 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持…

认识JavaBean

什么是JavaBean? JavaBean是指符合特定规范以及定义的Java类,通常用于封装数据,提供访问数据的方法和属性,并且可以被其他程序重用。它具有以下特点: 遵循特定编程规范:JavaBean必须要遵循JavaBean编程规范&#xff…

分层领域模型相关总结(DO/PO/VO/BO/DTO/Query等概念)

分层领域模型(DO/PO/VO/BO/DTO/Query等概念) 1. 为什么会有这么多O的概念? 各种分层概念的提出都是为了解耦,增加逻辑/代码的复用,便于后期维护/开发,提高团队开发效率;but,过多的细分也会使得开发过程相对…

Chrome 113 发布,默认启用 WebGPU

经过四周时间开发,Chrome 113 稳定版正式推出,新版本包括用于视频电话会议的 AV1 视频编码、WebGPU,以及其他增强功能。 默认启用 WebGPU WebGPU 是用于 Web 的新 API,它使用了现代的硬件功能,允许在 GPU 上进行渲染和…

Unable to import maven project: See logs for details错误的多种解决方法

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 解决方法一3.2 解决方法二 4. 补充说明 1. 复现错误 今天从gitlab上下载完项目后,无法启动项目,留意到右下角的Evnet Log,点开如下图所示: 即Unable to import maven project: See…

vue-element-admin快速搭建后台模板

快速搭建后台模板 环境以及会出现的问题安装目录结构基本配置路由配置 环境以及会出现的问题 node版本17.0.0 python版本2.7.10(node-sass依赖) 运行项目报错Error: error:0308010C:digital envelope routines::unsupport 请看这篇文章 https://blog.cs…

FM33A048B I2C

I2C 模块实现MCU 与外部I2C 接口器件之间的同步通信,硬件实现串并转换。支持I2C 的主机模式,不支持从机模式和多主机模式。 特点: ⚫ 只支持I2C 主机模式, 不支持从机模式和多主机模式 ⚫ 支持7 位或10 位从机地址 ⚫ 传输速度支持标准模式(1…

Java面试题总结 | Java面试题总结10- Feign和设计模式模块(持续更新)

文章目录 Feign项目中如何进行通信Feign原理简述 设计模式spring用到的设计模式项目的场景中运用了哪些设计模式写单例的时候需要注意什么工厂模式的理解设计模式了解么工厂设计模式单例设计模式代理设计模式策略模式**模板方法模式**观察者模式**适配器模式**观察者模式**适配…

TimeScaleDB食用手册

TimescaleDB食用手册 一 TimescaleDB介绍 TimescaleDB是一种用于处理时间序列数据的开源时序数据库,它是PostgreSQL的扩展。它可以处理大量的时间序列数据,并且支持SQL查询和连续聚合功能。 1.TimescaleDB的优点 分布式架构:TimescaleDB利…

类和对象上

文章目录 一、类的定义1、声明和定义全部放在类体中2、 类声明放在.h文件中,成员函数定义放在.cpp文件中 二、类的访问限定符三、类的作用域类及其实例化1、作用域2、实例化 四、类对象大小的计算1、计算对象(仅成员变量)2、计算方式&#xf…

iMazing2官方下载最新iPhone/iPad手机设备管理工具

iMazing 2最新版它可以完美地在 iOS 设备之间传输数据。 该软件专门设计用于为用户提供对 iPhone、iPod 和 iPad 的更多控制和管理能力。 它将所有这些高价值设备变成了外部存储,以便您可以交换各种数据,例如短信、通话记录、视频或照片。值得信赖的是&a…

学习k近邻算法(KNN)【自学且自用】

文章目录 1 概念2 原理及举例3 KNN中最常用的距离度量——欧式距离4 K值的选择5 knn和k-means的区别 参考的一些网页: https://zhuanlan.zhihu.com/p/143092725 1 概念 k近邻算法(k-nearest neighbour,k-NN)是一种基本分类与回归…

JavaEE-HTML常用标签了解(二)

目录 表格标签合并单元格 列表标签表单标签无语义标签HTML特殊字符 表格标签 table 标签: 表示整个表格tr: 表示表格的一行td: 表示一个单元格th: 表示表头单元格. 会居中加粗thead: 表格的头部区域(注意和 th 区分, 范围是比 th 要大的)tbody: 表格得到主体区域. <table …

CAS简介

文章目录 前言一、锁&#xff1f; CAS?二、juc--java.util.concurrent1.CAS思想的落地2 ABA问题出现3 可以解决的问题 总结 前言 CAS的全称是&#xff1a;比较并交换&#xff08;Compare And Swap&#xff09;。在CAS中&#xff0c;有这样三个值&#xff1a; V&#xff1a;要…

基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)

摘要&#xff1a;本文重点介绍了基于YOLOv5目标检测系统的MATLAB实现&#xff0c;用于智能检测物体种类并记录和保存结果&#xff0c;对各种物体检测结果可视化&#xff0c;提高目标识别的便捷性和准确性。本文详细阐述了目标检测系统的原理&#xff0c;并给出MATLAB的实现代码…

IPRAN网络结构智能优化

IPRAN&#xff08;Internet Protocol Radio Access Network&#xff09;是指基于IP技术的无线接入网络&#xff0c;是当前移动通信重要基础网络。然而&#xff0c;随着技术的快速发展&#xff0c;IPRAN网络规模不断扩大&#xff0c;网络结构日趋复杂&#xff0c;运维网优愈发困…

基于数据和AI之上,数说故事首发“人、货、场、域”W-SCC测量体系|D3大会演讲实录

无测量&#xff0c;不营销。 品牌在加速更迭、场景在垂直发展、需求在不断升级&#xff0c;借助数字化力量可以实现更精准、长效的营销增长。但如果连营销效果都无法被量化测量&#xff0c;那么一切为了增长的“轮番”操作只会沦为“锦团花簇”&#xff0c;品牌营销的真正实效…

使用ChatGPT工具阅读文献的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

PySpark基础入门(1):基础概念+环境搭建

目录 Spark基础入门 spark基础概念 spark架构 Spark环境搭建 local模式 Standalone 模式 Spark On YARN 模式 PySpark开发环境搭建 Python On Spark 执行原理 更好的阅读体验&#xff1a;PySpark基础入门&#xff08;1&#xff09;&#xff1a;基础概念&#xff0b;环…