CDN


1.基础原理

八秒定律是在互联网领域存在的一个定律,即指用户访问一个网站时,如果等待网页打开的时间超过八秒,会有超过 70% 的用户放弃等待。

CDN(Content Ddistribute Network 或 Content Delivery Network) 全称叫内容分发网络,通过负载均衡算法,为请求提供最靠近的响应资源,达到网站的内容加速。

2.系统架构

CDN 节点主要是分布在各省各城市的运营商机房里面,详细的实现过程如下:

  1. 用户请求一个域名地址;
  2. 浏览器对域名进行解析;
  3. 由于域名被 CDN 接管了,对域名的解析后只能获取到 CNAME,CDN 就是借助 CNAME 将访问的地址代理到对应的 CDN 服务器,而不是域名对应的原站;
  4. 浏览器通过 CNAME 获取到最近的 CDN 服务器的 Ip 地址,然后直接访问 CDN 缓存服务器;
  5. CDN 缓存服务器根据策略判断请求的资源缓存里面有没有,需不需要回原站更新,并将资源返回给用户。

其实就是就近发货,提前在各个 CDN 节点进行缓存,后续请求时就在较近的仓库响应请求,不仅可以减少请求的相应时间(传统的方式对原站进行请求),而且可以降低原站的负载[1]

3.关键技术

内容分发

push 模式

推送模式,也叫 CDN 预热,指原站主动把数据分发到 cache 服务器,以此减轻原站负担。

pull 模式

拉取模式,指用户访问时,cache 服务器发现没有这个资源,从原站拉取数据,是一种被动的分发技术。

这两个模式是混合使用的,push 用来实现资源预热[3],pull 用来保证资源的准确性

4. CDN 应用场景

CDN 适合的是静态资源[2]

3.1 网页加速

网页加速是最早期也是最普遍的 CDN 应用,主要 缓存(加速) 了静态 Html,Js,Css 或者图片等不变的资源。

3.2 流媒体加速

流媒体这种资源对带宽要求也是很高的[1],所以将一部分的媒体资源提前放置在 CDN 服务器也是很有必要的。

3.3 文件下载加速

冠状病毒迫使企业和学生在家办公和学习,钉钉的下载量暴增,我们能够顺利的从各个 APP 商店下载到,也是归功于 CDN 的加速。提前把对应的安装包放到了各个地方的近端的 CND 服务器。

3.4 边缘计算

CDN 的发展不断在变更,从早期的静态内容,到后面的支持动态内容的加速,再到后面有了边缘计算的概念(CDN 和边缘计算是一种很好的结合,但是边缘计算的概念不限于此)。
早期可能是简单的把视频内容缓存到 CDN 服务器,如借助边缘计算可以实现在近端对视频的压缩和解压缩等操作,就可以进一步降低传输到网络带宽,达到加速的目的。

3.5 网格化计算

通过智能的优化网络传输路径,达到加速。优化的方式主要有:

  1. 智能选择最优传输路线;
  2. 借助 CDN 厂商的服务器资源,开辟私有的专线路线。


  1. 1.举个栗子:以之前很火的“延禧攻略”为例,当时曾经在某视频APP实现了1千万用户同时在线观看。 如果大家观看的是1080p清晰度的视频(理论上需要4Mbps带宽),那么,累计需要的流量带宽是10,000,000×4Mbps=40,000,000Mbps=40Tbps。 对于优酷、爱奇艺这样的互联网视频内容提供商来说,这无疑是非常巨大的流量压力。 我们普通计算机的网卡,是1Gbps的带宽。如果优酷有一台超级服务器,那么,这台超级服务器就需要4万块网卡,而且必须百分之百跑满速度,才能够实现这1千万用户的流畅观看。 对于一些实力不够的服务商,或者突发流量陡增的情况,就会造成拥塞,从而导致卡顿和延时。
  2. 2.最基本的定义,就是请求后能直接返回,无需进入数据库访问的资源。通俗点来讲就是,静态资源是成品,可以直接返回;动态资源是半成品,需要进入数据库加工再返回。
  3. 3.通过 CDN 服务提供的 API 接口,把需要预热的资源地址和需要预热的区域等信息提交上去,CDN 收到后,就会触发这些区域的 CDN 节点进行回源来获取资源。

如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录