阿里云CDN加速原理介绍

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 了解和学习CDN的工作原理非常重要,这对于网站优化、解决用户问题都有非常大的帮助。本文主要介绍了阿里云CDN的加速原理和缓存策略,举了一些实际的例子方便读者能清晰地理解阿里云CDN。

什么是阿里云CDN

阿里云内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。阿里云CDN分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。

CDN加速前

使用CDN加速前,用户侧发起的请求通过用户侧DNS递归到网站DNS解析以后,最终用户侧直接请求网站服务器。这里可能会造成以下几种情况:

  1. 中心服务器负载过高,因为所有客户端发起的请求都会请求到服务器上
  2. 终端用户内容获取延时高,比如服务器在北京,而用户在广州
  3. 服务稳定性差

image.png

CDN加速后

CDN通过在现有网络中增加一层新的缓存节点,将源站的资源发布到最接近用户的网络节点,使得客户端在请求时直接访问到就近的CDN节点并命中该资源,减少回源情况,提高网站访问速度。CDN缓存节点可分为L1节点(一级节点)和L2节点(二级节点),请求的流程是:客户端-->CDN_L1-->CDN_L2-->源站。CDN的L1节点分布在全国各省市,L2节点分布在几个大区下,可以把L2节点理解为汇聚式节点,简单架构如下图所示。
image.png

CDN节点缓存策略如下:
1.客户端向CDN节点发起连接请求,当L1节点有缓存资源时,会命中该资源,直接将数据返回给客户端。当L1节点无缓存资源时,会向L2节点请求对应资源,如果L2节点有缓存资源,则将资源同步到L1节点,并返回给用户;如果L2节点无缓存资源,则直接回客户源站获取资源,并按照配置的缓存策略进行缓存。
2.为了方便理解,再举一个简单例子,假设有杭州移动节点Cache1和宁波移动节点Cache2两个L1节点,这两个L1节点都回源到同一个L2这个节点,源站在北京。这几个CDN节点初始的时候都没有用户的缓存资源。当ABC三个用户依次请求同一个图片的时候,过程如下:

  • 杭州移动用户A被CDN调度到杭州移动Cache1节点,Cache1由于没有缓存,则回源到L2,L2由于也没有缓存,则回源到北京源站,请求到数据以后再返回给Cache1,L1再返回给用户A。
  • 用户A请求完以后,Cache1和L2节点都有了缓存资源。此时杭州移动用户B也开始访问这个图片,用户B也被分配到了Cache1节点,由于Cache1已经有这个图片的缓存了,因此Cache1不需要再去回源了,而是直接返回缓存给用户B。
  • 宁波移动用户C此时也访问了同一个图片,用户C被分配到了宁波移动节点Cache2,由于Cache2还没有缓存,就会回源到L2,而L2已经有缓存,因此L2会直接返回缓存数据给Cache2,然后Cache2再返回给用户B。此过程存在Cache1向L2回源的过程,而L2不需要再去回源到源站了。
  • 通过CDN加速,杭州用户A和B可以直接从杭州节点读取缓存数据,宁波用户C可以直接从宁波节点读取数据,不需要每一次都去请求北京服务器了,提高了用户侧的访问速度,降低了服务器压力。

CDN工作原理

通过以下案例,可以进一步了解CDN的工作原理。
假设加速域名为www.a.com, 接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下图所示。

image.png

1.当终端用户(北京)向www.a.com 下的某资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
2.LDNS检查缓存中是否有www.a.com 的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
3.当授权DNS解析www.a.com 时,返回域名CNAME www.a.tbcdn.com 对应IP地址。
4.域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
5.LDNS获取DNS返回的解析IP地址。
6.用户获取解析IP地址。
7.用户向获取的IP地址发起对该资源的访问请求。

  • 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如,图中步骤7和8,请求结束。
  • 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,例如,图中的北京节点,并返回给用户,请求结束。配置缓存策略的操作方法,请参见缓存配置。
特别注意
CDN调度系统分配节点的时候,是根据客户端的LocalDNS来分配节点的,而不是根据客户端IP来分配节点的。因此,如果客户端LocalDNS设置不正确的话会导致无法分配调度到最优的节点。

什么资源可以被加速

