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

前言

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

什么是CDN?

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

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

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

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

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

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

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

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

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

那么我们再来深入讲讲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本来是给我们的网站加速的,但是有时会因为不合适的回源策略给服务器带来负担,只有选择正确的策略才能给自己的网站带来更高的访问效率。

总结

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

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

CDN和京东仓库的那些事儿相关推荐

  1. java计算机毕业设计京东仓库管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计京东仓库管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计京东仓库管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  2. 计算机毕业设计Java京东仓库管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java京东仓库管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java京东仓库管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  3. 青龙-京东仓库收集【2022.6.21更新】

    以下仓库均收集与互联网,安全性未知,请自行择用 青龙面板技术交流:817954605 Faker2仓库(最新) ql repo https://git.metauniverse-cn.com/http ...

  4. 新版Win10来了!网友:丑哭了

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 来源丨蓝点网 微软发布了Windows 10 Dev Build 21343开发测试版,这 ...

  5. 宝塔面板搭建autoPicCdn:一款基于jsdelivr-Github的免费CDN图床

    autoPicCdn是白嫖Github的存储空间,通过jsdelivr全球加速(含有国内节点).实现图床加速的目的. 加速效果非常不错,用站长工具检测,也是一片绿油油,所以用来存储一些静态文件是最合适 ...

  6. 京东“竖亥小车”秒测商品尺寸重量

    1月20日,京东对外展出"竖亥小车".该"小车"利用英特尔实感技术开发,可秒测出商品尺寸和重量,实现了商品物流属性的自动收集,为产品的包装和货架存储提供基础数据 ...

  7. 数据分析真题日刷 | 京东2019春招京东数据分析类试卷

    开启一个新的系列 -- 「数据分析真题日刷」.七月临近,备战秋招,加油鸭! 今日真题 京东2019春招京东数据分析类试卷(来源:牛客网) 题型 客观题:单选27道,不定项选择3道 完成时间 120分钟 ...

  8. 京东JOS API 接入使用笔记

    商户开设了京东店.淘宝店,最近打算使用京东物流,需要使用京东仓库(京东店的订单使用京仓发货,淘宝等其他店使用京东云仓)发货,所以得从自家的ERP与京东沧海(ECLP)API对接,实现收发存. 首先得在 ...

  9. 京东商城李大学:技术驱动 京东十年

    [CTO论道]京东商城李大学:技术驱动 京东十年 原文  http://www.csdn.net/article/2013-09-03/2816804 [CSDN报道]2013中国软件开发者大会(以下 ...

最新文章

  1. Gdiplus中实现双Buffer绘图
  2. java中 queryparam_@PathParam 和 @QueryParam
  3. 474. 一和零 golang动态规划
  4. MariaDB 数据库索引详解(9)
  5. 基于zbus的MySQL透明代理(100行)
  6. 基于JAVA+SpringMVC+MYSQL的实验室预约管理系统
  7. mysql 分库备份
  8. HTML5: HTML5 Geolocation(地理定位)
  9. 《数据资产管理实践白皮书3.0》发布!(附全文下载)
  10. C语言(动态开辟二维数组 指针数组、数组指针、一维数组模拟开辟)
  11. 视觉十四讲第六章G2O实践出错后的解决方法
  12. JavaScript中的柯里化(currying)
  13. codeforces C. Multiples of Length
  14. 2020年是走前端还是走后端好,前端又有哪些优势呢?
  15. android(小米)系统隐藏的小功能
  16. HTML中表格写法,在HTML代码里面表格的写法以及表格的特性
  17. 【JUC源码专题】Striped64 核心源码分析(JDK8)
  18. 微信小程序连接MySQL数据库
  19. 电子商务多平台运营与实践课程设计
  20. 2016word排版小技巧

热门文章

  1. 数据库实验2——使用SQL语句创建、修改和删除基本表
  2. 你的英语为啥学不好?跟机器翻译比比看
  3. Python中@符号是什么意思?
  4. 计算机上的计算器在那里了,电脑上的计算器在哪里打开(电脑快捷调出计算器的方法)...
  5. 天池大赛 - 特征提取 总结
  6. codeforces 546B Soldier and Badges
  7. 绘图---带你熟练操作PS工具栏
  8. expdp异地备份 (expdp导出数据到其他服务器)
  9. 经济管理专业必备的15种国内数据库推荐
  10. Windows Defender 打开后一片空白,安全中心不显示