加入收藏 | 设为首页 | 会员中心 | 我要投稿 天瑞地安资讯网 (https://www.52baoding.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

「云端架构之道」:CDN的关键技术~智能调度系统

发布时间:2022-11-21 16:09:35 所属栏目:云计算 来源:转载
导读:
上一篇我们介绍了CDN的本质其实是分布式多级缓存系统。光了解其本质还远远不够,还必须要了解CDN的核心是其智能调度系统,通过智能调度,保证客户能够最高效地访问最离自己最近的CDN边缘节

云计算信息系统_云计算信息存储方式_云计算概念及云计算概念股

上一篇我们介绍了CDN的本质其实是分布式多级缓存系统。光了解其本质还远远不够,还必须要了解CDN的核心是其智能调度系统,通过智能调度,保证客户能够最高效地访问最离自己最近的CDN边缘节点,从而大大提升客户的访问体验。

01 CNAM大法

做互联网、CDN都少不了去和CNAME打交道,为什么要有CNAME?以及CNAME存在的价值是什么?总结一句话:

A记录是解析域名到IP,CNAME是解析域名到另外一个域名,即域名的别名。

在说CNAME之前,要提到一个东西叫 A记录:

1.A记录

A记录,即Address记录,可以理解为一种指向关系:

域名 www.XXX.com → 111.111.111.111

也就是当你访问这些域名时,DNS服务器上会通过A记录会帮你解析出相应的IP地址,所以A记录是IP解析,直接将域名指向某个IP。

2.CNAME

CNAME记录,也叫别名记录,相当于给域名起个别名,别名可以是多个,比如:

www.YYY.com → www.XXX.com → 111.111.111.111
www.ZZZ.com → www.XXX.com → 111.111.111.111

这样就会有多个名字映射到同一个IP地址云计算信息系统,设置别名有什么作用呢?

3.CNAME作用

最常用的情况是你的网站需要CDN服务的时候,CDN供应商会要求你登录授权DNS服务器(比如万网),将你的域名()CNAME指向他们给你的域名(),这个域名一般是CDN厂商的智能调度系统,通过智能调度系统,最终将客户的域名解析到离客户最近的CDN节点上。后面会通过CDN调度系统讲解了解CNAME在其中的作用。

CNAME总结的一段不错的内容供大家参考(不感兴趣的可以跳过):

1、降低多域名、多服务器、多业务的运维成本。通过将域名CNAME到新的地址后,降低权威DNS配置的复杂性,将变化频繁的配置(比如说A记录、MX记录)、功能业务(智能多线、CDN分发)等切割分离,出现故障后排查简单明了,是谁的问题就是谁的问题,而且权威DNS更新后在全球同步是需要时间的,所以在调整上越少越好,目前行业竞争激烈,保证好的用户体验以及网站的高可用性非常重要。

2、多个域名、多种业务解析到同一个主机,同时不影响搜索引擎收录。比如说有多个域名(www、mail、news)服务要对应同一个公网服务器,服务器对外的域名是host.aaaabb.aaaa.aaaa.com.cn(可能公网IP后面对应着服务器集群,而且公网IP有可能会变化),这是一个典型的应用场景,通过将这些域名的CNAME指向host.aaaabb.aaaa.aaaa.com.cn就可以实现这个需求,而且不必去关心CNMAE后服务器的结构和变化,对于业主的维护来说非常简单,同时不影响到搜索引擎对你原域名的收录。

3、解决多线以及CDN分发加速问题。对于多线问题,通过CNAME后,可以在CNAME上做智能DNS,电信的用户走电信的链路、联通的用户走联通的链路,提升用户体验,节约链路成本,对于CDN的分发加速,大多数是通过CNAME加个GSLB(全球负载均衡)来实现,把你的域名CNAME到CDN厂家给你的域名上,剩余的事情就不用操心了,当然也可以自建CDN,自己搭一个GSLB做调度分发。

4、解决高并发下性能负载问题。其实业务分离、CDN分发已经无形解决了一部分负载问题,大的网站并发是很厉害的,为了在解析环节不出问题,就需要买付费DNS,造成成本增高,并且不方便维护,这时你可以CNAME到某一个域名,设置CNAME后域名的NS为自己搭建的DNS,还有种方式可以直接配置forword,这样可以把智能解析的业务压力放在你自己的DNS上,应用场景是灵活千变万化的,万变不离其宗。

CDN为啥要调度呢?涉及到如何分配或者获取资源,获取什么资源?谁分配资源?怎么分配资源?在CDN网络里,资源就是CDN服务节点,CDN智能调度系统负责分配这些资源,怎么调配资源属于CDN的关键技术,目前主流的有DNS调度和302调度两类方案,下面我们逐一介绍。

02 传统DNS调度

我们来想想一个场景,假如你是某公司老板,你公司中的一台IP为1.1.1.1的服务器(源站),注册了域名为,要对外提供客户访问。随着公司越做越大,访问量也越来越多,源站的服务器顶不住了,你去找CDN厂商购买CDN加速服务。这个时候他们要求你登录到权威DNS服务,给做个CNAME,指向他们给你的一个域名叫,当用户访问的时候,Local DNS会获得CDN提供的CNAME域名:,然后再次递归向CDN厂商的DNS调度服务发出域名解析请求,通过DNS调度系统的智能分析,把这个指向一个(离用户地理位置最近的)CDN边缘节点IP地址,让用户就近取到想要的资源,从而大大降低了延迟。

下图展示了DNS调度的全流程,全部过程包括Local DNS从权威或者更上面根域去层层递归获取A记录,本图简化为从域名服务器开始递归;获取到离客户最近的边缘节点时,用户请求的资源movie.avi,在边缘节点没有命中,再往骨干节点(父层节点)请求,如果依然没有命中,需要回源拉取,返回请求数据后,缓存在骨干节点、边缘节点,最后将数据返回给用户。

以上是DNS调度的全部流程,其实上面是最坏情况,一般通过DNS和CDN的缓存机制,先从Local DNS直接获取A记录,然后从CDN边缘点直接获取资源,这样提高加速效果,也就是只需要全流程图中的①、⑥、⑦、?即可。

03 302调度方案

1、302调度场景

场景一:假设你从成都出差到北京,电脑使用的是成都的DNS,使用传统的DNS调度方式,通常你的请求会被调度到了成都周边的节点,但显然从北京访问成都的效果并不会特别的好,所以为了消除local dns调度带来的偏差,会做一次重分配,通过你的接入ip判断你是在北京访问。CDN调度系统会通过客户接入IP地址,精准分配你一个北京地区的CDN节点,将该节点的IP地址通过HTTP302返回,将客户的访问重定向到该节点。

场景二:假设北京附近一共有8个节点被划为一组节点,但是面对动不动就是几个G的视频文件,为了节约资源,减少冗余,通常只有少数节点会缓存该视频,而DNS通常会返回几个可用的节点ip,但是当访问的节点不存在该视频的时候,会产生一个302调转,到一个存在该视频的节点,这个是从提高设备利用率的角度去解释302调度的合理性。

场景三:当请求一个比较小的文件的时候,一个302调度的延时甚至可能大于直接从一个较远的节点获取文件的延时。所以通常大文件会做302调度,具体判断标准一般来说视频压缩包,默认就会被认为是大文件,即使他很小,因为是基于后缀判断的。

介绍完应用场景,接下来我们从技术层面来深入了解302调度。

2、302调度的实现原理

在了解302调度方案前,我们先要了解什么是HTTP302状态码。

官方解释,302 redirect: 302 代表暂时性转移(Temporarily Moved )。

详细来说,302状态码表示重定向,当浏览器接收到服务器返回的这个状态码后,会自动跳转到一个新的URL地址,这个地址可以从响应的Location头部中获取,302表示旧地址资源还在(仍然可以访问),这个重定向只是临时地从旧地址跳转到新的URL地址。

举例:在302跳转模式下(一般通过控制台来设置),浏览器访问 为例,会收到一个状态码为302的响应:

HTTP/1.1 302 Moved Temporarily
Server: stgw/1.3.6.2_1.13.5
Date: Sun, 16 Dec 2018 19:38:58 GMT
Content-Type: text/html
Content-Length: 168
Connection: keep-alive
Location: http://61.142.166.245/xxx.dnsv1.com/a.php

意思是告诉浏览器,你需要继续访问Location中的URL去请求实际的文件内容。所以浏览器又发起了第2次请求:

这个URL中的IP地址,就是CDN调度系统为我们分配的CDN节点,这个IP是怎么拿到的?

我们来看下面这张图:

1)用户DNS解析域名时候,获得IP地址并不是CDN接入节点,而是CDN服务厂家调度中心的IP地址;

2)用户向调度中心发送请求时,会带有准确的用户端ip地址,另外由于调度中心是CDN厂商自己服务,会通过各种技术手段去优化调度策略(全局负载均衡,文件热度以及带宽冗余等),返回给用户当前最合适节点IP地址。

3)用户获得302响应,重新向CDN接入节点发起请求,获取响应。

3、302调度的不足

虽然302调度有自己优势,但是也存在不足:

1.响应时间

至少会增加一次302跳转耗时;

2.业务风险

如果调度主备集群出现异常,对全部客户业务是毁灭性的;

3.机器成本

调度集群成本,以及各种收集监控数据,来综合判断当前调度策略;

4.兼容性

部分终端不支持302跳转。

04 调度方案总结

DNS调度:将请求的域名转换为IP地址,实现了跨运营商和跨省市的调度。

302调度:基于精准IP和内容的精准调度方案,可获取最终用户的真实IP。

一般而言,基于不同调度场景的需要,DNS调度和302调度在CDN中都是结合使用的。两者的结合,能够降低网间流量、节省互通费用,有效地提升用户上网体验。

(编辑:天瑞地安资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!