CDN工作原理以及使用CDN的好处

news2024/11/25 14:31:43

所有的大厂以及其他很多互联网公司都使用了CDN,那CDN到底是什么呢?为什么要使用?一起来看看吧!

文章目录

  • 1. 什么是CDN?
  • 2. CDN 是怎么工作的?
  • 3. 使用 CDN 有什么好处?
    • 3.1 缩短网站加载时间
    • 3.2 减少带宽成本
    • 3.3 可靠性
    • 3.4 针对攻击有恢复能力

1. 什么是CDN?

  内容分发网络(CDN)是指一组分布在不同地理位置的服务器,协同工作以提供互联网内容的快速交付。

  CDN 允许快速传输加载互联网内容所需的资源,包括 HTML 页面、javascript 文件、样式表、图像和视频(视频可能有其他专门维护的服务器)。 CDN 服务已得到不断普及。如今,几乎所有 web 流量都通过 CDN 提供服务。比如Vue打包后的文件都放到了CDN。

  正确配置的 CDN 还可帮助保护网站免受某些常见的恶意攻击,例如分布式拒绝服务(DDOS)攻击。


2. CDN 是怎么工作的?

  CDN 的核心是一个服务器网络,目的是尽可能快速、便宜、可靠和安全地交付内容。为了提高速度和连接性,CDN 会将服务器放置在不同网络之间的交换点。

  CDN 通常会将服务器放置在不同网络之间的交换点。这些互联网交换点(IXP)是不同互联网提供商连接的主要位置,以便彼此提供对来自其不同网络的流量的访问。除了 IXP 外,CDN 还将服务器放置在位于全球高流量区域和战略位置的数据中心,以便能够尽快移动流量。


3. 使用 CDN 有什么好处?

3.1 缩短网站加载时间

这里用我在外网看到的例子,看看使用 CDN 和不使用 CDN 在加载时间上有何不同?

  假设纽约的某个人需要访问新加坡服务器上托管的网站。这两个位置相隔甚远,物理距离为大约 9,520 英里。

  如果承载网站内容的服务器(源站服务器)位于新加坡,则对各个网页资产的每个请求都必须从纽约前往新加坡,然后再返回。如同搭乘具有许多连接点的国际航班一样,每个请求在从 A 点传到 B 点的远距路程中都要经过一系列路由器。

  请求从纽约到新加坡必须沿途经过每个路由器位置,因此总距离和每个路由器处理请求所花费的时间都会增加传输时间(延迟)。一旦源服务器处理了请求并响应了发出请求的客户端,它就会将信息发送回去,通过类似的路由器序列后返回到纽约。此总往返行程的度量在电信中称为 RTT(往返时间)。暂时忽略可用带宽和潜在的网络拥塞,我们来看一个延迟因素的例子。

为便于阐述,我们假设:

  • 请求从纽约到新加坡需要 250 毫秒。
  • 建立一个 TCP/IP 连接将添加 3 次 250 毫秒延迟。
  • 网页需要 5 个不同的文件,包括图片、JavaScript 文件和网页本身。

我们粗略看一下该网页的加载时间:

  • 750 毫秒:在纽约的客户端和新加坡的源站服务器之间建立 TCP/IP 连接。
  • 250 毫秒:对网页的 HTTP 请求从纽约传送到新加坡。
  • 250 毫秒:纽约的请求者收到来自新加坡的源站服务器的响应,响应中包含 200 状态码和包括所有需要的其他资产的网页。
  • 250 毫秒:纽约的客户端请求这 5 项资产中的每一项。
  • 1500 毫秒:这五项资产从新加坡的源站服务器异步交付给客户端。

在这个简单示例中,网页加载的总传输时间约为 3000 毫秒。

  每次发出请求并发送响应时,都要遍历纽约客户与新加坡源站之间的整个路径。随着网站规模扩大并需要更多资产,A 点和 B 点之间的延迟会不断增加。

  我们再看一下向纽约的 Web 客户端提供托管在新加坡的内容的示例,但这一次新加坡站点使用一个在亚特兰大设有服务器的 CDN,其含有静态网站的缓存副本:

  • 请求从纽约到亚特兰大需要 50 毫秒。
  • 建立一个 TCP/IP 连接将添加 3 次 50 毫秒延迟
  • 网页需要 5 个不同的资产,包括图片、JavaScript 文件和网页本身。

