CDN(Content Delivery Network)内容分发网络原理、组成、访问过程、动静态加速、作用详解

CDN简介

什么是CND

        CDN(Content Delivery Network)的缩写,是一种利用分布式节点技术,在全球部署服务器,即时地将网站、应用视频、音频等静态或动态资源内容分发到用户所在的最近节点,提高用户访问这些内容的速度和稳定性,降低网络拥塞和延迟,同时也能减轻源站的压力。提高网络或应用的可用性和安全型。

        CDN的基本原理是将源站的内容分发到离用户最近的节点上进行缓存,并通过智能路由、负载均衡等技术来保证用户能够快速、稳定地访问到所需资源。CDN将源站与用户之间的网络传输距离缩短,通过多节点并行传输,从而显著降低了网络传输的延迟和带宽消耗。

为什么需要CDN

        考虑如下场景:

        某部电视剧非常火爆,在某视频APP实现了1千万用户同时在线观看。如果大家观看的是1080p清晰度的视频(理论上需要4Mbps带宽),那么,累计需要的流量带宽是10,000,000×4Mbps=40,000,000Mbps=40Tbps。

        对于优酷、爱奇艺这样的互联网视频内容提供商来说,这无疑是非常巨大的流量压力。我们普通计算机的网卡,是1Gbps的带宽。如果优酷有一台超级服务器,那么,这台超级服务器就需要4万块网卡,而且必须百分之百跑满速度,才能够实现这1千万用户的流畅观看。对于一些实力不够的服务商,或者突发流量陡增的情况,就会造成拥塞,从而导致卡顿和延时。有这么一个说法:当用户打开一个页面,等待超过4秒,他就会关闭这个页面。也就是说,这个用户就会流失。

        CDN作为一项非常有效的缩短时延的技术,能够有效解决上述问题。

CDN的原理

        CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。(有点像电商的本地仓)

CDN与镜像服务器的区别:

        镜像服务器是源内容服务器的完整复制。

        CDN是部分内容的缓存,智能程度更好。CND = 更智能的镜像 + 缓存 + 流量导流。

CDN的系统组成

        CDN的系统组成通常包含以下组件:

源服务器

(Origin Server)

源服务器是存储网站内容的主要服务器。它存放着原始的网页、图像、视频和其他静态或动态文件。当内容发生更改时,源服务器会产生新的版本,并将其传递给 CDN。

边缘服务器

(Edge Server)

边缘服务器是部署在全球各个地点的服务器节点,它们构成了 CDN 的基础架构。每个边缘服务器都存有一部分或全部的缓存内容,包括从源服务器获取到的静态文件副本。边缘服务器负责提供内容的分发和加速,向用户提供最接近的服务器节点。

负载均衡器

(Load Balancer)

负载均衡器用于在多个边缘服务器之间均匀分配用户请求的流量。它根据不同算法(如轮询、最少连接等)将请求导向最优的边缘服务器,以实现负载均衡和高可用性。
缓存机制CDN 使用缓存机制来存储源服务器上的内容副本。当用户请求访问文件时,边缘服务器会尝试返回缓存中的副本,而不必每次都访问源服务器。这减少了对源服务器的负载,提高了响应速度和用户体验。

DNS

(Domain Name System)

DNS 解析用户请求的域名并将其映射到最近的边缘服务器。CDN 使用智能 DNS 解析技术,根据用户位置和网络条件来选择最优的边缘服务器。这确保用户能够通过最快的路径获取内容。
内容管理系统(Content Management System)内容管理系统用于管理和发布网站的内容。它可以与 CDN 集成,使更新的内容能够传递到 CDN,并在边缘服务器上进行缓存。

CDN的访问过程

        CDN的访问过程依赖于DNS的重定向技术即将用户定向至地理位置上距离其最近的边缘CDN节点服务器上。用户首先向根DNS服务器发送域名解析请求,根DNS服务器向授权DNS服务器发送域名解析请求,请求中包含了根服务器的IP地址,当域名解析服务器/根DNS服务器接受到一个CNAME类的DNS记录,域名解析服务器会重定向到CDN节点网络层中的智能CDN域名服务器上,CDN域名服务器将进行一系列的智能解析操作,根据本地DNS域名解析服务器的IP地址,分析各个网络线路的拥堵情况和负载情况,将最适合的CDN节点服务器IP地址返还给根DNS服务器,用户接受到CDN节点的IP地址后,直接向CDN节点服务器发送请求获取网站内容。

 

        具体步骤概括如下:

  1. 当用户点击APP上的内容,APP会根据URL地址去本地DNS(域名解析系统)寻求IP地址解析。
  2. 本地DNS系统会将域名的解析权交给CDN专用DNS服务器。
  3. CDN专用DNS服务器,将CDN的全局负载均衡设备IP地址返回用户。
  4. 用户向CDN的负载均衡设备发起内容URL访问请求。
  5. CDN负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的缓存服务器。
  6. 负载均衡设备告诉用户这台缓存服务器的IP地址,让用户向所选择的缓存服务器发起请求。
  7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。
  8. 如果这台缓存服务器上并没有用户想要的内容,那么这台缓存服务器就要网站的源服务器请求内容。
  9. 源服务器返回内容给缓存服务器,缓存服务器发给用户,并根据用户自定义的缓存策略,判断要不要把内容缓存到缓存服务器上。

