一起养成写作习惯!这是我参与「掘金日新计划·4月更文挑战」的第9天,点击查看活动详情。
CDN这个东西相信大家肯定也都或多或少听说过,大概会有几种认知。
- 听说过,耳熟。别的没了。
- 听说过,知道是用来加速访问的。
- 稍有了解,全称叫内容分发网络,用来加速访问的。
- 稍有了解,全称叫内容分发网络,缓存了网页的静态资源,可以加速访问。
- 十分熟悉技术原理,了如指掌。
CDN首先也是一种缓存技术,不过缓存的内容大部分是静态的css,图片等变动频率很低的文件。然后通过就近访问的特性,可以很大程度上加速用户的访问。代码优化的再好,性能再强,也怕距离远。一个深圳的机房给哈尔滨的用户提供服务,每次请求的网络节点寻址都可能是秒级的,更别说下载文件了。往往CDN的成本都是一款产品的大头,尤其是在当下的短视频和直播的时代。机器与研发的成本,远没有带宽和CDN来的贵。
那么CDN到底什么原理呢?今天来简单聊一聊,下面根据用户访问的时许来说明:
- 用户设备访问域名:name.com
- name.com这个网页中包含了大量的图片和css样式文件,并且地址为其二级域名:file.name.com
- 访问2中的二级域名下载文件,file.name.com解析道CDN的域名:cdn.cloud.com
- 从CDN的域名中GSLB的地址,GSLB是全局负载均衡,可以根据用户请求的地区来进行针对性的负载均衡
- 通过GSLB寻找到用户请求访问延迟最低(往往是距离最近)的CDN节点
- 从该CDN节点返回用户需要的静态文件
这样一次CDN的访问就结束了,之所以叫内容分发网络也是顾名思义,将产品中的静态文件分发到全国各地的数据中心,服务于各个地区的用户。这样一个过程,给用户带来的体验提升是巨大的,从秒级可以提升到百毫秒级,带来了5-10倍的访问速度提升。时间就是金钱,同样时间内可以服务更多用户,带来的收益也就更大。
可能你就疑惑了,那后端的api怎么通过CDN来提升呢?一般我们不会这么做,往往后端接口的域名走的是运营商的专线,速度上也是有保障的。另外接口的交互数据量跟页面的图片是不能比的,所以也不用在全国各地部署服务。