CDN和京东仓库的那些事儿

CDN是我们现在互联网服务得以高速运行非常重要的基建工程

前言

看到这个标题,观众姥爷们是不是直呼莫名其妙?怎么你CDN会跟京东的仓库有关系?一个是互联网IT的领域,一个是传统电商的领域,这俩八杆子打不着一块儿呀?哈哈,别急,且听小柴给你介绍关于CDN的一切,到时候你就会知道他俩的关系了。

chuibuchuini

什么是CDN?

在谈论什么是CDN之前,我们先谈谈我们一般情况下部署一个网站的流程。在部署网站前,我们一般会购置一台服务器或者类似于云主机之类的产品,用于存放我们网站的内容;其次我们会买一个域名,用来给大家在浏览器中输入访问;最后呢我们会通过网站的DNS服务给域名添加一个解析地址,这一步的作用就是让用户输入网址的时候能解析到你部署网站的服务器的真实ip。如下图所示:

image-20220227200407770

这便是传统部署网站的方式,但是随着网站业务量的提升,以及流量的提升,这种方式面临着两个致命的缺陷:

  • 访问网站的速度会因为地理位置的因素受到一定程度的影响。
  • 网站的稳定性不能保障,一旦服务器宕机,网站就直接变得不可用。

比如说你的网站服务器的是放在深圳某个机房的机架上,这时候深圳本地去访问你的网站和一个北京用户访问你的网站,他们的访问速度、延迟等等肯定是不相同的。基本上离你的机器越近,访问的速度越快,延迟越小,毕竟传输成本低。这就好比你在网络上面购物,货源在深圳,你在北京下单,另外一个买家在深圳下单,你说谁收到快递的速度更快呢?

还有一个情况就是服务器宕机,一众的中小型网站在过去都没有一个完整的运维体系,当源站宕机之后我们或许要很久才能知道自己的服务器挂了。而CDN的出现就完美解决了上述问题。CDN,英文全称叫做Content Delivery Network,中文全称叫做内容分发网络

image-20220304163944505

CDN服务商会在全国乃至全世界建立起自己的服务器节点网络,比如国内比较出名的腾讯云、阿里云、又拍云等等。有了服务器分布的广度,那么任何一个人在任何一个地方访问你的网站,离他最近的地方肯定有一台CDN服务器在等着他。拿之前北京用户的例子来说,北京用户访问一个深圳的网站,如果有CDN的情况下实际上他只需要访问CDN北京节点就行了,不需要专门来深圳访问,这样就提高了访问的速度。

那么具体实现原理又是如何的呢?

mnaue43t7w

前文我们说到,在用户访问网站的时候,实际上底层的操作是DNS服务将你的域名转换为某个IP地址,这个实际上就是我们网站运营通常说的A记录,即“域名 -> IP” ,那么如果有CDN的话,实际上通常我们就需要加一条CNAME的记录,即“域名 -> DNS转发服务器”,这时候DNS的服务器会去访问CDN负载均衡的服务器,而这个负载均衡的服务器会告诉你离你最近的CDN服务器的IP节点的地址是多少,然后我们最终访问的就是这个CDN服务器的ip地址。如下图所示:

image-20220304165244203

diagram-11@3x

各位看官看到这儿是不是理解了我为什么取这个标题的原因了吧!因为这个工作模式是不是很像京东的“本地仓”模式呢!近些年来电商都搞什么“本地仓”,就是这种效果。京东为什么能次日达,就是因为他在全国各个区域都设置了仓储中心,先把合作商家的货都放进来,这样的话不管你在全国哪里买东西直接从最近的区域仓库发货,这样一来物流时间就能从原来的3~10天缩短到了1~3天,非常之快。这些聪明的电商们甚至发明了“前置仓”,把仓库直接开到你家小区的边上,这样,你下完单刚半个小时,你要的商品就能直接从小区旁边的仓库给你送过来了。

u=2301849039,447817624&fm=253&fmt=auto&app=138&f=JPEG

那么我们再来深入讲讲CDN一些你所不知道的事情。上文我们知道,访问一个部署了CDN服务的网站实际上是在访问一台CDN机器,但是文件还是在你的网站上的呀,如果网站上面的文件更新了,这时候理论上CDN上面的文件还是旧的,换句话说是没有缓存的,理论上来说我们访问到的还是旧的文件呀,但实际上这个时候我们依然能访问到最新的文件,这个是如何做到的呢?接下来小柴就为你一一道来。

CDN的缓存与回源机制

1、CDN缓存

浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。

1.1CDN缓存的缺点

CDN的分流作用不仅减少了用户的访问延时,也减少的源站的负载。但其缺点也很明显:当网站更新时,如果CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl +F5的方式使浏览器端的缓存失效,也会因为CDN边缘节点没有同步最新数据而导致用户访问异常。

1.2CDN缓存策略
  • CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。
  • 当客户端向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向源站发出回源请求,从源站拉取最新数据,更新本地缓存,并将最新数据返回给客户端。
  • CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。
  • CDN缓存时间会对“回源率”产生直接的影响。若CDN缓存时间较短,CDN边缘节点上的数据会经常失效,导致频繁回源,增加了源站的负载,同时也增大的访问延时;若CDN缓存时间太长,会带来数据更新时间慢的问题。开发者需要增对特定的业务,来做特定的数据缓存时间管理。
1.3CDN缓存刷新

CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发者可以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。这样开发者在更新数据后,可以使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,保证客户端在访问时,拉取到最新的数据。

2.CDN回源

回源原理

  • 回源是指浏览器在发送请求报文时,响应该请求报文的是源站点的服务器,而不是各节点上的缓存服务器(比如nginx开启缓存),那么这个过程相对于通过各节点上的缓存服务器来响应的话就称作为回源。回源的请求或流量太多的话,有可能会让源站点的服务器承载着过大的访问压力,进而影响服务的正常访问。
  • 回源域名一般是cdn领域的专业术语,通常情况下,是直接用ip进行回源的,但是如果客户源站有多个ip,并且ip地址会经常变化,对于cdn厂商来说,为了避免经常更改配置(回源ip),会采用回源域名方式进行回源,这样即使源站的ip变化了,也不影响原有的配置。
  • 常规的CDN都是回源的。即:当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取。如果没有人访问,那么CDN节点不会主动去源站拿的。
  • 源站内容有更新的时候,源站可以主动把内容推送到CDN节点。比如常见的“预热机制”。
  • CDN本来是给我们的网站加速的,但是有时会因为不合适的回源策略给服务器带来负担,只有选择正确的策略才能给自己的网站带来更高的访问效率。

企业微信20220304-171914

总结

上文小柴帮你总结了什么在互联网中什么是CDN。CDN提供了一种简便的方法来提高网站的速度,同时降低延迟。因此,它们对于向全球用户快速,高效和安全地交付内容至关重要。并且内容不仅限于网站内容哦,它还包括4K和高清质量的视频,音频,甚至应用程序,游戏和操作系统更新。在将近20年的时间里,CDN形成了互联网中看不见的主干,可为零售,金融,医疗保健和其他企业提供在线内容,并快速,大规模地提供给世界各地的最终用户。可以说,CDN是我们现在互联网服务得以高速运行非常重要的基建工程!

欢迎搜索关注柴柴爱Coding微信公众号,这里有 免费的学习资源、全方位的进阶路线、各岗位面试资源、程序设计源码 一只会Coding的柴柴等你哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值