登录

会员权益

获取需求

查看名片

专属客服

尊贵标识

VIP低至1.5U/天

三种CDN调度系统实现原理详解

分享

2022-08-17

CDN涉及的专业知识较多,其中调度系统就是非常复杂的问题,今天就详细解释,三种CDN调度系统实现原理解释。

  CDN涉及的专业知识较多,其中调度系统就是非常复杂的问题,今天就详细解释,三种CDN调度系统实现原理解释。

 

1、调度系统是什么?


  调度系统是指CDN厂家有能力通过各种机制将客户域名的所有现网请求引导到合适的目标机房,从而实现流量控制、质量控制、成本控制以及故障处理。

 

2、接入CDN的方式


  在讲解调度原理之前,我们先来看看客户是怎么接入CDN的,或者说客户的流量是如何切往CDN的。(假设客户的域名为:www.test.com,大概有以下几种方式:)

 

一、CNAME方式


  CNAME方式是最常见的接入方式,即CDN厂家向客户提供一个调度域名,客户将自己业务域名的CNAME指向这个调度域名,从而实现将请求引导到CDN上来。

 

  腾讯向客户提供的CDN是 $domain.cdn.dnsv1.com ,客户的域名 www.test.com 如果需要将请求切到腾讯云CDN上,只需要将 www.test.com 的CNAME 设置为 www.test.com.cdn.dnsv1.com 即可。

 

CNAME方式的背后,又分为以下几种模式:

 

01


  CDN厂家提供基于DNS的调度,最终客户的域名经CDN的调度域名解析出CDN节点的IP腾讯云CDN即采用这种模式。


02


  CDN厂家提供基于302的调度,给的CNAME不是真正CDN节点,而是一个调度集群,真正的CDN IP地址是通过在调度集群上向请求响应302跳转实现的。腾讯云为一些手机厂家的下载业务提供过这种模式。


03


  再有一种,是Anycast CDN。从DNS层面上看,CDN厂家提供给你的CNAME的解析结果只有全球固定的一两个IP地址,不像方式1中不同地区的解析结果IP不同。这种场景下的流量调度,不是靠DNS解析,而是Anycast BGP路由的调整,通过调整Anycast的路由来调度各地区的流量到哪个机房。

 

二、调度域名深度定制方式


  这种模式主要是一些代理商客户,即使用腾讯CDN来接客户,又想在DNS层面隐藏他们使用的CDN厂商。一般做法是客户提供一个自己的域名比如:  gslb.mycdn.com,腾讯云也提供一个中性的且不备案的平台调度域名  glsb.mycdn-platform.com。真正的客户域名 www.test.com CNAME到 gslb.mycdn.com ,后者CNAME到腾讯云的调度域名 gslb.mycdn-platform.com。这样整个解析环节都没有腾讯云的痕迹。

 

三、域名托管方式


  这种模式不太常见。以域名 www.test.com 为例,如果客户要将请求切往CDN,需要将 test.com 的NS记录改为 CDN厂商提供的NS 权威服务器。这时CDN厂商同时担当了DNS服务商和CDN服务商的角色。

 

四、调度形式详解

d87feba45c8fb44b6ee15604567eb665.png 

1、DNS调度


  CDN的调度服务器是调度域名的NS权威服务器,调度域名的TTL被故意设置成很短(比如3分钟),这样所有请求都会较频繁地触发客户端的local DNS重新到CDN调度服务器解析新的IP地址。此时CDN的调度服务器依据是local DNS的出口地址。DNS调度流程如下:


  客户端DNS TTL过期无首次访问,向local DNS发起DNS查询。local DNS在递归解析过程中,向CDN的调度服务器发起解析请求。CDN调度服务器可以看到local DNS的出口ip(有时还有基于EDNS的客户端ip)。通过IP库获取上一步IP的地理及运营商属性,从当前调度域名的策略规则中匹配,同时结合其它的因素(比如质量监控、机房成本因素等)得到最佳的一组IP

 

以上是DNS调度的基本流程,下面将举个实际场景中的例子:

b816854efc2e6986515678704b9fa5bb.png 