CDN加速原理

        CDN的加速原理主要通过负载均衡、缓存机制、数据传输优化、动态加速技术和安全保障等方面来实现网络加速,提升用户的网络访问体验。

  • 负载均衡:CDN通过将用户请求分发到不同的节点,避免单一节点过载,从而保证用户请求响应速度。
  • 缓存机制:CDN将静态资源缓存在靠近用户的节点上,当用户请求这些资源时,可直接从缓存中获取,避免了从源站获取资源的耗时。
  • 数据传输优化:CDN采用自动智能路由技术,选择最优的传输路径,避免网络拥塞,从而优化数据传输过程。
  • 动态加速技术:CDN可以使用动态加速技术,对动态内容进行加速,例如应用程序、交互式内容和数据库查询等。
  • 安全保障:CDN可以提供一些常用的安全防护机制,如DDoS攻击防护、源站防护等,保障网站的安全。

静态加速

        静态加速是指对网页中的静态资源(包括html文件、CSS文件、js文件、图片、flash动画等)进行CDN节点缓存,使得用户在访问网页中的静态资源时,调取CDN边缘节点缓存;在访问网页中的动态资源如asp、php、jsp等时从源站中调取,从而实现“动静分离”,达到加速的目的。“动静分离”的好处在于用户访问网站时,静态资源直接从离自己最近的CDN节点缓存中获取(具体架构见使用CDN后的访问),减少用户访问静态资源的时间,同时又降低源站服务器的带宽压力、静态资源访问压力。

动态加速

        通过CDN众多节点找到一条最快的路由,去源站点取数据从而达到对动态网站加速,再配合数据压缩技术,可以将动态网站的访问速度提高10倍甚至100倍。另外,动态网站的页面内容一般是由静态图片和动态文本混合组成,而静态图片将会被缓存到CDN节点的硬盘上,也能提高动态网站的访问速度。        

        动态加速是指CDN的DNS解析中通过动态链路探测,监控网络环境的变化,监控各地网络延迟,寻找到一条最稳定、最高效、最快速的路径,回源动态资源,从而实现动态资源(如asp、php、jsp等)加速。然后构成链路列表,绑定到DNS解析上,更新到CDN的本地域名服务器上。简单架构见下图所示。

CDN的数据节点的更新和同步

        CDN分为推拉两种方式,推是服务器将内容推到cdn节点上,拉是cdn在第一次接受请求的时候从服务器拉取资源进行响应并保存,当资源在cdn缓存之后,如果服务器上的资源发生变化,cdn节点是不会知道的,除非缓存时间到期重新拉取或者修改新资源的访问。

        动态资源的话,一般都是无延迟的。静态对于 css 和 js 来说,建议在编译生成的阶段,为文件名加上时间戳。而且最好是在文件名里面,而不是 querystring 里面加。这是最方便的方案,因为一旦发生了更新,每次去取的一定是新文件,不涉及缓存刷新的问题

CDN的核心技术

  1. 内容路由技术:内容路由技术是CDN的核心技术之一,通过智能选择最优路径来实现请求的快速响应。其中包括DNS负载均衡、IP Anycast技术、BGP路由协议等。
  2. 缓存技术:CDN采用了高效的缓存技术,将内容缓存在离用户最近的节点上,实现快速访问。
  3. 分发技术:CDN采用多种分发技术,包括HTTP协议、HTTPS协议、流媒体协议等,同时支持直播和点播两种场景。
  4. 动态加速技术:CDN可以使用一些技术来加速动态内容的传输,例如Web加速技术、TCP协议优化技术、SSL加速技术等。
  5. 安全防护技术:CDN提供了多种安全防护技术,包括DDoS攻击防护、Web应用防火墙等。
  6. 数据分析技术:CDN可以对网站访问数据进行收集、整理和分析,帮助网站优化内容和提升用户体验。
  7. 智能控制平台:CDN主要通过智能控制平台提供服务,包括内容管理、性能监测、安全防护等。通过智能控制平台,CDN可以自动化、智能化地管理和优化网站内容分发。

