大萧条时期的野蛮生长——CDN缓存原理简述

265 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划·4月更文挑战」的第9天,点击查看活动详情

CDN这个东西相信大家肯定也都或多或少听说过,大概会有几种认知。

  1. 听说过,耳熟。别的没了。
  2. 听说过,知道是用来加速访问的。
  3. 稍有了解,全称叫内容分发网络,用来加速访问的。
  4. 稍有了解,全称叫内容分发网络,缓存了网页的静态资源,可以加速访问。
  5. 十分熟悉技术原理,了如指掌。

CDN首先也是一种缓存技术,不过缓存的内容大部分是静态的css,图片等变动频率很低的文件。然后通过就近访问的特性,可以很大程度上加速用户的访问。代码优化的再好,性能再强,也怕距离远。一个深圳的机房给哈尔滨的用户提供服务,每次请求的网络节点寻址都可能是秒级的,更别说下载文件了。往往CDN的成本都是一款产品的大头,尤其是在当下的短视频和直播的时代。机器与研发的成本,远没有带宽和CDN来的贵。

那么CDN到底什么原理呢?今天来简单聊一聊,下面根据用户访问的时许来说明:

  1. 用户设备访问域名:name.com
  2. name.com这个网页中包含了大量的图片和css样式文件,并且地址为其二级域名:file.name.com
  3. 访问2中的二级域名下载文件,file.name.com解析道CDN的域名:cdn.cloud.com
  4. 从CDN的域名中GSLB的地址,GSLB是全局负载均衡,可以根据用户请求的地区来进行针对性的负载均衡
  5. 通过GSLB寻找到用户请求访问延迟最低(往往是距离最近)的CDN节点
  6. 从该CDN节点返回用户需要的静态文件

这样一次CDN的访问就结束了,之所以叫内容分发网络也是顾名思义,将产品中的静态文件分发到全国各地的数据中心,服务于各个地区的用户。这样一个过程,给用户带来的体验提升是巨大的,从秒级可以提升到百毫秒级,带来了5-10倍的访问速度提升。时间就是金钱,同样时间内可以服务更多用户,带来的收益也就更大。

可能你就疑惑了,那后端的api怎么通过CDN来提升呢?一般我们不会这么做,往往后端接口的域名走的是运营商的专线,速度上也是有保障的。另外接口的交互数据量跟页面的图片是不能比的,所以也不用在全国各地部署服务。