download:React18+Next.js13+TS,B 端 + C 端残缺业务 + 技术双闭环
摘要
CDN 的全称是(Content Delivery Network),即内容散发网络。其目标是通过在现有的 Internet 中减少一层新的 CACHE(缓存) 层,将网站的内容公布到最靠近用户的网络”边缘“的节点,运用户可能就近取得所需的内容,提高用户拜访网站的响应速度。从技术上全面解决因为网络带宽小、用户访问量大、网点分布不均等原因,提高用户拜访网站的响应速度。
简略的说,CDN 的工作原理就是将您源站的资源缓存到位于寰球各地的 CDN 节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,防止网络拥塞、缓解源站压力,保障用户拜访资源的速度和体验。
一、CDN 减速原理
的解析记录,DNS 调度零碎将为其调配最佳节点 IP 地址。
Local DNS 获取 DNS 调度零碎返回的最佳节点 IP 地址。
Local DNS 将最佳节点 IP 地址返回给用户,用户获取到最佳节点 IP 地址。
用户向最佳节点 IP 地址发动对该资源的拜访请求。
如果该最佳节点已缓存该资源,则会将请求的资源间接返回给用户(步骤 8),此时请求结束。
如果该最佳节点未缓存该资源或者缓存的资源已经生效,则节点将会向源站发动对该资源的请求。获取源站资源后拆散用户自定义配置的缓存策略,将资源缓存到 CDN 节点并返回给用户(步骤 8),此时请求结束。
二、CDN 的利用场景和作用
CDN 的利用场景如下表所示。可使用 CDN 减速的站点次要包含媒体站点、网页站点和下载站点,下表列出了每个站点实用的场景。
实用于网站或利用中小文件的减速散发,例如各种门户网站、电子商务类网站、新闻资讯类网站或利用、娱乐游戏类网站等。
大文件
实用于各类大文件的下载和散发减速,例如游戏安装包、利用更新、手机 ROM 升级、利用程序包下载等,平均单个文件大小在 20 MB 以上。
频音点播
实用于各类视音频网站,例如影视类视频网站、在线教育类视频网站、新闻类视频网站、短视频社交类网站以及音频类相干网站和利用,反对 MP4、FLV 等支流视频格式。
图片小文件
图片小文件实用于网站或利用中小文件的减速散发,例如各种门户网站、电子商务类网站、新闻资讯类网站、娱乐游戏类网站等。您需要将源站内容进行动动态分离,动态内容使用 CDN 减速,例如图片、CSS、JS 小文件等;
CDN 减速图片小文件业务可能帮您解决以下问题:
终端用户拜访慢:网站小文件内容多、打开速度太慢。
跨区域拜访品质差:终端用户分布在不同区域,不同区域的访问速度和品质高低不一。
高并发压力大:经营推广期间,源站服务器压力大,服务器容易崩溃,造成服务不可用。
图片格式分辨率处理简单:无奈根据适合的终端情况进行图片压缩和优化。
大文件下载
大文件下载实用于各类大文件的下载和散发减速,例如游戏安装包、利用更新、手机 ROM 升级、利用程序包下载等,平均单个文件大小在 20 MB 以上。
CDN 减速大文件下载业务可能帮您解决以下问题:
终端用户无奈下载或者下载太慢。
网络环境不稳固时,下载容易中断,从新下载会耗费额定的资源。
网站内容不安全,容易被劫持或者盗链,对业务造成额定的损失。
高并发下载或者下载突增场景下对源站性能申请非常高,且源站的带宽成本也较高。
视音频点播
视音频点播实用于各类视音频网站,例如影视类视频网站、在线教育类视频网站、新闻类视频网站、短视频社交类网站以及音频类相干网站和利用,您可能使用 CDN 产品实现对音视频内容的文件散发和拜访减速。
CDN 减速视音频点播业务可能帮您解决以下问题:
终端用户拜访视频时打不开视频或容易卡顿,观看不流畅。
视频资源容易被劫持或盗用,版权得不到无效保护。
高并发拜访或者拜访突增场景下对源站性能申请非常高,且源站的带宽成本也较高。
使用 CDN 可能帮您实现动态资源的减速和散发,提高资源访问速度:
丰富的资源节点:为用户提供就近接入的同运营商 CDN 节点,解决长距离接入和跨运营商拜访带来的提早高和速度慢的问题。
资源可弹性扩大:基于寰球 2800+ 节点,资源可弹性扩大,实现业务高可用。
精准的调度零碎:实时获取 CDN 节点的健康状况,并根据用户所在位置和运营商来调配最佳接入节点,以便获得最佳接入成果。
智能的传输链路:通过协定优化、连接优化等措施来升高总体时延、提高传输速度,特地是提高弱网环境下的传输速度。
高效的缓存策略:能够带来更高的缓存命中率,命中就近节点上的近程资源,提供高效地访问速度。
升高您的 IT 成本:可将您的业务算力、带宽、连接数转移到 CDN 边缘节点,升高您的 IT 成本。
弱小的带宽输入能力:全网带宽输入能力达 150 Tbps。
提供行业通用标准 API:提高易用性和适用性。
三、CDN 的零碎架构
CDN 的产品架构图,由调度零碎、链路品质零碎、缓存零碎和撑持零碎这四大零碎组成。
CDN 的产品架构图说明
调度零碎:反对策略核心、DNS、HTTPDNS 和 302 调度模式。当终端用户发动拜访请求时,用户的拜访请求会先进行域名 DNS 解析,而后通过 CDN 的调度零碎处理用户的解析请求。
链路品质零碎:链路品质探测系统会实时监测缓存零碎中的所有节点和链路的实时负载以及健康状况,并将后果反馈给调度零碎,调度零碎根据用户请求中携带的 IP 地址解析用户的运营商和区域归属,而后综合链路品质信息为用户调配一个最佳接入节点。
缓存零碎:用户通过收到的最佳接入节点拜访对应的缓存节点,如果节点已经缓存了用户请求的资源,会间接将资源返回给用户;如果 L1(边缘节点)和 L2(汇聚节点)节点都没有缓存用户请求的资源,此时会返回源站去获取资源并缓存到缓存零碎,供后续用户拜访,避免重复回源。分级缓存的部署架构可提高内容散发效率、升高回源带宽以及晋升用户体验。
撑持服务零碎撑持服务零碎包含天眼、数据智能和配置管理系统,别离具备了资源监测、数据分析和配置管理能力。
资源监测:天眼可能对缓存零碎上用户业务运行的状态进行监测。例如对 CDN 减速域名的 QPS、带宽、HTTP 状态码等常见指标的监控。
数据分析:用户可能分析 CDN 减速域名的 TOP URL、PV、UV 等数据。
配置管理:通过配置管理系统,用户可能配置缓存文件类型、缓存时去参数缓存等缓存规定,以晋升缓存零碎的运作效率。
3.2 CDN 网络的基础概念
源站,指您运行业务的网站服务器,是减速散发数据的起源。源站可用来处理和响应用户请求,当边缘节点没有缓存用户请求的内容时,节点会返回源站获取资源数据并返回给用户。CDN 的源站可能是对象存储 OSS、函数计算、自有源站(IP、源站域名)。
边缘节点是 CDN 用于缓存源站资源,以便疾速响应不同地区用户请求的网络节点。在 CDN 的帮助文档中,边缘节点、CDN 节点、Cache 节点、缓存节点、减速节点、节点等都指 CDN 的边缘节点。
减速域名,是您接入 CDN 用于减速、终端用户实际拜访的域名。例如,您将域名 aliyundoc.com 接入 DN,aliyundoc.com 即为减速域名。
CDN 通过减速域名,将源站资源缓存到 CDN 减速节点,实现资源拜访减速。在 DN 的帮助文档中,减速域名通常被简写为域名。域名(Domain Name)又称网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理地位)。
CNAME(Canonical Name)记录,指域名解析中的别名记录,用来把一个域名解析到另一个域名(CNAME 域名),再由 CNAME 域名来解析到需要拜访的服务器 IP 地址。
CNAME 域名,是 CDN 生成的,当您在 CDN 控制台增加减速域名后,零碎会为减速域名调配一个.kunlun*.com 形式的 CNAME 域名。说明 CDN 产品通过分布广泛的 CDN 边缘节点来为最终用户提供减速服务,不同区域或者不同运营商的用户拜访到的 CDN 节点 IP 地址是不同的,因此减速域名就无奈通过 DNS 的 A 记录解析的形式唯一解析到某个 IP 地址,这个时候就引入了 CNAME 域名。增加减速域名后,您需要在您的 DNS 解析服务商处,增加一条 CNAME 记录,将减速域名唯一解析到 CNAME 域名,记录失效后域名解析就正式转向 CDN 服务,该域名所有的请求都将转向 CDN 的边缘节点,达到减速成果。CNAME 域名将会解析到具体哪个 CDN 节点 IP 地址,将由 CDN 的调度零碎来综合区域、运营商、节点资源水位等多个条件来决定。
动态内容是指用户多次请求某一资源,响应返回的数据都是雷同的内容。例如图片、视频、网站中的文件(HTML、CSS、JS)、软件安装包、APK 文件、压缩包文件等。CDN 通过减速域名将源站的动态资源缓存到 CDN 遍布寰球的减速节点上,供用户就近拜访,实现资源拜访减速。
动静内容是指用户多次请求某一资源,响应返回的数据可能是不同的内容。例如网站中的文件(ASP、JSP、PHP、PERL、CGI)、API 接口、数据库交互请求等。
DNS(Domain Name System)即域名解析服务,次要功能是将域名解析为网络可能识别的 IP 地址,即域名解析。人们习惯记忆域名,但机器间互相只识别 IP 地址。域名解析需要由顺便的 DNS 服务器来实现,整个过程主动进行。例如,您上网时输出域名 aliyundoc.com 会主动转换成 10.10.10.10(举例说明,具体 IP 以实际为准)。
SSL(Secure Sockets Layer)即安全套接字协定,SSL 协定位于 TCP/IP 协定与各种应用层协定之间,可能无效辅助 Internet 上的应用软件晋升通信时的资料完好性及安全性。IETF 将 SSL 规范化后名称被改为 TLS(Transport Layer Security),即传输层安全协定,因此通常将两者并称为 SSL/TLS。
当用户通过阅读器发送请求时,如果 CDN 节点未缓存请求的资源或缓存资源已到期,此时会回源站获取资源并返回给用户,该过程被称为回源。
回源 HOST,即 CDN 节点回源时实际请求的域名。当源站服务器上提供多个域名服务时,您可根据业务需要指定 CDN 节点回源时在拜访的具体域名。例如,您期望 CDN 回源时实际请求的地址为 aliyundoc.com,与减速域名 www.aliyundoc.com 不同,那么您需要配置回源 HOST 为 aliyundoc.com。
回源协定,指 CDN 节点回源时使用的协定,有可能与客户端拜访资源时使用的协定雷同,也有可能不雷同。例如,当客户端使用 HTTPS 形式请求未缓存在 CDN 节点上的资源时,可能配置 CDN 节点使用 HTTPS 协定回源站获取资源,也可能配置使用 HTTP 协定回源(源站不反对 HTTPS 协定的情况下)。
SNI(Server Name Indication)是对 SSL/TLS 协定的扩大,可用来解决一个 HTTPS 服务器(同一个 IP 地址)具备多个域名,然而无奈必定客户端到底请求的是哪一个域名的服务的问题。
当您的源站 IP 绑定了多个域名,且 CDN 回源协定为 HTTPS 时,可通过配置回源 SNI,来指明客户端从哪个域名获取资源,服务器会根据配置的 SNI 信息返回正确的证书给客户端。
Range 回源,指 CDN 节点在回源的 HTTP 请求外面携带了 Range 信息,源站在收到 CDN 节点的回源请求时,根据 HTTP 请求头中的 Range 信息返回指定范畴的内容数据给 CDN 节点,例如只返回某个文件的 0 -100Byte 范畴内的数据。
在视频点播、软件下载等大文件内容散发场景下,Range 回源可无效提高文件散发效率,可能提高缓存命中率,缩小回源流量消耗和源站压力,并且晋升资源响应速度。说明 Range 是 HTTP 请求头之一,可用来指定需获取的内容的范畴。
回源 302 追随,指 CDN 节点代替客户端间接处理源站响应的 302 状态码的内容,可缩小处理流程,放慢获取资源的速度。
Referer 防盗链,是基于 HTTP 请求头中 Referer 字段(例如,Referer 黑白名单)来设置访问控制规定,实现对访客的身份识别和过滤,防止网站资源被非法盗用。配置 Referer 黑白名单后,CDN 会根据名单识别请求身份,容许或拒绝拜访请求。说明 Referer 是 HTTP 请求头的一部分,携带了 HTTP 请求的起源地址信息(协定 + 域名 + 查问参数),可用于识别请求的起源。
带宽封顶,指通过设置带宽下限,来管制带宽用量,缩小因突发流量导致的损失。当指定减速域名在统计周期(1 分钟)内产生的平均带宽超出预设下限,CDN 将停止为该域名提供减速服务,且该域名会主动下线,并被解析到有效地址 offline.*.com,无奈被持续拜访。
缓存过期工夫,指资源在 CDN 节点上缓存的时长。资源过期后会主动从 CDN 节点删除,用户向 CDN 节点发动的拜访请求会被判定为未命中缓存,CDN 节点会主动回源站获取最新资源返回给用户,并缓存到 CDN 节点。
跨域资源共享(CORS),是一种基于 HTTP 头的访问控制机制,容许 Web 服务器申明哪些源站(指定的域名、协定、端口)有权限通过阅读器拜访指定资源。
边缘脚本(EdgeScript,简称 ES)是一个可供您疾速实现 CDN/DCDN 定制配置的工具箱,当 CDN/DCDN 管制台上的标准配置无奈满足您的业务需要时,可能使用边缘脚本通过简略地编程实现定制化业务需要。
边缘程序(EdgeRoutine,简称 ER)是一个运行在寰球边缘节点上的 JavaScript 代码运行环境,反对 ES6 语法和标准的 Web Service Worker API。您可能将自行开发的 JavaScript 代码公布至寰球边缘程序运行,在寰球边缘节点上就近地处理客户端的请求。
HSTS(HTTP Strict Transport Security,HTTP 严格传输安全),是一种网站用来申明他们只能使用安全连接(HTTPS)拜访的方法。网站可通过申明 HSTS,来强制客户端(如阅读器)只能使用 HTTPS 与服务器连接,拒绝所有的 HTTP 连接并阻止用户接受不安全的 SSL 证书,升高第一次拜访请求被拦挡的危险。具体配置方法,请参见 配置 HSTS。
例如,未开启 HSTS 的情况下,当您源站使用 HTTPS 请求时,在阅读器输出 HTTP 链接,用户请求拜访到服务器上的时候,服务器会将该 HTTP 请求 301 或 302 重定向到 HTTPS,在用户请求以 HTTP 协定拜访服务器的过程中,HTTP 请求可能被恶意拦挡或者篡改,存在安全隐患。开启了 HSTS 当前,客户端只能使用 HTTPS 协定拜访服务器,这样就可能杜绝这类隐患。
QUIC(Quick UDP Internet Connections)是一个基于 UDP 的通用网络协议,能够保障网络安全性(与 TLS/SSL 相当),同时具备更低的连接和传输延时,无效防止网络堵塞,在丢包和网络提早重大的情况下仍可提供可用的服务。
QUIC 在应用程序层面就能实现不同的拥塞控制算法,不需要操作系统和内核反对,相比于传统的 TCP 协定,具备更好的革新灵敏性,非常适合在 TCP 协定优化遇到瓶颈的业务。
HTTP 状态码(英文:HTTP Status Code),是用来示意 HTTP 响应状态的数字代码,可用来判断和分析服务器的运行状态。当客户端(例如阅读器)向服务器收回请求时,服务器会返回一个蕴含 HTTP 状态码的信息头来响应客户端的请求,通过状态码告诉客户端以后请求响应的状态。
HTTP 常见状态码分类:
1xx:消息
2xx:胜利
3xx:重定向
4xx:客户端谬误
5xx:服务器谬误
四、CDN 与全站减速的区别
对比项
CDN
全站减速
典型利用场景
手机 App 更新、游戏包更新、视频点播(长视频、短视频)、图文网站。
在线商城、在线领取、聊天互动、在线教育、寰球对战游戏、金融理财。
覆盖范畴
仅中国边疆
寰球
寰球(不蕴含中国边疆)
仅中国边疆
寰球
寰球(不蕴含中国边疆)
减速形式
以动态内容减速为主,实用于高带宽大流量场景,动静资源间接回源。
通过寰球 2800+ 边缘节点,基于缓存策略存储您的业务内容。
基于源站负载平衡、回源权重治理、回源流量卸载等技术管制回源流量,保护源站同时升高源站成本。
将服务器上的图片、视频等动态资源缓存在 CDN 边缘节点,供用户从最近的节点获取动态资源。
反对纯动静减速和动动态混合减速。
纯动静减速 针对 POST 请求等不能在边缘缓存的业务,基于智能选路技术,从泛滥回源线路中择优抉择一条线路进行传输。
动动态混合减速 智能识别动静和动态资源,动态资源缓存在边缘节点,供用户就近拜访;动静资源基于智能选路技术,从泛滥回源线路中择优抉择一条线路进行传输。
协定反对
应用层:反对 HTTP、HTTPS、QUIC 协定。
网络层:反对 IPv4、IPv6 协定。
应用层:反对 HTTP、HTTPS、WebSocket 协定。
传输层:反对 TCP、UDP 协定。
网络层:反对 IPv4、IPv6 协定。
调度模式
反对 DNS、HTTPDNS、302 调度。
反对 DNS、HTTPDNS、302 调度。
边缘计算
通过 EdgeScript 边缘脚本,实现可编程 CDN 的业务逻辑。
图片处理。
反对在边缘节点使用 EdgeRoutine 构建边缘程序,例如 A /B Test、预热等。
通过 EdgeScript 边缘脚本,实现可编程 CDN 的业务逻辑。
图片处理。
五、CDN 的性能衡量指标
您可能通过 CDN 的性能衡量指标,观察使用 CDN 前后网站减速的情况,评估 CDN 减速的成果,帮助您更好地做出业务调整和决策。衡量指标次要包含:您可能根据以下通用性能指标(包含但不限于),观察使用 CDN 前后您的网站情况。
通常使用 CDN 后的网络延时、丢包率、回源率都会升高,缓存命中率则会提高。然而因为业务场景和业务类型不同,即使您抉择了雷同配置的 CDN 服务,实际产生的减速成果也不雷同,因此本文仅提供了定性的指标以供观测。
表格中提到的回源率、缓存命中率是指使用 CDN 后的衡量指标,如果您没有使用 CDN,回源请求数为 100%,缓存命中率为 0。
数据上传路径
数据下载路径
指标
说明
DNS 工夫
指从阅读器终端发动的拜访请求开始,到阅读器终端获得最终拜访主机 IP 地址所消耗的工夫。
TCP 工夫
指客户端与目标服务器建立 TCP 连接所消耗的工夫。
SSL 工夫
指客户端和 Web 服务器建立安全套接层(SSL)连接的消耗工夫。
发送工夫
指 SSL 握手实现开始发送请求到请求发送实现所消耗的工夫。
建立连接工夫
建立连接工夫简称为建连工夫,如果 CDN 节点使用 HTTP 协定减速客户业务,建连工夫蕴含“DNS 工夫 +TCP 工夫”;如果 CDN 节点使用 HTTPS 协定减速客户业务,建连工夫蕴含“DNS 工夫 +TCP 工夫 +SSL 工夫”。建立连接的工夫长短,可能反映 CDN 服务的节点资源覆盖的丰富程度以及调度能力。
响应工夫
指阅读器收回 HTTP 请求后,Web 服务器进行后盾处理以及响应的工夫。
下载用时
指您收到 Web 服务器返回的第一个数据包,到实现下载的总工夫。
首包工夫
指从客户端开始发送请求到收到服务器端返回的第一个 HTTP 协定数据包之间所需要的工夫,首包工夫可能反映出 CDN 服务节点的整体性能。
在上传路径中,首包工夫次要蕴含了 DNS 解析工夫、TCP 用时、SSL 用时、发送工夫和响应工夫。
在下载路径中,首包工夫次要蕴含了 DNS 解析工夫、TCP 用时、SSL 用时、发送工夫和响应工夫。
说明 刚购买的域名,通常解析工夫较长,和 CDN 的缓存工夫无关。
整体性能
指实现整个文件的上传或下载所需要的总时长。
丢包率
指在网络传输中丢失数据包的数量占发送数据包总数的比率。
回源率
回源率分为回源请求数比例及回源流量比例两种:
回源请求数比:指 CDN 节点(包含边缘节点和汇聚节点)对于没有缓存、缓存过期(可缓存)和不可缓存的请求占全副请求的比例。回源请求数比 =CDN 节点回源请求数÷用户拜访 CDN 节点的总请求数,通常越低则性能越好(如果 CDN 回源做了分片,然而用户拜访 CDN 没有分片,那么会出现 CDN 节点回源请求数远大于用户拜访 CDN 的请求数的情况)。
回源流量比:回源流量指的是 CDN 节点回源拉取资源的过程中源站响应给 CDN 节点的所有流量。回源流量比 = 源站响应给 CDN 节点的总字节数÷CDN 节点响应给用户的总字节数,比值越低,性能越好。
缓存命中率
CDN 缓存命中率包含字节命中率和请求命中率,CDN 缓存命中率通用指字节命中率,缓存命中率越高,性能越好。
字节命中率 =(CDN 节点响应用户的总字节数 - 源站响应 CDN 节点的总字节数)÷CDN 节点响应用户的总字节数。说明 字节缓存命中率越低,回源流量越大,源站的流出流量越大,源站的带宽资源以及其余的负载越大,因此回源流量代表了源站服务器接收到的负载压力,在业务使用中次要关心字节缓存命中率。
请求命中率 =(用户拜访 CDN 节点的总请求数 -CDN 节点回源请求数)÷用户拜访 CDN 节点的总请求数。