CDN之GSLB详解

CDN之GSLB详解CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等,而本文介绍的GSLB是属于CDN中的内容路由技术的关键技术。一、内容路由技术简介:CDN负载均衡系统实现C…

大家好,又见面了,我是你们的朋友全栈君。

CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等,而本文介绍的GSLB是属于CDN中的内容路由技术的关键技术。

一、内容路由技术简介:

CDN负载均衡系统实现CDN的内容路由功能,它的作用是将用户的请求导向整个CDN网络中的最佳节点。最佳节点的选定可以根据多种策略,例如距离最近、节点负载最轻等。

负载均衡系统是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的效率和性能。通常负载均衡可以分为两个层次:全局负载均衡(GSLB)和本地负载均衡(SLB)。负载均衡可以通过多种方法实现,主要的方法包括DNS、应用层重定向、传输层重定向等等。

1.全局负载均衡(GSLB)主要的目的是在整个网络范围内将用户的请求定向到最近的节点(或者区域),因此,就近性判断是全局负载均衡的主要功能。

对于全局负载均衡而言,为了执行就近性判断,通常可以采用两种方式,一种是静态的配置,例如根据静态的IP地址配置表进行IP地址到CDN节点的映射。另一种方式是动态的检测,例如实时地让CDN节点探测到目标IP的距离(可以采用RRT,Hops作为度量单位),然后比较探测结果进行负载均衡。当然,静态和动态的方式也可以综合起来使用。

2. 本地负载均衡一般局限于一定的区域范围内,其目标是在特定的区域范围内寻找一台最适合的节点提供服务,因此,CDN节点的健康性、负载情况、支持的媒体格式等运行状态是本地负载均衡进行决策的主要依据。

对于本地负载均衡而言,为了执行有效的决策,需要实时地获取Cache设备的运行状态。获取的方法一般有两种,一种是主动探测,一种是协议交互。

1)主动探测针对SLB设备和Cache设备没有协议交互接口的情况,通过ping等命令主动发起探测,根据返回结果分析状态。

2)另一种是协议交互,即SLB和Cache根据事先定义好的协议实时交换运行状态信息,以便进行负载均衡。

比较而言,协议交互比探测方式要准确可靠,但是目前尚没有标准的协议,各厂家的实现一般仅是私有协议,互通比较困难。

二、GSLB的常用技术

GSLB常用技术主要是下面三种:

1) DNS调度:基于请求端local dns的出口IP归属地及运营商属性的DNS调度;
2) 302调度:基于客户端IP归属地及运营商属性的302跳转调度;
3) 路由调度:基于Anycast技术(BGP路由)的机房流量调度;

1.DNS调度

CDN之GSLB详解

执行步骤如下所示:
① 提交域名
② 客户端解析域名
③ NS解析到GSLB- 
// 3的GSLB服务器(例如阿里云、腾讯云等)一般是厂商的调度服务器,
// 对于加速域名来说,域名的关联关系为:
// a.com-->加速域名的cname: a.XXX.com--->
// 厂商提供服务的线路a.XXXX.ali.com(这个往往是GSLB的服务器)
④ GSLB解析并返回IP
// 4通过最终客户的域名经CDN的调度域名解析出CDN节点的IP,将对应的IP地址返回给GSLB服务器
// 这里的域名解析往往是通过,当前访问加速域名的用户所在的“地区+供应商”,例如 “上海电信”
// 到dns服务器上去查询,对应的CDN所在地区和厂商的最近IP所属的那些服务器IP。
⑤ 客户端请求IP
⑥ 返回结束

例子如下所示: 

$ dig  p200107.ping.dnsv1.com
。。。。。。
p200107.ping.dnsv1.com.  588  IN  CNAME  k97hqyk4.tweb.sched.ovscdns.com.
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  203.205.137.254
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  203.205.137.123
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  119.28.164.234
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  119.28.165.56
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  203.205.136.55
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  119.28.165.55
k97hqyk4.tweb.sched.ovscdns.com. 168 IN  A  203.205.136.62
。。。。。

这种方式的优缺点:

优点:
1.简单易用、用户无感知
2.客户端兼容性好
缺点:
1.调度策略非实时生效
原因:DNS是树型分布式系统,所有节点上都会按域名的TTL来做缓存,
这就导致CDN的调度策略其实并不是实时生效的。
2. 调度不够精确
原因:大量的local DNS不支持edns协议,拿不到客户的真实IP,
CDN绝大多数时候只能通过local DNS ip来做决策,
而local DNS ip有时候不太靠谱。
(一种是厂商配置的localDNS 并不是本地的IP地址,例如上海的IP配置了北京的DNS,
一种是8.8.8.8这种Public DNS,接入IP是Anycast IP没有归属地一说,
出口IP经常变动,比如中国大陆使用时,出口IP经常是中国台湾的google机房。)