CDN的主要作用

        CDN 的主要作用是通过就近缓存、加速内容传输和提供全球分发网络,改善用户体验,减轻源服务器负载,并提供更高的网站可用性和保护。

  • 加速内容传输:CDN 在全球范围内部署了多个服务器节点,将网站的静态资源和动态内容缓存到靠近用户的边缘服务器上。这样,当用户请求访问网站时,可以从最近的边缘服务器获取内容,减少了传输延迟和网络拥塞,提高了页面加载速度。
  • 减轻源服务器负载:CDN 的边缘服务器能够缓存和提供网站内容的副本,当用户请求访问时,不必每次都访问源服务器。这有效减轻了源服务器的负载压力,提升了整体的性能和可扩展性。
  • 提高全球访问速度:由于 CDN 在全球各地都有服务器节点,通过智能的路由选择,用户可以从最近的边缘服务器获取内容,大大减少了数据在互联网上的传输距离和时间,从而提高了全球用户的访问速度和响应时间。
  • 增强网站的稳定性和可靠性:CDN 具备容错和冗余机制,如果某个边缘节点出现故障,请求会自动切换到其他可用的节点上。这种冗余机制提高了网站的稳定性和可用性,防止单点故障导致整个系统不可用。
  • 抵御DDoS攻击:CDN 可以提供一定程度的分布式拒绝服务(DDoS)攻击防护能力。由于 CDN 分散了流量并具备弹性扩展能力,可以对来自恶意请求的攻击进行过滤和缓解,确保正常用户访问不受干扰。
  • 降低成本:通过CDN可以降低带宽和服务器的成本,提高用户体验的同时,降低网站运营成本。

参考链接

什么是CDN?CDN的原理和作用是什么?-CSDN博客

CDN知识详解-CSDN博客

动态网站cdn是如何加速的。_cdn动态加速-CSDN博客 

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

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

相关文章

.Net 基于MiniExcel的导入功能接口示例

/// <summary>/// 导入/// </summary>/// <param name"formFile"></param>/// <returns></returns>[HttpPost("Import")]public async Task<ExecResult> Import(IFormFile formFile){try{if (formFile null) t…

PDF分页处理:技术与实践

引言 在数字化办公和学习中&#xff0c;PDF文件因其便携性和格式稳定性而广受欢迎。然而&#xff0c;处理大型PDF文件时&#xff0c;我们经常需要将其拆分成单独的页面&#xff0c;以便于管理和分享。本文将探讨如何使用Python编程语言和一些流行的库来实现PDF文件的分页处理。…

管道液位传感器在蒸汽清洗机的应用

管道光电液位传感器采用了先进的光学感应原理&#xff0c;无需机械运动&#xff0c;具有长久的寿命和稳定的性能。与传统的机械式和电容式传感器相比&#xff0c;管道光电液位传感器具有更高的精度和可靠性&#xff0c;解决了机械式传感器容易卡死失效和电容式传感器感度衰减的…

Linux 命令:head

1. 写在前面 本文主要介绍 Linux head 命令&#xff1a;可用于查看文件的开头部分的内容&#xff0c;有一个常用的参数 -n 用于显示行数&#xff0c;默认为 10&#xff0c;即显示 10 行的内容。 关注 公众号 获取最新博文&#xff1a; 滑翔的纸飞机 2. head 命令 head 命令的…

AI 算法的特性

AI 算法的特性 AI 算法的特性包括&#xff1a; 自主学习&#xff08;Autonomous Learning&#xff09;&#xff1a;AI 算法能够通过大量的数据进行学习和训练&#xff0c;从而不断提升自己的性能和准确度。 适应性&#xff08;Adaptability&#xff09;&#xff1a;AI 算法能…

《被讨厌的勇气》笔记

自由就是被别人讨厌。对人而言&#xff0c;最大的不幸就是不喜欢自己。活在“如果怎样怎样”之类的假设之中&#xff0c;就根本无法改变。活在害怕关系破裂的恐惧之中&#xff0c;那是为他人而活的一种不自由的生活方式。人生是连续刹那&#xff0c;我们只能活在“此时此刻”。…

数据结构之初始泛型

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 深入了解包装类 包装类的由来 装箱与拆箱 面试题 泛型 泛型的语法与使用…

springboot+elementui健康饮食系统

此系统是springboot健康饮食管理平台 得简化版&#xff0c;适合期末大作业 系统包括 管理员端和用户端 1.用户端注册即可登录到用户端&#xff0c;用户端包括首页轮播图&#xff0c;以及个人中心&#xff0c;个人信息修改&#xff0c;头像修改&#xff0c;后台根据用户信息&am…