我们粗略看一下该网页使用 CDN 时的加载时间:

  • 150 毫秒:在纽约的客户端和亚特兰大的边缘服务器之间建立 TCP/IP 连接。
  • 50 毫秒:对网页的 HTTP GET 请求从纽约传送到边缘服务器。
  • 50 毫秒:客户端收到来自边缘服务器的响应,响应中包含网页以及还需要的其他资产的列表。
  • 50 毫秒:客户端请求这 5 项资产中的每一项。
  • 800 毫秒:这五项资产从边缘服务器异步交付给客户端。

网页加载的总传输时间约为 1100 毫秒。

  在本例中,客户端与内容之间距离缩短使静态内容的延迟时间缩短了 1900 毫秒;也就是说,加载时间缩短了将近 2 秒钟。

  通过缩短所有必要流量都需要遍历的总距离,网站的每一用户都能节省大量加载时间。用户会随着等待时间增加而开始迅速离开站点(跳出),因此这种改进既代表了更好的用户体验,也代表着更长的页面停留时间。

注意:这不包括下载以及处理请求和响应所需的时间,仅计算在两个位置之间传输信息所需的传输时间。其他重要延迟因素还包括数据缩减、硬盘速度和网络拥塞。

3.2 减少带宽成本

  CDN 减少网站运营商支出的主要方式是减少往返源服务器的行程。由于 CDN 会缓存网站上的大部分内容并从缓存中提供这些内容,因此源服务器不必一遍又一遍地传递相同的内容。相反,CDN 代表源服务器执行此操作。

  当用户访问网站时,他们的浏览器将通过互联网加载内容。如果网站不使用 CDN,则所有内容都必须来自源服务器,这意味着每次网站加载时,HTTP 请求都会到达源服务器,而内容则从同一台服务器发出。这种情况发生的次数越多,传输的数据就越多,从而导致网站运营商的成本更高。

  这么说可能不明白,举个例子

  当客户端从源站服务器请求文件时,请求通常需要传送到服务器,然后再传回来。CDN 将静态内容文件从源站服务器拉取到分布式 CDN 网络中,从而减少延迟,这个过程称为缓存,某些 CDN 允许有选择地缓存动态内容。数据经过缓存之后,CDN 将从最近的 CDN 数据中心向客户端提供内容。

  当完成 TCP 握手后,客户端就会向 CDN 的网络发出 HTTP 请求。如果内容没缓存,则 CDN 将首先通过在源站服务器和 CDN 边缘服务器之间进行额外一次请求,从源站下载内容。

典型的 CDN 高速缓存过程包含以下 4 个步骤:

  • 当用户请求网页时,用户的请求被路由到 CDN 中最近的边缘服务器。
  • 边缘服务器接着向源站服务器请求用户请求的内容。
  • 源站响应边缘服务器的请求。
  • 边缘服务器响应客户端。

如下图:

  CDN 与客户端的近距离价值是在向源站服务器发出初始请求之后体现出来的。一旦数据从源站服务器缓存到 CDN 网络中,来自客户端的每个后续请求都只需到达最近的边缘服务器即可。如果最近的边缘服务器比源站服务器近,就能减少延迟并且更快提供内容。

如下图:

  我们知道,客户端和服务器之间数据交换越少越好。其实,优化在开发人员打包的时候已经进行处理了。webpack打包会将代码压缩、变量名精简、删掉空格和多余的注释等等。

// 这是注释,在打包的时候可以配置选择性的删除
function hello(string name) {
	console.log("hello, " + name + " welcome!");
}

压缩之后可能会变成下面的样子

h:function(n){console.log("hello, "+n+" welcome!");}

  这样不仅减少了CDN与源服务器传输的数据量,还减少 CDN 的缓存服务器和客户端之间的总体数据传输量,这进一步缩短了前端页面加载时间。当传输的数据总量下降时,延迟和所需带宽都会减少。

  上面说到了代码压缩,其实还有文件压缩,若要减少通过互联网传输数据时所需的延迟和带宽消耗,文件压缩是一个重要组成部分。GZip 是常用的压缩方法,许多 CDN 提供商默认情况下都启用 GZip,GZip 压缩后的文件的大小比初始文件小大约 50% 到 70%。

CDN是否增加成本?
大多数CDN为其服务收费,但每月数据传输节省的费用通常会超过使用CDN的成本。