2.  http redirection 302跳转

CDN之GSLB详解

执行步骤如下所示:
① 提交域名
② 客户端解析域名
③ DNS解析域名为GSLB // 这里的GSLB服务器与上面的一致,都是厂商提供的
④ 客户端提交请求给GSLB服务器
⑤ GSLB解析出目标IP并发起HTTP转发
// 这里返回的CDN服务器IP,往往通过CDN的负载情况、RTT时间,
// 每个CDN服务器的权重、以及用户与服务器之间的位置和供应商来决策,
// 当然这些决策也是由厂商(例如阿里、腾讯)等给出的。
⑥ 客户跳转发请求到目标IP
⑦ 返回结束

例子如下所示:

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
// 备注: 这里的61.142.166.245 是302 跳转之后,厂商返回的CDN 服务IP。

(例子来源于:https://cloud.tencent.com/developer/article/1394677)

这种方式的优缺点:

优点:
1.实时调度、准确性高
原因:由于可以拿到请求的出口IP,每次拿到的最终IP都是实时计算的结果,
所以调度策略是实时生效的,也是当前网络中的最真实情况提供的IP。
缺点:
1.业务兼容性: 要求用户的客户端必须支持302跳转。
2.增加了访问的延迟:使用于对延时敏感业务。
原因:这种模式的调度,每个请求都会多出一次http交互。
比如web静态小资源就不太合适,适用于客户端兼容性好的大文件下载业务。

3.路由调度

Anycast路由技术使得物理分布在全球/全球不同区域的不同服务器具有相同的IP地址,客户端对这个IP的请求会在路由层面引导到最近的物理服务器上。常见于国外的CDN厂商,例如Cloudflare,这不做进一步介绍,可以参考:

https://www.cloudflare.com/zh-cn/learning/cdn/glossary/anycast-network/

参考资料:

http://www.idcquan.com/CDN/720016.html

https://blog.csdn.net/zhaqiwen/article/details/42024045

https://my.oschina.net/u/2822116/blog/736558

https://sking7.github.io/articles/1006724251.html

https://cloud.tencent.com/developer/article/1394677

https://chongit.github.io/2015/04/15/GSLB%E6%A6%82%E8%A6%81%E5%92%8C%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/

https://www.cnblogs.com/peon/archive/2007/12/30/1021219.html

LVS:http://www.linuxvirtualserver.org/zh/lvs1.html


欢迎关注公众号:灰子学技术

CDN之GSLB详解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/132919.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • go 环境搭建(mac 版)

    go 环境搭建(mac 版)1.下载合适你电脑的版本,下载地址是:https://studygolang.com/dl,我是macm1的,我下载的是https://studygolang.com/dl/golang/go1.17.2.darwin-arm64.pkg如下图:2.下载完成后,双击安装,安装成功后如下图:3.打开终端,输入goversion如果出现版本成功,就是安装成功了,如下图:如果输入命令,说找不到commandnotfound:go的情况解决如下:…

    2022年10月12日
  • getopt用法说明

    getopt用法说明一.函数模型#includeintgetopt(intargc,char*constargv[],constchar*optstring);externchar*optarg;externintoptind,opterr,optopt;#include<

  • Java SSM框架面试题「建议收藏」

    Java SSM框架面试题「建议收藏」Spring入门:https://blog.csdn.net/qq_40323256/article/details/89738330Spring中的动态代理和aop的自定义通知:https://blog.csdn.net/qq_40323256/article/details/89754201SpringMVC入门:https://blog.csdn.net/qq_40323256/ar…

  • B. Bell Ringing

    B. Bell Ringing题目链接https://www.jisuanke.com/contest/1410题目要求只有两点,要求1:要把n个数的全排列打印出来,要求2:相邻的两层数满足同一个数字的位置变化之多一个单位比如说123与132这样是符合题意的但是123与312是不行的因为3的位置变了两个单位同理123与231也不符合题意。这是一到递归题,n个数的全排列可以有n-1个…

    2022年10月23日
  • sap analytics cloud_agilent benchlink data logger

    sap analytics cloud_agilent benchlink data loggerSAP Customer Data Cloud(Gigya)的用户搜索实现

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号