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,一经查实,立即删除!

相关文章

PDF分页处理:技术与实践

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

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

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

数据结构之初始泛型

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

springboot+elementui健康饮食系统

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

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

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

mysql终端使用中的错误

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

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.经过多轮迭代,最终…

个人网站建设方案书

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

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

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

HTB 靶场 Mailing 未完待续

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

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

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

【数据结构与算法 经典例题】链表的回文结构(图文详解)

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 三、C语言代码实现 一、问题描述 二、解…

深度学习-07-反向传播的自动化

深度学习-07-反向传播的自动化 本文是《深度学习入门2-自製框架》 的学习笔记,记录自己学习心得,以及对重点知识的理解。如果内容对你有帮助,请支持正版,去购买正版书籍,支持正版书籍不仅是尊重作者的辛勤劳动&#xf…

OJ题目【栈和队列】

题目导入 栈: 题目一:有效的括号题目二:用栈实现队列 队列 题目:实现循环队列 栈 题目一 有效的括号 题目要求 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘…

LeetCode746使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。 解析 动态…

七校联赛题铅笔姿态及笔迹检测装置--mpu6050识别数字

前言 前几天打完比赛,收获还是挺大的,数字识别部分基本上浪费了绝大部分时间。先将思路简单说明。 1、题目 2、思路 针对笔迹检测,我们首先考虑的肯定是陀螺仪来测量加速度方向来判断书写的方向,从而得到书写的数字。 我们的方案…

LLM的基础模型3:Transformer变种

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

【软件测试】自动化测试如何管理测试数据

前言 在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。 随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高&#…

编译 freetype、sdl、sdl_ttf

/* * three lib */ /* 字符串生成位图 */ http://www.libsdl.org/projects/SDL_ttf/release/ http://www.libsdl.org/download-1.2.php https://freetype.org/ /* Freetype 2.13.0 */ ./configure CCaarch64-v01c01-linux-gnu-gcc --buildaarch64 …

一个简约而不简单的记账 App(一刻记账)

前言 在两年多前, 我曾经写过一个本地化的记账 App, 当时没有想过以后的发展. 全程是本地化的, 当时主要是为了练习 Compose 而写的. TallyApp 而现在一个完整的记账 App 它来了 一刻记账 算是圆了我两年前的梦了吧. 也让我可以真正的使用自己的记账软件. 下面是 一刻记账 记…