你对CDN了解多少?

让我们先从一个例子,来简单类比一下,什么是CDN技术。在二十多年前,大部分城市主流的购物方式,都是去某某百货商店、某某商场,很多人挤在一块小小的柜台前,挑选自己想要的东西。这明显是算不上方便的。不论你买的是大件商品还是油盐酱醋,都要去到一个集中的商店里去寻找,可能有的时候还会遇到断货的情况,大老远的跑去却要悻悻而归。

虽然现在我们也依然有很多大型商场,但是很多日用商品我们是不再需要去百货商场购买的了。这就是因为仓储式购物场所的出现,也就是大家现在司空见惯的超市、便利店。

超市的出现,就是把本来需要集中的购物场所打散,把人们需要经常购买的商品提前放置在自己的卖场里,供顾客前来选购。

什么是CDN?
对于CDN来说,就好比是超市或者便利店,把本来需要集中获取的资源缓存到边缘节点,使用户就近访问。

CDN的全称是Content Delivery Network/Content Distribution Network,即内容分发网络。它解决的问题,就是在网络里增加一层缓存层,将源站的资源分发到距离用户最近的网络边缘节点,供用户快速访问。

CDN的优势
CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
大部分请求在边缘节点完成,CDN起到了分流作用,减轻了源站压力。

边缘节点缓存了什么?
当用户的客户端做出了一个请求后,客户端首先会向CDN边缘节点发起请求,边缘节点则会检测用户请求数据的缓存是否过期,如果没有过期,则直接响应请求,将缓存数据返回用户,完成本次请求;如果数据过期,那么边缘节点会继续向中间节点发出请求(同理,如果中间节点数据过期,则回源到源站请求),来获取最新的数据。

CDN工作原理
这里就带来了另一个问题了,用户的客户端是怎么找到距离他最近的CDN边缘节点的呢?

这里解决了两个问题:

1、访问域名如何映射到CDN地址?

2、如何找到距离用户最近的节点?

下面我们来详细描述一下整个流程。

1、访问域名如何映射到CDN地址

当你通过浏览器访问example.com域名时,假设这就是个静态域名,并且做了CDN静态资源加速。

A、首先会经过本地DNS解析器,查看本机的/etc/hosts文件是否存在域名对应的ip,如果找到,直接使用该ip发起请求。否则执行步骤B;

B、由于本地DNS服务器解析,如果在本地DNS缓存中找到域名对应ip,则直接用该ip访问。否则继续步骤C;

C、本地DNS服务器会向根域名服务器发起请求,根域名服务器返回顶级DNS域名服务器地址,让你去那里查找地址;

D、本地DNS服务器会向顶级DNS域名服务器发起请求,.com顶级域名服务器返回权威DNS域名服务器地址,让你去那里查找地址;

E、本地DNS服务器继续向example.com权威DNS域名服务器发起请求,权威DNS域名服务器一看,这个域名我可以解析,发现是有做过CDN加速域名配置的,它会CNAME到一个域名:xxx.example.cdn.com。

到此,我们终于找到了这个CDN域名地址。如果你不需要找距离用户最近的节点,通过此CDN域名,就可以找到正确的ip地址了。

原创文章 5 获赞 0 访问量 1062

猜你喜欢

转载自blog.csdn.net/weixin_45869730/article/details/103212197