2、DNS调度原理


  浏览器首次请求目标URL,本地无p73.ping.dnsv1.com 解析记录,向DNS服务器(也称为 local DNS)202.96.134.133发起查询请求。

 

  202.96.134.133(此IP背后的真实服务器)若本地无缓存,发起递归解析,最终解析到388957.p23.tc.cdntip.com,解析请求被发往cdntip.com的权威服务器 ns-open3.qq.com。

 

  ns-open3.qq.com并非一台实体服务器,而是网络的虚拟IP,先避开复杂的网络结构,其背后有一台或多台真实DNS权威服务器(或集群),为描述方便假设其IP为10.1.1.1。

 

  10.1.1.1 目前有的信息包括域名 388957.p23.tc.cdntip.com、local DNS ip 202.96.136.240。如果local DNS支持EDNS,那此时还能看到客户端IP 113.87.117.154。

 

  有了以上3个信息,调度服务器,就能通过算法得出结果了

 

  202.96.134.133 将IP结果返回给客户端,浏览器按自己的策略从中选择一个IP发起HTTP请求。

 

  DNS调度的优缺点:

bed0a534de66fd33dd1d46e26fec2e3b.png

 

3、302调度

  先看下302模式下与前面的DNS调度有什么不同。

  (http://p73.ping.dnsv1.com/a.php)

  在DNS解析调度模式下,浏览器访问上面的URL时,正常情况下会收到CDN节点的返回码200和文件内容,即DNS解析到的IP会直接做为文件服务器响应浏览器请求。类似于:

  HTTP/1.1 200 OK

  Server: NWS_S1

  Connection: keep-alive

  Date: Sun, 11 Dec 2018 19:44:02 GMT

  Transfer-Encoding: chunked

  Keep-Alive: timeout=120

  X-Daa-Tunnel: hop_count=2

  X-NWS-LOG-UUID:750246221628030518   0be2170ce2df3d9f634cd70470120401

  \r\r\r\n文件内容

 

  但在302跳转模式下,上述URL的访问,浏览会收到一个状态码为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/p73.ping.dnsv1.com/a.php

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

  http://61.142.166.245/p73.ping.dnsv1.com/a.php

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

  域名解析的过程和基于DNS的调度一样,最终都会拿到一组IP,目标IP有两种情况:

  目标IP并不是CDN的实际边缘节点,而是302调度集群的IP;

  IP是CDN的普通边缘节点IP。

 

01

  浏览器向第一次拿到的IP发起http请求

 

02

  如果这个IP实际上是CDN的边缘节点,它会从本机的配置文件中读取信息:

 

  若请求Host不是IP,URL形式为:http://p73.ping.dnsv1.com/a.php,则将请求转发到后端调度集群;

 

  若请求Host为IP,URL形式为:http://61.142.166.245/p73,ping.dnsv1.com/a.php,则读取缓存提供文件服务

 

03

  此时请求到了调度群集上,我们能拿到的客户端信息有客户端的出口IP(绝大多情况下是相同的)

 

04

  接下来算法和基于DNS的调度可以是一样的,只是判断依据由local DNS出口IP变成了客户端的出口IP(调度集群毕竟不是CDN节点,无法向客户端提供实际的文件内容,此时它只能通过302报文告知客户端)

 

05

  浏览器收到302回应,跟随Location中的URL,继续发起http请求,这次请求的目标IP是CDN边缘节点,且Host是IP,CDN节点会响应实际的文件内容。


4、302调度的优缺点:

a59b074a74297d5533e00b5416120cfd.png 

  因此,302只适用于客户端兼容性好的大文件下载业务哦

 

  实时调度的好处:

 

  快速隔离故障设备

 

  精确控制节点于机房的带宽和资源负载

 

  快速应对业务突发,尤其适合大文件加载类突发场景,例如:手机固件、游戏安装包、大体积资源分发

 

5、路由调度

  Anycast路由技术使得物理分布在全球/全球不同区域的不同服务器具有相同的IP地址,客户端对这个IP的请求会在路由层面引导到最近的物理服务器上。


  Anycast BGP路由调度模式在表现形式上和DNS调度一样:

  业务域名通过CNAME解析到CDN的调度域名

  CDN的调度域名解析出的IP即边缘节点IP,请求不会发生302跳转


  但也有特殊之处:

  解析结果的全球IP数量极少,通常只有1-2个,或者一个大洲或大片区域1~2个DNS的TTL通常极大,经常配置成2小时甚至更长。

 

Anycast路由调度的优缺点:

ef245029971f1cb4998394f587065983.png 

 

免责声明:
详情

Please Play Responsibly:

Casino Games Disclosure: Select casinos are licensed by the Malta Gaming Authority. 18+