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博客 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

opencv 在飞行堡垒8中调用camera导致设备消失

简介 使用 OpenCV 库时, 在最后调用cv::destroyAllWindows()之后设备管理器中的摄像头设备消失了, 看看是怎么触发的, 后面再慢慢研究RootCause是什么。 步骤 设备管理器原来摄像头显示 1. 代码 main.cpp Note: 1. haarcascade_frontalface_default…

武汉盛势启创科技携手三品软件 EDM系统助力企业图文档数字化

客户简介 武汉盛势启创科技有限公司(以下简称“盛世启创”)是一家专注于新能源汽车零部件领域的科技型企业,其主要业务涵盖新能源汽车三电系统智能传感器、智能座舱及线控底盘控制器的芯片开发、硬件设计、嵌入式系统开发。以及相关产品的生产…

云实例初始化的行业标准:Cloud-Init

01 前言 Cloud-Init[1] 是跨平台云实例初始化的行业标准。它得到了所有主要公共云提供商的支持,适用于私有云基础设施的配置系统以及裸机安装。Cloud-Init 将在启动时识别其运行所在的云环境,读取来自云端提供的任何元数据,并据此初始化系…

JsonCpp源码跨平台编译

1.macos编译jsoncpp: https://github.com/open-source-parsers/jsoncpp.git 克隆jsoncpp源码 使用CMake进行编译 生成makefile mkdir build cd build cmake ../ 编译: make编译并运行测试成功:

Github:ChatTTS从下载到使用

前言 本文使用工具: Anaconda :直接进行包管理,用来自定义生成python解释器,虚拟环境vscode:用来执行代码 注:我使用的Ubuntu,使用win,mac等,需要额外配置 简介 Chat…

python的内置模块 I

内置模块 I 除了我们自己写的模块之外,Python 中还内置了大量非常实用的模块。其实,我们之前的代码中就已经使用过几个内置模块了,比如 time 模块和 random 模块。 Python 的内置模块非常多,今天我们介绍几个常用的模块。废话少…

Linux 内存屏障简介

文章目录 1. 前言2. 什么是内存屏障?3. 为什么需要内存屏障?3.1 多发射(Multi-issuing)3.2 乱序执行(Out-of-order execution)3.3 预测执行(Speculative execution)3.4 Load-Store 优化3.5 CPU Cache3.6 编译乱序3.7 小结 4. ARM 内存一致性模型 和 内存…

Julia编程11:变量作用域 Scope of Variables

There are two main types of scopes in Julia, global* scope* and local* scope*. Julia有全局变量作用域和局部变量作用域,函数或者一些结构体、循环体如for等是否内部是局部环境可以参照下表。 ConstructScope typeAllowed withinmodule, baremoduleglobalglo…

商品API数据集成:一站式商品信息服务平台

一站式商品信息服务平台:商品API数据集成 在数字化快速发展的今天,信息的高效获取与整合成为了各行各业追求的核心竞争力。特别是在商品信息领域,如何快速、准确地获取并整合来自多个渠道的商品数据,为企业决策提供支持&#xff0…

【数据结构】图论——AOV和AOE(拓扑排序、存放表达式、关键活动、关键路径)

目录 AOV和AOEAOV 有向无环图及其应用(拓扑结构)有向无环图的应用——存放表达式二叉树存放表达式图存放表达式 AOE 有向无环图及其应用——关键路径1. 事件的最早发生时间事件(顶点)最早发生时间的计算方法: 2. 事件允许的最晚发生时间事件(…

JS百题斩~ typeof 、instanceof 与 Object.prototype.toString 区别(简单易懂)

首先,让我们先了解一下JavaScript的数据类型,分为两类: 基础类型:Undefined,Null,Boolean,Number,BigInt,String,Symbol 引用类型:Object&#xf…

网络简史-基于图论的网络

先看一幅图: 如图,我们对类似 crossbar,banyan tree,b-tree,10-tree,256-tree,甚至 dcn fat-tree 等 “规则拓扑” 网络相当熟悉。规则拓扑网络中,地址信息被编码到拓扑本身&#…

每天复习一点小CTF知识(6.4)

NSSCTF/[FSCTF 2023]夜深人静的时候也会偷偷emo 直接爆破压缩包,先来数字 解压好,一个flag.mp3 mp3隐写,直接干 得一个txt文件直接开

2024最新破解版CorelDRAW解锁设计新境界!

在当今快速变化的市场环境中,品牌之间的竞争愈发激烈。为了在众多品牌中脱颖而出,企业需要不断地提升自身的品牌形象和市场识别度。而在这个过程中,视觉设计起到了至关重要的作用。一款优秀的设计软件不仅能帮助设计师轻松地将创意想法变成现…

【全网唯一】触摸精灵iOS版纯离线本地文字识别插件

目的 触摸精灵iOS是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。但触摸精灵的图色功能比较单一,无法识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要…

《平渊》· 捌 —— 「庄子」山木篇中的 “空船效应”

《平渊》 捌 "若能虚己以游世,其孰能害之?" "方舟而济于河,有虚船来触舟,虽有惼心之人而不怒;有一人子其上,则呼张歙之;一呼而不闻,再呼而不闻,于是三呼邪…

热烈祝贺2024年重庆市建筑电气学术年会圆满成功

芳菲四月花似锦,正是人间好时节,4月26日, 24年重庆市建筑电气学术年会在重庆维景国际大酒店举办。会议主题是“智慧 低碳 绿色 安全 ”。会上业内专家就建筑电气行业的新技术、市场趋势和未来发展展开探讨与深入交流。 本次会议邀请重庆市建筑电气行业主…

vue中实现一个时间选择器的级联框,第一层小时,第二层分钟

最近在做一个考勤系统时&#xff0c;新增班次的时候需要设置打卡时段&#xff0c;类似如下效果&#xff1a; 1、封装自定义组件Time.vue 接收参数有endHour(范围结束的小时数)、endMinute(最后一小时结束的分钟数)等&#xff0c;根据具体需求变动 <template><div&…

【代码+详解】算法题 : 最大公约数

❗❗❗必看: 下列题我全部都使用 Java 语言写的,并且均可以提交成功,获得Accepted 结果的. 如果代码和详解看了之后,对答案有任何疑问,都可以在评论区提出来,我都会一个一个回答. ❗❗❗感谢大家的支持,如果喜欢我的博客,关注 点赞 收藏 评论一波,非常感谢!!! 文章目录 题目&…

低代码和零代码软件时代质量管理(QM)和质量管理系统(QMS)

【前言】 质量控制过程的目的是为了确保产品的制造标准得到保持和改进。质量控制过程使公司能够满足客户的期望&#xff0c;同时确保产品质量的一致水平。采用这些标准创造了一种公司文化&#xff0c;鼓励所有员工努力实现高质量的生产标准。低代码和零代码软件可以成为质量控…