CDN(Content Delivery Network)被称为内容分发网络,主要用于解决减少客户端请求的网络时延问题。
假如一个上海的主机想要访问北京的主机的一些数据,那么数据肯定要走几百公里的路程。能不能在上海设置一个代理主机来缓存北京的主机对应的数据,这样的话,上海的主机直接访问上海的代理主机而不用在访问源服务器了,大大的减少了时延。
CDN通过设置边缘代理服务器来大大的减少了客户端请求的网络时延
CDN主要分为中心节点和边缘节点
中心节点
是CDN的心脏,负责对边缘节点的状态进行监控,根据传输距离、边缘节点的负载情况等条件 来为客户端分配最合适的边缘节点,做好边缘节点的负载均衡。
中心节点就是一个智能调度服务器,为不同位置的浏览器分发不同的边缘节点。
边缘节点
边缘节点是代理服务器,用来对源服务器的缓存。
一个权威DNS服务器有两种常用的记录格式:
1、域名和IP地址的映射记录,记录类型为 A
2、域名和域名的映射记录,记录类型为 CNAME
CNAME解决了什么问题?
现有问题如下:
有两百个域名都用了A类型的记录指向同一个服务器,也就相当于有两百条域名–IP的记录。
此时如果更换了那一台服务器的IP地址,需要 手动更换两百条记录
CNAME解决方式:
目前CNAME多用于CDN配置。一个域名不指向对应的IP地址,而是指向对应的CDN的智能调度服务器域名。这就是为了防止出现上面描述的问题。
1、当一个浏览器利用DNS去解析网站域名的时候,DNS服务器不会直接返回源服务器的IP地址,而是返回一个CNAME记录。CNAME中对应着CDN的智能调度服务器的域名,也就是CDN中心节点的域名。
2、浏览器通过CDN的DNS服务器来解析智能调度器的域名,获取中心节点的IP地址。
3、浏览器通过IP地址访问CDN的智能调度服务器,CDN的智能调度服务器会根据以下的规则来返回一个最合适的边缘节点的IP给浏览器。
4、 浏览器得到了边缘节点的IP地址,然后发送对应的请求。
5、 边缘节点得到对应的请求后,如果有对应的资源,就返回,如果没有,就向源服务器发送请求获取,然后缓存到本地,并返回给浏览器。
命中率
命中率 指的是 边缘节点对于客户端的资源命中概率。
回源率
回源率 指的是 边缘节点对于客户端的资源没有命中,请求源服务器的概率。
命中率越高、回源率越低,说明一个CDN越能够提升访问效率。
资源分为动态资源和静态资源。
静态资源,比如说图片、视频等每次获取都不会改变的资源,可以使用CDN进行代理缓存。
动态资源是服务器会根据不同的参数来返回不同的资源结果,是一个动态的,比如实时点击率等动态数据。CDN是无法直接进行缓存的。
CDN通过引入数据对应的相关计算代码,来实现动态数据缓存,这就是边缘计算,在边缘节点进行计算。