3.3 可靠性

  有时互联网上的内容会出错。服务器出现故障,网络变得拥挤甚至连接中断。CDN 让 Web 应用程序即使在面对这些问题时也能够为用户提供不间断的服务。

  CDN 平衡网络流量的负载,确保没有一台服务器不堪重负。如果单个服务器停止工作,CDN 可以启动“故障转移”过程,让备份服务器接管。

  故障转移可用于防止在服务器不可用时丢失流量。当服务器发生故障时,流量需要重新路由到仍在正常运行的服务器。通过自动将任务卸载到备用系统或其他具有可用容量的机器上,智能故障转移可以防止面向用户的服务出现中断。

  一些 CDN可以路由绕过网络拥塞,就像地图高德百度导航可以找到绕过繁忙的路段。由于 CDN 由分布在许多不同数据中心的多台服务器组成,因此它们还可以提供大量冗余。如果服务器、数据中心或整个数据中心区域出现故障,CDN 仍然可以从网络中的其他服务器传送内容。

3.4 针对攻击有恢复能力

  CDN 特别适合用于保护网站免受拒绝服务 (DoS) 和分布式拒绝服务 (DDoS) 攻击。在这些攻击中,攻击者将大量垃圾网络流量引导至网站,试图使网站不堪重负并崩溃。凭借其众多服务器,CDN 能够比单个源服务器更好地吸收大量流量,甚至是来自 DDoS 攻击的非自然流量峰值。通过这样做,它们即使在受到攻击时也能保持网站在线。

  一些 CDN 使用 Anycast 路由方法,将互联网流量传输到特定的可用数据中心。这是为了确保缩短响应时间,并防止任何一个数据中心在发生 DDoS 攻击等异常需求时变得不堪重负。

  借助 Anycast 技术,多台机器可以共享同一个 IP 地址。当请求发送到 Anycast IP 地址时,路由器会将其定向到最近网络上的机器。如果整个数据中心发生故障或因其他原因而无力应对大量通信,Anycast 网络可以对服务中断做出响应,这类似于负载均衡器在一个数据中心中跨多台服务器传输通信;数据从故障位置转移走,路由到仍然在线并可正常运作的另一个数据中心。

  如今,DDoS 攻击是对互联网资产可靠性的最大威胁之一。使用 Anycast 技术的 CDN 在缓解 DDoS 攻击方面具有更大的灵活性。在大多数现代 DDoS 攻击中,典型的单播连接计算机无力承受,有了 Anycast 网络,僵尸网络攻击流量的一部分可以分散到多个数据中心,从而减少攻击的影响。



欢迎一键三连~

有问题请留言,大家一起探讨学习

----------------------Talk is cheap, show me the code-----------------------

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

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

相关文章

Zookeeper[2]- Zookeeper集群环境搭建

前边步骤可参考: Zookeeper[1]-Zookeeper介绍与安装以及集群环境准备_豆虫儿的博客-CSDN博客Zookeeper的介绍和安装Zookeeper客户端使用ZookeeperJavaAPI使用我们为了学习Dubbo,而在dubbo中需要一个注册中心,而Zookeeper是我们在使用Dubbo是官方推荐的…

作业-12.13【使用QT制作一个简单的登录界面】

#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); //设置窗口属性 this->setWindowTitle("Sumeru Dance Training"); this->setFixedSize(8…

[激光原理与应用-52]:《激光焊接质量实时监测系统研究》-3-传感器选型和电路设计

目录 3.1 传感器的选取 3.1.1 光电探测基本概念 3.1.2 可见光传感器 3.1.4 声音传感器 3.2 信号调理电路 3.2.0 可见光电信号前置放大电路 3.2.1 红外光电信号前置放大电路 3.2.2 程控自适应增益的光信号放大电路 3.2.3 光信号滤波电路 3.2.4 声信号调理电路 3.3 数据…

【图像处理】边缘检测算子有哪些以及它们之间的对比

这个问题应该是做过传统图像处理的人都接触过的吧。粗略总结下,应该也不会问太细,面试官大概就考察下大家的知识面吧。 综述 边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。图像边缘检测大幅度地减少了数据量&#xf…

第五章. 可视化数据分析图表—常用图表的绘制3—散点图,面积图,热力图

第五章. 可视化数据分析图 5.3 常用图表的绘制3—散点图,面积图,热力图 本节主要介绍常用图表的绘制,主要包括散点图,面积图,热力图。 1.散点图(matplotlib.pyplot.scatter) 散点图主要用来查…

Redux Hooks actions 调用方式优化(一)

hooks 可以说是现在react编程的的主流,redux 迎合这个主流也推出 toolkit 工具集来。但是在用toolkit 搭建前端框架后,给人的感觉就是比原先的connect 那一套好些,但用起来还是挺繁琐的。 一 toolkit 搭建的正常使用版本 1.1 创建store im…

