就近访问深圳机房,如何保证就近接入呢?(组图)

gslb(global server load balance)技术的一点理解前言

对于比较大的互联网公司来说,用户可能遍及海内外,此时,为了提升用户体验,公司一般会在离用户较近的地方建立机房,来服务这部分用户的请求。

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

此时,作为服务提供方,自然是希望用户可以就近访问,广东用户就访问深圳机房,北美用户就访问北美机房。

这个要怎么做到呢,比如大家同时访问,如何保证就近访问呢?

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

gslb的实现方案之dns

图片[1]-就近访问深圳机房,如何保证就近接入呢?(组图)-唐朝资源网

dns方案,应该也是最主流的一种方案,我们可以先思考下,访问时,会做什么事情呢?首先要拿到域名背后的ip,这里就会进行dns递归查询。

不看字也可以直接看图。

但是,有一点大家要记得,自始至终,都是localDns在帮我们跑东跑西,相当于是我们的代理,在这个过程中,root、tld dns服务器、权威服务器,都是只和localDns打交道,完全不知道我们用户的存在,因此,有一点很重要,root、tld dns服务器、权威服务器只知道localDns的ip,而不知道我们用户的ip。

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

图片[2]-就近访问深圳机房,如何保证就近接入呢?(组图)-唐朝资源网

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

这边可以给配置ns记录,让它指向另外一个dns服务,而这个dns服务,我们可以自己实现一个,无非就是写个后台服务,开个端口,接收dns请求,正确实现dns协议即可,gslb就是这么一个自定义的dns服务。

NS 代表“域名服务器”,域名服务器记录指示哪个 DNS 服务器对该域具有权威性(即,哪个服务器包含实际 DNS 记录)。基本上,NS 记录告诉互联网可从哪里找到域的 IP 地址。一个域通常会有多个 NS 记录,这些记录可指示该域的主要和辅助域名服务器。倘若没有正确配置的 NS 记录,用户将无法加载网站或应用程序。

下面是一个 NS 记录示例:

example.comrecord type:value:TTL

@

NS

ns1.exampleserver.com

21600

图片[3]-就近访问深圳机房,如何保证就近接入呢?(组图)-唐朝资源网

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

gslb实现

这块我看了下腾讯这边,应该是06年就搞出这东西了,不知道具体实现,只说是参考开源框架改的,不过我猜测,可能是根据bind这个开源dns解析器来改的,毕竟现在主流的dns服务,主要就是bind、dnsmasq,我这两天为了实践这个gslb,还自己搭了个bind(不过最终发现解析不到自己的bind服务上,看了域名解析商的说明,貌似是不能ns记录指向我这种私自搭建的dns服务)

一般大厂肯定都是有自己的gslb实现了,我在携程的技术文里也看到相关的gslb技术的说明。

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

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

以我现在使用的dnspod这家解析商来说,默认其是支持几种路线的,比如电信、移动,可以配置不同的指向ip。

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

总结

大家也可以分享下自己的看法,gslb实现这部分,都是我瞎吹的,不过dns解析商这种,提供的也算是gslb的一种实现吧

© 版权声明
THE END
喜欢就支持一下吧
点赞291赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容