theme: condensed-night-purple
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
上篇文章整体介绍了
CDN
产品的架构组成,这篇文章讲加速原理以及使用场景。2.3 加速原理
上面讲到了CDN
的架构组成部分,那么其到底是如何完成加速的呢?总的来说,当用户发起请求时,DNS解析系统
调度分配最优的CDN
接入节点,如何找到最优的节点呢?一般来说都是将缓存看作是一个大型的键值存储。 用户请求的内容、定位数据、访问路径以及查询参数,甚至是HTTP
请求头等内容,都可以用来作为查找的参数。然后解析系统使用多次查找表,使用优化的算法在最短的时间内找到最优的节点。
用户获取到接入节点后,首次访问CDN
接入节点时,该节点需从源站获取数据并缓存,然后返给请求者,当第二次访问相同的接入节点时,节点直接返回内容给用户。 在这个过程中,CDN
还在不断地清除(删除或更新)内容,以便交付最新的、相关的内容,并且一般CDN
产品都允许使用者在必要时手动更新内容。
这一部分借用阿里云的文档介绍CDN
的加速原理,其它产品加速过程大同小异。
如图上所示,当终端用户在北京发起HTTP请求时,处理流程如下:
当终端用户向
www.a.com
下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。LDNS
检查缓存中是否有www.a.com
的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS
查询。当授权
DNS
解析www.a.com
时,返回域名CNAME
www.a.tbcdn.com
对应IP地址。域名解析请求发送至
DNS
调度系统,并为请求分配最佳节点IP地址。LDNS
获取DNS
返回的解析IP
地址。用户获取解析
IP
地址。用户向获取的
IP
地址发起对该资源的访问请求。- 如果该
IP
地址对应的节点已缓存该资源,则会将数据直接返回给用户,例如图中步骤7和8,此时请求结束。 - 如果该
IP
地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。获取资源后结合用户自定义配置的缓存策略,将资源缓存到CDN
节点并返回给用户,例如图中的北京节点,此时请求结束。
三、总结
通过上面的描述,我们对
CDN
已经是有一个初步的认识了,那么CDN
使用在哪些场景呢?对于CDN
来说,额外地使用它是需要增加企业成本的,我们需要将其用在钢刃上。一般来说典型的应用包括以下场景:- 手机App、游戏包等更新,提供稳定、优质的下载加速
- 视频点播(长视频、短视频),支撑高峰期海量并发
- 网站加速,加速分发处理能力,显著提升网页用户的体验
- 全站加速,适用于纯动态或动、静态资源混合型资源的一站式加速
- 安全加速,防护
DDos
共计,抵抗大型CC
攻击等
- 如果该