三、pcm音频转wav

前言 ffmpeg录制下来的音频为pcm格式(内部存储着十六进制数据),但pcm格式的音频无法直接播放 本文先将pcm转换成wav格式(提要提前了解音频知识) 首先分析wav文件格式(wav的本质是在pcm数据前加上文件头&a…

[附源码]Node.js计算机毕业设计电子工厂进销存管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

《Linux运维总结:Centos7.6使用yum安装Mysql8.0.31》

一、使用yum安装mysql服务 官方:下载对应的yum源 1、yum源下载 [rootlocalhost ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm [rootlocalhost ~]# rpm -ivh mysql80-community-release-el7-7.noarch.rpm如下图所示:…

vsftpd 升级3.0.2-29 和 增加账号访问

一、下载文件至/opt 百度网盘: 链接: https://pan.baidu.com/s/1Ad20bm5fvw8WvtaV3uHGYA 提取码: 2pa9 二、安装 2.1、切换目录 命令:cd /opt 2.2、授权 命令:chmod x centos7.6-vsftpd-upgrade.sh 2.3、安装 命令:./cent…

D. Lucky Chains(gcd + 线性筛)

Problem - D - Codeforces 如果一对正整数(x,y)的最大公除数等于1(gcd(x,y)1),我们就把它们命名为幸运。 让我们把由(x,y)引起的链定义为一个由(x,y), (x1,y1), (x2,y2), ..., (xk,yk)组成的序列,对于某个整数k≥0。 如果链中的所有配对都是幸运的&…

2022-12-13 note

1、linux内核的特点 1. linux内核是完全开源的作者:linusgit --> 代码版本管理工具 2. linux内核源码支持多种不同的架构,比如arm架构,powerPC,mips,Risc-V,X86等 3. linux内核采用模块化的编译的思想 4. 在linux内核中只允许出现C代码或…

优秀的PM如何轻松应对公司90%以上的沟通难题

项目经理和PMO工作中最多的事情往往是沟通,但是你在工作中会不会遇到很多沟通难题?如果其他环节的人处理不好还可以理解,但是咱们处理不好就说不过去了,并且还会让人感觉不专业,丧失很多机会,甚至失去领导的…

代码随想录Day49|121.买卖股票的最佳时期、122.买卖股票的最佳时期II

文章目录121.买卖股票的最佳时期、122.买卖股票的最佳时期II121.买卖股票的最佳时期、 文章讲解:代码随想录 (programmercarl.com) 题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode) 题目: 给定一个数组 prices…

Metal每日分享,调整灰度系数gamma滤镜效果

本案例的目的是理解如何用Metal实现灰度系数效果滤镜,输入像素rgb进行次方运算获取到新的rgb; Demo HarbethDemo地址 实操代码 // 灰度系数滤镜 let filter C7Gamma.init(gamma: 3.0)// 方案1: ImageView.image try? BoxxIO(element: originImage,…

[附源码]Node.js计算机毕业设计儿童闲置物品交易网站Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

六、JavaScript——变量的内存结构

一、内存 定义&#xff1a;内存是用于存储数据的地方&#xff0c;程序要执行一段代码&#xff0c;要先从硬盘加载到内存当中&#xff0c;再由内存发送给CPU,CUP才能对代码进行执行。 注&#xff1a;变量并不存储任何值&#xff0c;而是存储值的内存地址 JS定义一个变量 <s…

Telerik模拟生成规则的新设置

Telerik模拟生成规则的新设置 添加了对Microsoft.NET 7官方版本的支持。 添加了控制模拟生成规则的设置。 Telerik JustLock是一个易于使用的模拟工具&#xff0c;它将帮助您以前所未有的速度、更高的质量编写单元测试。JustLock允许您轻松地将测试场景与难以配置的依赖关系(如…

5G现场网的数字孪生体系架构

现场网面向钢铁生产和统一管理的场景&#xff0c;实现现场设备与数据采集器和控制器的网络连接和数据互通&#xff0c;现场网的ZigBee、蓝牙等短距离技术以及窄带物联网&#xff08; narrowbandinternetofthings,NB-IoT&#xff09;、超远距离&#xff08;longrange,LoRa&#…

病历开发SDK:TX Text Control ActiveX 31.x Crack

Visual Basic 6 应用程序的文档处功能齐全的文档编辑器 TX Text Control ActiveX是一种完全可编程的 Rich Edit 控件&#xff0c;它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功能。它提供全面的文本格式、强大的邮件合并功能和所有文字处理关键概…