作者:opLW
漫长寒假,结束了毕业论文的初稿。最近闲来无事学了点Flutter,感觉多个内容同时学可能会比较有趣,然后就重新捡起了网络协议看起了《趣谈网络协议》和《计算机网络》,进一步完善了对计算机网络整体结构的认知,然后顺便记录下自己感兴趣的熟悉又陌生的协议。
参考文章:CDN是什么?使用CDN有什么优势?
目录
1. CDN简介
2. CDN获取资源的过程
3. CDN对不同类型资源的缓存策略
4. CDN的使用场景
1. CDN简介
- CDN(Content Delivery Network,即”内容分发网络“)是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率,解决因分布、带宽、服务器性能带来的访问延迟问题。如下图所示用户不直接从源站获取资源,而是从距离用户最优的边缘节点获取资源,以此来提高效率。
- 概念介绍
2. CDN获取资源的过程
- 2.1 概要 使用CDN之前,我们通过源站的IP地址,从源站获取资源;使用CDN之后,我们从边缘节点获取资源。那么问题来了:
- 问题一:CDN系统对于用户来说是不可见的,用户仍然向源站发起请求,那如何将请求从源站转给边缘节点呢?
- 问题二:用户从边缘节点获取资源,那是不是所有资源都可以访问到呢?访问不到怎么办?
- 2. 2 获取边缘节点的地址 下面解析问题一的解决办法。
- ① 解析用户请求,向权威的网站DNS服务器发起域名解析请求。因为该网站配置了CDN,所以网站DNS服务器会转让解析任务,将域名的解析权交给CNAME指向的CDN专用DNS服务器。
CNAME 配置完成CDN加速后,会得到一个加速后的域名,称为CNAME域名。用户需要将源站的域名解析任务转给CNAME代表的CDN DNS服务器,此后域名解析由提供CDN服务的厂商进行解析。
- ② CDN的DNS服务器将CDN的全局负载均衡系统IP地址返回用户。
- ③④⑤⑥ 用户向上一步得到的全局负载均衡系统发起域名解析请求,全局负载均衡系统向下级的区域均衡系统发起请求,最终区域均衡系统根据用户的实际情况返回相应的边缘节点IP。 需要考虑用户的哪些实际情况呢:
- 根据用户 IP 地址,判断哪一台服务器距用户最近;
- 用户所处的运营商;
- 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需的内容;
- 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
- 至此我们得到了边缘节点的IP地址。
- ① 解析用户请求,向权威的网站DNS服务器发起域名解析请求。因为该网站配置了CDN,所以网站DNS服务器会转让解析任务,将域名的解析权交给CNAME指向的CDN专用DNS服务器。
- 2.3 从边缘节点获取资源 下面解析问题二的解决办法。
3. CDN对不同类型资源的缓存策略
- 3.1 概要 用户请求的资源类型较多,如静态的页面、多媒体等。针对不同的类型,CDN往往采取不同的缓存规则,以此提高空间利用率和请求速度。下面看看不同类型的缓存策略:
- 3.2 静态资源 由于静态资源具有稳定不易变的性质,不太需要考虑实时性等问题,需要考虑的是访问速度,所以CDN将这些静态资源缓存到离用户更近的边缘节点,越接近客户,访问性能越好,时延越低。
- 3.3 流媒体类型
- 对于静态资源,内容的分发往往采取拉取的方式,也即当发现未命中的时候,再去上一级进行拉取。但流媒体数据量大,如果频繁回源,压力会比较大,所以往往采取主动推送的模式,将热点数据主动推送到边缘节点。
回源 如前面“从边缘节点获取资源”提到的,当用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容或者是缓存已经到期,就会回源站去获取,简称“回源”。
- 推送数据时往往会对数据做预处理如转码、分片等。转码可以适应不同的清晰度要求,分片则可以减小频繁的清晰度切换带来的资源浪费。
- 对于静态资源,内容的分发往往采取拉取的方式,也即当发现未命中的时候,再去上一级进行拉取。但流媒体数据量大,如果频繁回源,压力会比较大,所以往往采取主动推送的模式,将热点数据主动推送到边缘节点。
- 3.4 动态类型 对于动态类型,需要实时的进行计算更新,其缓存方式主要有如下两种模式:
- 边缘计算模式: 既然数据是动态生成的,所以数据的计算逻辑和存储,也相应的放在边缘的节点,然后定时从源站那里同步存储的数据,再在边缘进行计算得到结果。
- 路径优化模式:数据不是在边缘计算生成的,而是在源站生成的,但是数据的下发则可以通过 CDN 的网络,对路径进行优化。因为 CDN 节点较多,能够找到离源站很近的边缘节点,也能找到离用户很近的边缘节点。中间的链路完全由 CDN 来规划,选择一个更加可靠的路径,使用类似专线的方式进行访问。
4. CDN的使用场景
- CDN的主要作用就是通过将源站的数据进行更细致的分类并缓存到各个节点,当用户请求时,返回最优的节点供用户获取资源,归结起来就是对资源的访问进行加速。其主要使用场景有:网站站点/应用加速 、视音频点播/大文件下载分发加速、视频直播加速、移动应用加速等
万水千山总是情,麻烦手下别留情。
如若讲得有不妥,文末留言告知我,
如若觉得还可以,收藏点赞要一起。
来源:CSDN
作者:op小白
链接:https://blog.csdn.net/qq_36518248/article/details/104640353