Linux压测

目录 CPU压测 内存压测 本文主要是编写了shell脚本&#xff0c;对Linux系统进行CPU和内存的压测。 CPU压测 [rootlocalhost ~]# cat cpu_stress_test.sh #!/bin/bash # 定义压测CPU的函数 function test_cpu() { # 初始化时间变量 local time # 获取参数 while geto…

构造+割点,F2. Spanning Tree with One Fixed Degree

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1133F2 - Codeforces 二、解题报告 1、思路分析 考虑以根节点为割点&#xff0c;会有若干个连通块 连通块的数目为根节点至少要连出去的边&#xff0c;不妨记为mi 如果mi > D&#xff0c;那…

mysql终端使用中的错误

在这个过程中&#xff0c;出现了几个问题&#xff1a; 在退出 MySQL 后&#xff0c;你尝试再次使用 mysql 命令登录&#xff0c;但系统提示找不到该命令。这可能是因为 MySQL 的执行文件路径没有加入到系统的环境变量中。你可以尝试使用绝对路径来运行 mysql 命令&#xff0c;或…

mac环境基于llama3和metaGPT自动开发2048游戏

1.准备虚拟环境 conda create -n metagpt python3.9 && conda activate metagpt 2.安装metagpt pip install --upgrade metagpt 3.初始化配置文件 metagpt --init-config 4. 安装llama3 5. 修改配置文件 6.让metegpt自动开发2048游戏 7.经过多轮迭代&#xff0c;最终…

Prisma是什么:现代数据库工具和ORM

Prisma是什么&#xff1a;现代数据库工具和ORM 引言 Prisma 是一个流行的开源数据库工具和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;用于帮助开发者以类型安全的方式与数据库进行交互。它提供了一套丰富的功能&#xff0c;包括数据库建模、迁移管理、数据访问…

个人网站建设方案书

个人网站建设方案书 一、项目背景 随着互联网的迅猛发展&#xff0c;个人网站已经成为展示个人能力、情感表达的重要平台。无论是个人品牌推广&#xff0c;还是个人作品展示&#xff0c;个人网站都能够为个人提供一个独特的展示空间。因此&#xff0c;建设一个个人网站已经成为…

Kotlin 运算符重载

文章目录 运算符函数运算符函数重载 运算符函数 我们平时使用的、-、、[]等运算符其实是以函数&#xff08;成员函数或扩展函数&#xff09;的形式实现的。对应的符号有对应的函数名&#xff0c;并且需要以operator标记。 operator fun 函数名()[: 返回值类型] [函数体]运算符…

JavaScript 中的 NaN

定义 NaN是一个特殊的数字值&#xff08;typeof NaN的结果为number&#xff09;&#xff0c;是not a number的缩写&#xff0c;表示不是一个合法的数字。 注意点 NaN最大的怪癖是唯一一个和自身不相等的值 NaN NaN // false 如何辨别NaN isNaN() 是一个全局方法&#x…

四个初始化 JavaScript Array数组方法及性能对比

Hi&#xff0c;这里是松桑&#xff0c;每天学习一个 JS 片段&#xff0c;涨涨&#x1f9c0;&#xff01;今天带来的是四个初始化 JavaScript Array数组方法。 在 JavaScript 中初始化数组是常见的场景&#xff0c;初始化有多种方法&#xff0c;创建性能也有差异。虽然可能没有一…

深度神经网络——什么是 CNN(卷积神经网络)?

Facebook和Instagram自动检测图像中的面孔&#xff0c;Google通过上传照片搜索相似图片的功能&#xff0c;这些都是计算机视觉技术的实例&#xff0c;它们背后的核心技术是卷积神经网络&#xff08;CNN&#xff09;。那么&#xff0c;CNN究竟是什么呢&#xff1f;接下来&#x…

HTB 靶场 Mailing 未完待续

访问网页 在/etc/hosts 添加ip和域名 hosts 文件包含ip地址与主机名之间的映射&#xff0c;还包括主机的别名。 Linux系统所有程序查询/etc/hosts文件解析对主机名或者域名的IP地址。没有找到就需要使用DNS服务器解释域名。 DNS原理 1 输入域名&#xff0c;在本地缓存服务…

新手教程之使用LLaMa-Factory微调LLaMa3

文章目录 为什么要用LLaMa-Factory什么是LLaMa-FactoryLLaMa-Factory环境搭建微调LLaMA3参考博文 为什么要用LLaMa-Factory 如果你尝试过微调大模型&#xff0c;你就会知道&#xff0c;大模型的环境配置是非常繁琐的&#xff0c;需要安装大量的第三方库和依赖&#xff0c;甚至…