网络协议 18 - CDN:家门口的小卖铺

【前五篇】系列文章传送门:

网络协议 13 - HTTPS 协议:加密路上无尽头

网络协议 14 - 流媒体协议:要说爱你不容易

网络协议 15 - P2P 协议:小种子大学问

网络协议 16 - DNS 协议:网络世界的地址簿

网络协议 17 - HTTPDNS:私人定制的 DNS 服务

    到现在为止,我们基本上已经了解了网络协议中的大部分常用协议,对于整个 HTTP 请求流程也较为熟悉了。从无到有后,我们就要考虑如何优化“有”这个过程,也就是我们常见的请求优化。而现在的技术栈中,CDN 是最常用的一种方式。

    在了解 CDN 前,我们可以先了解下现代社会的物流配置。

    例如我们去电商网站下单买东西,这个东西一定要从电商总部的中心仓库送过来吗?在电商刚兴起的时候,所有的配送都是从中心仓库发货,所以买家可能要很久才能收到货。但是后来电商网站的物流系统学聪明了,他们在全国各地建立了很多仓库,而不是只有总部的中心仓库才可以发货。

    电商网站根据统计大概知道,北京、上海、广州、深圳、杭州等地,每天能够卖出去多少书籍、纸巾、包、电器等存放期较长的商品,就将这些商品分布存放在各地仓库中,客户一下单,就从临近的仓库发货,大大减少了运输时间,提高了用户体验。

    同样的,互联网也借鉴了“就近配送”这个思路。

CDN 就近配送

    全球有那么多的数据中心,无论在哪里上网,临近不远的地方基本上都有数据中心。可以在每个数据中心里部署几台机器,形成一个缓存集群来缓存部分热数据,这样用户访问数据的是,就可以就近访问了。

    这些分布在各个地方的各个数据中心的节点,我们一般称为边缘节点

    由于边缘节点数目比较多,但是每个集群规模比较小,不可能缓存下来所有东西,因而可能无法命中,这样就会在边缘节点之上,形成了区域节点

    区域节点规模较大,缓存的数据也较多,命中的概率也就更大。而在区域节点之上是中心节点,规模更大,缓存数据更多。

    就这样,在这样一层层的节点中缓存数据,提高响应速度。但是所有的节点都没有缓存数据,就只有进行回源网站访问了。

网络协议 18 - CDN:家门口的小卖铺

    如上图,就是 CDN 的分发系统的架构。CDN 系统的缓存,是一层层的,能不访问源数据,就不访问。这也是电商网站物流系统的思路,广州找不到,找华南局,华南局找不到,再找南方局。

    有了这个分发系统之后,客户端如何找到相应的边缘节点进行访问呢?

    还记得咱们之前了解的基于 DNS 的全局负载均衡吗?这个负载均衡主要用来选择一个就近的相同运营商的服务器进行访问。

    同样的,CDN 分发网络也可以用相同的思路选择最合适的边缘节点。

网络协议 18 - CDN:家门口的小卖铺

    如上图,CDN 的负载均衡流程图。
1)没有 CDN 的情况(图中虚线部分)。用户向浏览器输入 这个域名,客户端访问本地 DNS 服务器的时候,如果本地 DNS 服务器有缓存,则返回网站的地址。如果没有,递归查询到网站的权威 DNS 服务器,这个权威 DNS 服务器是负责 web.com 的,它会返回网站的 IP 地址。本地 DNS 服务器缓存下 IP 地址,将 IP 地址返回,然后客户端直接访问这个 IP 地址,就访问到了网站。

2)有 CDN 的情况(图中实线部分)。此时,在 web.com 这个权威 DNS 服务器上,会设置一个 CNAME 别名,指向另外一个域名 ,返回给本地 DNS 服务器。

    当本地 DNS 服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的就不是 web.com 这个权威 DNS 服务器了,而是 web.cdn.com 的权威 DNS 服务器,这是 CDN 自己的权威 DNS 服务器,在这个服务器上,还是会设置一个 CNAME,指向另外一个域名,也就是 CDN 网络的全局负载均衡器。

    接下来,本地 DNS 服务器去请求 CDN 的全局负载均衡器解析域名。全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:

根据用户 IP 地址,判断哪一台服务器距用户最近;

用户所处的运营商;

根据用户所请求的 URL 中携带的内容名词,判断哪一台服务器上有用户所需的内容;

查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。

    基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的 IP 地址。

    本地 DNS 服务器缓存这个 IP 地址,然后将 IP 返回给客户端,客户端去访问这个边缘节点,下载资源。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzfsw.html