阿里云CDN加速原理介绍

简介: 了解和学习CDN的工作原理非常重要,这对于网站优化、解决用户问题都有非常大的帮助。本文主要介绍了阿里云CDN的加速原理和缓存策略,举了一些实际的例子方便读者能清晰地理解阿里云CDN。

什么是阿里云CDN

阿里云内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。阿里云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应用场景

目录
相关文章
|
1天前
|
域名解析 网络协议 安全
阿里云CDN
本文介绍阿里云CDN产品中涉及的基本概念,便于您更准确地理解和使用CDN产品。
73 5
|
1天前
|
缓存 边缘计算 网络协议
阿里云CDN介绍
阿里云CDN介绍
28 0
|
1天前
|
监控 Serverless API
阿里云函数计算的工作原理与事件驱动模型密切相关
【4月更文挑战第17天】阿里云函数计算的工作原理与事件驱动模型密切相关
72 4
|
1天前
|
缓存 网络协议 Serverless
阿里云CDN简介和使用流程
本文档介绍了如何在阿里云上配置和使用CDN服务。首先,需要注册并实名认证阿里云账号,然后购买CDN服务。接着,添加要加速的域名,通过CDN控制台和阿里云云解析DNS进行配置,并验证CNAME设置是否生效。之后,配置源站信息,可以选择OSS域名、IP、源站域名或函数计算域名作为源站。最后,设置缓存规则,如缓存过期时间、状态码过期时间、自定义HTTP响应头等,以优化资源访问效率。
阿里云CDN简介和使用流程
|
1天前
|
弹性计算 Ubuntu 网络协议
阿里云CDN功能Quick Start
本文通过在国外Region ECS创建ECS,通过ECS部署应用,然后使用CDN加速部署应用,全链路测试体验阿里云CDN通过IP加速服务的功能。
|
1天前
|
域名解析 网络协议 API
阿里云DNS常见问题之阿里云OpenAPI的cdn20180510包没有DescribeCdnSubList如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
1天前
|
安全 网络安全 CDN
阿里云CDN HTTPS 证书配置流程
阿里云CDN HTTPS 证书配置流程
225 1
|
1天前
|
存储 NoSQL MongoDB
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
本文整理自阿里云 Flink 团队归源老师关于阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference 的研究。
46953 2
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
|
5月前
|
缓存 安全 算法
高防cdn防护原理是什么,是否可以防护服务器吗
高防cdn防护原理是什么,是否可以防护服务器吗
|
7月前
|
存储 缓存 负载均衡
TCP、UDP原理、DNS协议、CDN原理
TCP、UDP原理、DNS协议、CDN原理
257 0