阅读指南

  1. CND是什么
    1. 案例说明
    2. CDN概念及意义
  2. CDN产品
  3. CDN工作原理
  4. 答疑

CDN是什么

我们一个简单的例子来说明CDN的含义:

假设我们要在线上部署一个叫千锋课堂的web应用,我们将该项目的静态资源(如 图片、视频、html/css/js文件 等)放在位于北京的某台服务器上。
ok,成功部署上后,网站可以访问了。但是随着时间推移,流量增加,我们发现了以下问题:

  1. 用户反馈网站的资源加载速度较慢,严重影响了用户体验。并且我们进一步观察到,**受网络传输距离影响**,离北京越远,反馈的用户越多。
  2. 某段时间爆发了流量高峰期,**受带宽影响**,访问量超出一定数值后,出现了资源请求用时过长以至于请求失败的情况(请求超时)。
  3. 该服务器因物理原因(比如停电)**故障**, 网站就会挂掉。


毫无疑问,以上问题严重造成了生源流失。**

那么如何解决上述问题呢?

我们于是想到了一种方案,在各地部署多台服务器,每个服务器上都有项目资源的镜像。我们对用户流量进行分流——根据用户的ip地址加之一定的算法,让用户去访问距离其较近且较空闲的服务器上的资源。

这样一来,上述问题都能得以解决 —— 网站的资源访问速度明显提升了,高峰期也不会出现请求超时的情况,而某天部署在北京的那台服务器爆炸了,资源请求也会被导流到其他服务器,用户无感知。

这种方案,就是CDN

CDN概念及意义

  1. CDN,即内容分发网络(Content Delivery Network,简称CDN,是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。<br /> 我们通过一张图来说明CDN的含义:<br />![](https://cdn.nlark.com/yuque/0/2020/jpeg/205939/1608490006499-20ce1d97-9a47-489c-ab76-72a79a9b9832.jpeg#align=left&display=inline&height=363&margin=%5Bobject%20Object%5D&originHeight=363&originWidth=658&size=0&status=done&style=none&width=658)

其实由上述例子中,我们可以简单总结出来——CDN意义的关键词: 负载均衡加速稳定性

CDN产品

当然,对于中小型公司来说,独立部署CDN的代价往往是巨大的——毫无疑问,用户地理覆盖范围越广,越密集,成本越高。
于是,基于互联网企业普遍对CDN的需求,就对应产生了相关产品的市场。
市面上代表卖家有 阿里云,腾讯云,华为云 等,友情提示,新用户及假节日大都有巨额优惠。
作为客户,我们只需砸一丢丢小钱,就可以让我们的网站享受到CDN服务。
image.png

CDN工作原理

我们借一张阿里云官网的图例说明:
CDN - 图2
如图所示:

  1. 用户访问了www.a.com这个地址,先查看LDNS(本地DNS域名解析)是否有解析记录,如果有,就直接拿到了IP,从而直接请求该ip的资源得到返回结果。
  2. 如果没有(比如第一次访问), 就向网站授权DNS查询ip地址。
  3. 承接2,得到的是www.a.tbcdn.com(该网站被绑定的CDN域名,这是因为购买的cdn资源要跟网站域名绑定才能生效)的对应ip。
  4. 承接3,向DNS调度系统请求www.a.tbcdn.com对应的ip;
  5. 承接4,DNS调度系统基于算法得出了较近较空闲的cdn节点服务器ip,从而返回给用户本地DNS解析器。
  6. 承接5,用户拿到了ip地址。并且该域名与ip的映射关系将在用户的LDNS留下记录,用户下次访问的话,就会直接走步骤1。
  7. 用户拿到了ip就直接去找对应CDN节点服务器访问请求资源。
  8. CDN节点服务器返回对应资源。 注意,这里做了一层兜底(容错处理), 如果节点没有对应资源内容,就把请求指向源站。

说白了CDN工作原理,就是加入了CDN分发的DNS解析过程

答疑

关于CDN问题的相关答疑

  • Q:CDN是什么?

    1. ** ****A: 请仔细阅读文章!**<br />**
  • Q: CDN服务是必须的吗?

A:首先我们必须要明确一点: 脱离业务讲技术方案纯粹是耍流氓。 比较典型的像电商类的业务项目,面向的用户分布范围广,并且有流量高峰期,那么CDN服务相对比较重要;而如果仅仅是给自己搭个小小的日志博客来记录自己的生活点点滴滴,流量不大的情况下,必要性就不大了。当然,家里有矿你就随意的嘛。
总结来说,如果你的网站有 负载均衡、加速、 稳定性 相关的需求, 那么部署或者购买CDN服务是可以被考虑的方案。
**

  • Q: 我的系统都是纯内网使用的,与Internet不连通,还需要CDN吗?

A: 这个问题其实和上个问题很相似,只是具体到了业务场景。如果你所在的公司很大——我举个例子啊比如阿里巴巴,全世界各地都有园区,内网用户分布极其广,并且用户量很大,那么CDN也是很需要的嘛。如果内网用户不大,并且只是局域网访问——那么基本是不太需要的。因为这种场景,并不对应**负载均衡、加速、 稳定性这三点的需求**。

最后

如果你想加入melodyWorld团队共同维护文档内容,请注册语雀账号留言申请加入哦~