关于后端:gslbglobal-server-load-balance技术的一点理解

2次阅读

共计 2385 个字符,预计需要花费 6 分钟才能阅读完成。

gslb(global server load balance)技术的一点了解

前言

对于比拟大的互联网公司来说,用户可能遍布海内外,此时,为了晋升用户体验,公司个别会在离用户较近的中央建设机房,来服务这部分用户的申请。

比方微信次要是服务国内,在国内就会在很多城市有大量机房服务国内用户,另外,因为在北美、欧洲都有用户应用,所以,在欧洲和北美也会有对应的机房。

此时,作为服务提供方,天然是心愿用户能够就近拜访,广东用户就拜访深圳机房,北美用户就拜访北美机房。

这个要怎么做到呢,比方大家同时拜访 www.qq.com,如何保障就近拜访呢?

这就是 gslb(global server load balance)的舞台。

gslb 的实现计划之 dns

dns 计划,应该也是最支流的一种计划,咱们能够先思考下,拜访 www.qq.com 时,会做什么事件呢?首先要拿到域名背地的 ip,这里就会进行 dns 递归查问。

  • 用户的 dns 申请,首先进入本地的 dns 服务器,比方我这边是深圳电信宽带,实践上就进入深圳电信的 dns 服务器,这个咱们叫做 localDns
  • localDns 会去查问 root dns 服务器,root dns 服务器只保护了顶级域名的 dns 服务器地址,因而会返回 .com 这个顶级域名对应的 dns 服务器(记作 tld,即 top level domain 顶级域名服务器)
  • localDns 接下来,向.com 顶级域名服务器发动申请,其会返回能解析 qq.com 域名的 dns 服务器(叫做权威服务器)
  • localDns 接下来,向 qq.com 域名的 dns 服务器发动申请,其会解析 www 这个主机对应的 ip,并返回
  • localDns 拿到 www.qq.com 的 ip 后,返回给用户。

不看字也能够间接看图。

然而,有一点大家要记得,从头至尾,都是 localDns 在帮咱们跑东跑西,相当于是咱们的代理,在这个过程中,root、tld dns 服务器、权威服务器,都是只和 localDns 打交道,齐全不晓得咱们用户的存在,因而,有一点很重要,root、tld dns 服务器、权威服务器只晓得 localDns 的 ip,而不晓得咱们用户的 ip。

当初咱们晓得了,最终是负责 qq.com 服务器的 dns server 来帮咱们解析背地的 ip,问题来了,这个 dns server 能很好地帮咱们进行就近接入吗,答案是,不肯定,这边个别是给 www.qq.com 配置多条 A 记录,即多个机房的 ip,如深圳机房 ip、北美机房 ip,这个 dns 服务器不是很智能,它是轮询地返回 ip,那很有可能,北美用户却拿到了国内机房 ip,那还怎么玩呢,卡爆了。

问题就是,这个 dns 服务器不是很智能,不能满足咱们的个性化需要,怎么办呢,解决的方法是有的,大家能够看下图。

这边能够给 www.qq.com 配置 ns 记录,让它指向另外一个 dns 服务,而这个 dns 服务,咱们能够本人实现一个,无非就是写个后盾服务,开个端口,接管 dns 申请,正确实现 dns 协定即可,gslb 就是这么一个自定义的 dns 服务。

NS 代表“域名服务器”,域名服务器记录批示哪个 DNS 服务器对该域具备权威性(即,哪个服务器蕴含理论 DNS 记录)。基本上,NS 记录通知互联网可从哪里找到域的 IP 地址。一个域通常会有多个 NS 记录,这些记录可批示该域的次要和辅助域名服务器。假使没有正确配置的 NS 记录,用户将无奈加载网站或应用程序。

上面是一个 NS 记录示例:

example.com record type: value: TTL
@ NS ns1.exampleserver.com 21600

在引入了 gslb 之后,dns 解析,就变成了这样的过程。

  • localDns 后面的步骤都差不多,不同点在于,其向 qq.com 域名的 dns 服务器发动申请后,qq.com 域名解析 www.qq.com,发现 www.qq.com 配置了 ns 记录,此时,就会返回 ns 记录中的 value 给 localDns,而这个 value,就是指向腾讯本人的 gslb 服务
  • localDns 向腾讯的 gslb 服务发动申请,留神,咱们后面说过,此时这个 udp dns 查问,客户端 ip 是 localDns 的 ip,gslb 服务器也只是会拿到 localDns 的 ip,比方,以我为例,gslb 拿不到我的 ip,只能拿到深圳电信的 ip。
  • gslb 收到申请后,实践上能够拿到的数据包含:该申请来自于哪个国家,该申请的 ip 所属的运营商,该申请的 ip 所属的省份城市,如中国 - 深圳 - 电信,此时,gslb 能够抉择返回深圳机房的 ip 给 localDns,而不是北美机房的 ip,这样就做到了就近接入

gslb 实现

这块我看了下腾讯这边,应该是 06 年就搞出这货色了,不晓得具体实现,只说是参考开源框架改的,不过我猜想,可能是依据 bind 这个开源 dns 解析器来改的,毕竟当初支流的 dns 服务,次要就是 bind、dnsmasq,我这两天为了实际这个 gslb,还本人搭了个 bind(不过最终发现解析不到本人的 bind 服务上,看了域名解析商的阐明,貌似是不能 ns 记录指向我这种擅自搭建的 dns 服务)

个别大厂必定都是有本人的 gslb 实现了,我在携程的技术文里也看到相干的 gslb 技术的阐明。

那假如咱们要是在一个小厂,没有自研能力,又当如何呢?

其实,dns 解析商还是有提供高级能力的,是我 low 了,这个很简略,只有钞能力,就能够解决。

以我当初应用的 dnspod 这家解析商来说,默认其是反对几种路线的,比方电信、挪动,能够配置不同的指向 ip。

我了解下,大厂呢,应该是有这个研发能力,不违心花这个冤枉钱,毕竟,公司小的时候,租着便宜,大了之后,域名一多,比起自研,就未必便宜了;而且自研的话,还能够和业务深度联合,搞点花活进去。

总结

大家也能够分享下本人的认识,gslb 实现这部分,都是我瞎吹的,不过 dns 解析商这种,提供的也算是 gslb 的一种实现吧

本文由 mdnice 多平台公布

正文完
 0