基于地理位置的动态域名解析

基于地理位置的动态域名解析

基于地理位置的域名

基于地理位置的DNS

大家熟知DNS(域名解析)的作用是将人类便于记忆的域名,如 www.foxavideo.com, www.360converter.com, www.google.com转换成对应IP。

那么为什么需要这样的转换呢?因为在承载互联网的底层协议TCP/IP的通信世界中,只有知道IP地址以后,才能将对应的资源请求,比如一个http的请求,发送到目的机器上。

我们通常在浏览器中,输入一个地址,然后回车后,浏览器就代我们发送了一个http的,请求到目标机器。这发送这个请求之前就有一个域名解析的操作,这个操作可能在本机的缓冲中找到,或者在所连的路由器,或者ISP那里,亦或者是授权域名解析服务商那里。

上面大概提到DNS域名解析的作用和大概请求过程。下面提出一个实际工作中会遇到的一个问题,并看看怎么解决的这个问题。

问题: 某一个网站的用户遍及全国各地,甚至是全球,而服务器在北京,结果发现,南方的一些的地区,访问很慢,国外访问更慢。公司打算增加服务器来解决这一问题,大致的思路

在中国南方和北方各部署一个服务器,国外也部署一个服务器,国外建议设在香港(关于这一点,我会在其他的文章提到具体的原因),这种布局下面,可以采用就近访问原则,比如北京的用户使用的北方的服务器,南方的用户使用南方服务器,国外的用户使用国外服务器。最直接,最简单的办法就是不同的服务器使用不同的子域名,比如

north.foxavideo.com  ——– 北方

south.foxavideo.com   ——– 南方

foreign.foxavideo.com   ——- 国外

然后南方用户访问的时候,使用 north.foxavideo.com,但是这里有很大的问题,因为原来的用户只知道 www.foxavideo.com,根本不知道 north.foxavideo.com域名的存在。好不容易让南方的用户知道这个域名,并开始使用,但是哪天用户去了北方,访问这个域名时候发现很慢,这个可想而知了,因为北方访问南方的服务器吗。所以将这种方法加以改进,有了下面的方案:

所有人都还是访问www.foxavideo.com这个域名,并且这个域名对应的ip还是原来北京的那个服务器,在这台服务器的后台代码中判断当前用户是来自北方,南方还是国外然后redirect(重定向)到就近的服务器。比如,南方的用户在浏览器中敲入 www.foxavideo.com然后回车,此时会被重定向到 north.foxavideo.com。这个方案基本解决这个问题。但是如果你用的用户量非常大,本来由于请求排队导致用户需要等待几秒才能看到页面,现在又加上一次重定向,时间更久了,这种情况下,导致用户体验不好,进而用户流失。

这样做还有一个问题,SEO会变得困难,因为网站权重被分散了,并且可能会保被搜索引擎认为是镜像站,其中的一个站不被收录,要解决这个问题,需要做301重定向,但是还是不能完全解决问题;另外在对外宣传和做外链的时候,也遇到同样的问题。这个问题让很多人觉得很棘手,网上有很多这方面的讨论,在baidu一搜一大堆。

那么进一步优化呢?想办法在域名解析的时候就直接让用户访问就近的服务器,而不是响应请求的重定向,这样就省去了整整一个http请求和应答以及等待的时间。这个就是基于地理位置的域名解析系统。一句话概括就是,不同地区对域名得到的IP不一样。在这个案例中,那么实际的效果就是南方的用户访问www.foxavideo.com的时候,IP被解析成南方的服务器的IP,而北方的就会被解析成北方服务器的IP。

而现在几乎所有的域名服务商,如国外的最大的域名服务商 godday, 国内最大的域名服务商万网和新网统统不能提供这种服务,他们只能做到将一个域名静态的和IP绑定。这中服务需要额外系统建设,会比较繁琐,目前国内只有 foxaivdeo 提供这种服务。

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

留言

你的邮箱是保密的 必填的信息用*表示