- 前言
- CDN
- CDN架构
- 客户端如何访问
- 往期推荐
前言
之前记录过关于DNS的内容,[DNS域名解析系统],不熟悉的同学可以点击进去看一下。
那跟今天记录的内容有关系吗?没关系
今天记录的内容是什么,是CDN,看百科的介绍:
如果按照之前的单地点部署方式,那么所有流量都会请求到那个地方,而且有些请求的距离相当远,比如您现在访问github,距离最近的服务器好像是在新加坡,那么一个请求就要跨越几千上万公里,中间耗时不言而喻。
我经常访问github的时候会很慢,有时候仓库都check不下来
由于有这些情况,所以CDN出现了。
CDN
CDN 和分布式仓储系统一样,分为中心节点、区域节点、边缘节点,而数据缓存在离用户最近的位置。
在数据中心部署一个用于缓存的集群来缓存部分数据,当访问数据时,就可以进行就近访问。
分布在各个地方的各个数据中心的节点,称为边缘节点
当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。
由于边缘节点数目较多,但每个集群规模较小,不可能缓存所有东西,所以可能无法命中,所以在边缘节点之上由区域节点,规模较大,缓存数据更多,命中概率更大,区域节点之上时中心节点,规模更大,缓存数据更多。如果还无法命中,只好回源网站访问。
CDN擅长的是缓存静态数据,也即是像css、html、图片等数据
CDN架构
客户端如何访问
没有CDN时:
在没有CDN时,会访问本地DNS,然后递归根DNS至权威DNS服务器获取IP地址。
直接进行访问
有CDN时:
有CND后,会先访问web.com权威DNS服务器,设置一个CNAME别名,指向另一个域名www.web.cdn.com,返回给本地DNS服务器
当本地 DNS 服务器拿到这个新的域名时,需要继续解析这个新的域名。这个时候,再访问的就不是 web.com 的权威 DNS 服务器了,而是 web.cdn.com 的权威 DNS 服务器,这是 CDN 自己的权威 DNS 服务器。在这个服务器上,还是会设置一个 CNAME,指向另外一个域名,也即 CDN 网络的全局负载均衡器。
接下来,本地 DNS 服务器去请求 CDN 的全局负载均衡器解析域名,全局负载均衡器会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:
- 根据用户 IP 地址,判断哪一台服务器距用户最近;
- 用户所处的运营商;
- 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需的内容;
- 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
基于以上这些条件,进行综合分析之后,全局负载均衡器会返回一台缓存服务器的 IP 地址。