在HTTP请求的资源,请求可以分为静态内容和动态内容。
静态内容(静态资源)
静态内容是指在不同请求中访问到的数据都相同的静态文件。例如:图片、视频、网站中的文件(html、css、js)、软件安装包、apk文件、压缩包文件等。

CDN加速的本质是缓存加速,将您服务器上存储的静态内容缓存在阿里云CDN节点上,当您访问这些静态内容时,无需访问服务器源站,就近访问阿里云CDN节点即可获取相同内容,从而达到加速的效果,同时减轻服务器源站的压力。

动态内容(动态资源)
动态内容是指在不同请求中访问到的数据不相同的动态内容。例如:网站中的文件(asp、jsp、php、perl、cgi)、API接口、数据库交互请求等。

当客户端访问这些动态内容时,每次都需要访问用户的服务器,由服务器动态生成实时的数据并返回给客户端。因此CDN的缓存加速不适用于加速动态内容,CDN无法缓存实时变化的动态内容。对于动态内容请求,CDN节点只能转发回源站服务器,没有加速效果。

如果用户的网站或App应用有较多动态内容,例如需要对各种API接口进行加速,则需要使用阿里云全站加速产品。全站加速能同时加速动态和静态内容,加速方式如下:

  • 静态内容使用CDN加速。
  • 动态内容通过阿里云的路由优化、传输优化等动态加速技术以最快的速度访问您的服务器源站获取数据。从而达到全站加速的效果。

CDN的缓存策略

静态内容可以在CDN上缓存多久,这个是根据CDN的缓存策略的。如果用户没有主动到CDN上配置过期时间,则会遵循CDN的默认缓存策略。CDN的默认缓存时间比较短,最大不超过3600秒,因此很容易缓存过期。因为网站开发及其相关技术人员更清楚自身网站的业务逻辑、静态和动态因素,所以建议用户通过控制台按照文件类型和目录设置缓存时间。

用户可以登录阿里云CDN控制台配置缓存过期时间,针对静态资源配置指定目录和文件后缀名的缓存过期时间和优先级,资源过期后,自动从CDN节点删除。

更多

CDN应用场景

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
5天前
|
对象存储 CDN
阿里云CDN边缘脚本实现+字符转义%2B
对象存储OSS中,文件名包含+字符时,请求URL未转义会导致404错误。解决方法是将URL中的+字符转义为%2B,或通过CDN/DCDN边缘脚本自动转义。示例脚本:若URI包含+,则替换为%2B。
43 10
|
15天前
|
网络协议 网络安全 Docker
将Certbot/ACME.sh自动化申请的证书自动部署到阿里云CDN
本文介绍了阿里云 CDN SSL 证书自动更新工具,定期检查证书有效期,使用Let's Encrypt 等工具签发的证书自动更新至阿里云 CDN,支持 Docker 及 .NET 8 部署,简化证书管理流程。
|
2月前
|
云安全 网络安全 CDN
阿里云CDN遇到攻击?别慌,教你如何应对!
阿里云CDN遇到攻击?别慌,教你如何应对!
|
2月前
|
缓存 监控 安全
阿里云CDN设置阀值的指南
阿里云CDN设置阀值的指南
|
2月前
|
缓存 前端开发 JavaScript
阿里云CDN:怎么让网站变快
阿里云CDN:怎么让网站变快
|
2月前
|
JSON API 数据格式
阿里云国际版CDN查询实时带宽步骤
阿里云国际版CDN查询实时带宽步骤
|
2月前
|
监控 安全 BI
阿里云国际跨账号迁移CDN域名操作步骤
阿里云国际跨账号迁移CDN域名操作步骤
|
2月前
|
CDN
阿里云国际版CDN网页打不开、页面报错该如何解决?
阿里云国际版CDN网页打不开、页面报错该如何解决?
|
2月前
|
缓存 边缘计算 API
速度、可靠性和全球影响力:阿里云国际如何选择合适的 CDN
速度、可靠性和全球影响力:阿里云国际如何选择合适的 CDN
|
3月前
|
安全 CDN
阿里云CDN产品解读及全站加速在游戏行业的最佳实践!
阿里云CDN(内容分发网络)为全球用户提供快速、稳定、安全的内容分发加速服务,显著提升访问响应速度和成功率
103 13
下一篇
DataWorks