GeoDNS
GeoDNS是2个英文字母的缩写,Geo和DNS,Geo代表地理位置,而DNS则是域名解析系统,所以合起来的意思就是-基于地理位置的域名解析系统。
其作用就是在将一个域名解析成一个IP的时候,考虑DNS的请求者的地理位置,从而解析出与之相对应的或者最近的服务器的IP的地址。
GeoDNS 是2个英文字母的缩写,Geo和DNS,Geo代表地理位置,而DNS则是域名解析系统,所以合起来的意思就是-基于地理位置的域名解析系统。Geo的全 写位Geographic, DNS是3个英文字符的首字母大写,即Domain Name System.
其作用就是在将一个域名解析成一个IP的时候,考虑DNS的请求者的地理位置,从而解析出与之相对应的或者最近的服务器的IP的地址。
大家熟知DNS的作用就是就是将一个人类便于识别和记忆的域名如:
www.foxavideo.com
解析成为一个IP地址,为什么要解析成IP,是因为底层的TCP/IP通信协议中,只能够认识IP,用IP来标识网络中的一台设备。那为什么又需要GeoDNS,也就是基于地理位置的域名解析系统呢?下面举个例子并且加以叙述。
我们通常在浏览器中,输入一个地址,然后回车后,浏览器就代我们发送了一个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。这里说的重定向就是大家所熟知的301重定向,可在Windows的IIS的配置中或者*nix的 .htaccess中实现,这个不在这里解释,请自行在百度中搜索“如何进行301重定向“
这个方案基本解决这个问题。但是如果你用的用户量非常大,本来由于请求排队导致用户需要等待几秒才能看到页面,现在又加上一次重定向,时间更久了,这种情况下,导致用户体验不好,进而用户流失。
这样做还有一个问题,SEO会变得困难,因为网站权重被分散了,并且可能会保被搜索引擎认为是镜像站,其中的一个站 不被收录,要解决这个问题,需要做301重定向,但是还是不能完全解决问题;另外在对外宣传和做外链的时候,也遇到同样的问题。这个问题让很多人觉得很棘 手,网上有很多这方面的讨论,在baidu一搜一大堆。
那么进一步优化呢?想办法在域名解析的时候就直接让用户访问就近的服务器,而不是响应请求的重定向,这样就省去了整 整一个http请求和应答以及等待的时间。这个就是基于地理位置的域名解析系统。一句话概括就是,不同地区对同一个域名得到的IP不一样,例如北方A用户 去解析这个域名,返回的就是在地理位置最靠近A用户的服务器的IP,xxx.xxx.xxx.1, 而南方的用户解析这个域名的时候,相应地会返回一个靠近用户B的服务器IP,xxx.xxx.xxx.2 。通过下面的命令可以看到本地解析出来的相应的IP地址:
1
2
3
4
5
6
7
|
nslookup www.foxavideo.com
Server: 10.66.0.16
Address: 10.66.0.16 #53
Non-authoritative answer:
www.foxavideo.com canonical name = foxavideo.com.
Name: foxavideo.com
Address: 106.187.96.131
|
后面可以跟任何的域名,例如 baidu.com,
在这个案例中,那么实际的效果就是南方的用户访问www.foxavideo.com的时候,IP被解析成南方的服务器的IP,而北方的就会被解析成北方服务器的IP。
而现在几乎所有的域名服务商,如国外的最大的域名服务商 godday, 国内最大的域名服务商万网和新网统统不提供这种服务,他们只将你所申请的域名静态地和一个IP绑定。
GeoDNS服务需要额外系统建设,会比较繁琐,目前国内只有 foxaivdeo 提供这种服务。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.