首页 > 代码库 > 访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)

访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)

大型网站或多受众用户服务网站在中国特定网络环境下,离不开CDN(内容服务网络)及用户调度。而CDN与用户调度则涉及智能DNS解析与用户定位的问题.

大家知道,现在很多网站的 GLSB 都是基于 DNS 来做用户定位调度.DNS 的解析流程如下:

比如,我是北京的用户,我的 DNS 为 202.106.0.20.当我要打开 www.php-oa.com 时,先会给请求发给 ISP 告诉我的 DNS.这个叫 Local DNS .然后其它的向根域和二级域的查询,都是由 Local DNS 帮我完成的.

当一个网站使用了智能的 DNS 后,智能 DNS 服务器会得到 Local DNS  的 IP 来区分用户的来源.如下,发现 202.106.0.20 这个 Local DNS 的地址,然后到自己收集的地址中一对比,是北京联通用户.然后给我解析 cname 到 bj.www.php-oa.com 这个地址.

这样完成了我最近的用户到最近的网站服务器的目的.(图1)

\

图1

但这个有个小问题,就是当用户设的 DNS 地址不对时,比如现在很多人喜欢使用 google 的 DNS .时会出现什么样的问题啦?

我们看下面的图片(图2),就会知道.

当使用了错误的 Local DNS 后,用户的定位就不准了.这样会解析到离自己很远的服务器,比如,我使用了 google 的 8.8.8.8 的地址的 Local DNS.这时智能 DNS 只能得到 8.8.8.8 .然后智能 DNS 一查这个地址,是美国.就给解析到国外,我这画的是解析到 hk.www.php-oa.com.

在  Local DNS 地址不准时,解析基本都是不正常的.这些用户的响应和打开就非常慢.

所以在这可以看出 DNS 方式用户位置判断准确率大于85%,HTTP 方式准确率为 99% 以上

\

图2

解决方法,使用 IP 定位.

什么是 IP 定位,见下面的图.图实在不怎么样…不好意思,随手搞了一下.

当我们打开一个地址时,如下,使用了错误的 Local DNS ,但这些 Local DNS 查的智能 DNS 怎么样只会给出少量的地址,比如南方和北方都只有一个,解析的地址这些不会根着地区变化.

解析到的服务器,其实不是真实的服务器,只是一个 IP 调度器.这时客户端就会试着连接这个调度器,但调度器不吐文件,只会吐出一个 302 的响应,转到别的服务器(真实的最近的服务器).

因为这些用户真实的请求出来到调度器上,不在是 Local DNS 的 IP ,是用户实际的 IP ,这些可以在调度器上在查 IP 的来源.这些就会非常准.

然后在使用 302 定位.更加高级可以使用 tcp 迁移技术

\

 在这个时候调度器可以做得非常强大,象大脑一样,多少量,多少请求,有多少热点,请求了多少文件.

使用上面的技术进行用户定位,优点很明显,定位非常非常精准,可以非常快和高效的定位到合适的资源.但不好的一点也很明显,需多进行一次 302 跳转,处理时间变长了一点点,所以非常合适视频网站之类来使用.

显而易见,智能GSLB并不能很好的解决用户定位问题,但够简单。而用户IP定位可以较好的解决,但并不一定适合高访问量的页面请求,因为调度器可能成为瓶颈或者302跳转增加了DNS的时间,当然302可以设置缓存过期时间。

原网址:http://www.5iops.com/html/2012/network_0709/174.html

关于local DNS,国内开放的LDNS很少(普通获取方法与获取http代理类似,都是到一些公布LDNS服务器或公布http代理的网站去爬去数据)。一些公司有自己的DNS,不会开放

http://wenku.baidu.com/link?url=GGK047_bzMJlBtXbCCvySBKZmy5UlS1YT480m0UPNneyszmEd-jvOvI-jMTDF9HijNMhgVCk3u2ZyNMRvdUMjibb0-p3wqO3MKLImVLBW7O&qq-pf-to=pcqq.c2c  该网址列出一些免费的可用的DNS,

如Google DNS:8.8.8.8

几个常用的几个 dns 服务器地址和国外免费 dns 列表

1.Opendns opendns 的速度不快但也不算慢,推荐使用 /208.67.222.222/ /208.67.222.220/ /208.67.220.220/ /208.67.220.222/

2.Google dns 大名鼎鼎的 Google dns 是最好记的, 以前速度很快, 可是最近国内使用的话, 可能有时候会慢, 一般推荐。 /8.8.8.8/ /8.8.4.4/

3.v2ex dns V2ex dns 属于 v2ex 社区的测试服务,跟据其介绍,最大的优点就是 app store 加速和智能纠错。但是对 我来说,最大的优点就是使用 v2ex dns 可以访问很多在国内无法访问的网站,好像是可以防止 dns 污染, 而 opendns 和 Google dns 是无法防止 dns 污染的。 v2ex 缺点也很明显,因为还在测试,有时候不太稳定。速度也不太理想。 /178.79.131.110/ /106.187.34.91/

4.114dns 最近又发现一个提供免费 dns 解析网站,114dns 也宣称安全可靠,不会有劫持,应为在国内,速度应该比 Google 和 opendns 快。

114dns 的地址是 114.114.114.114

很多文章还提到使用 opendns 和 Google dns 可以防止 dns 解析错误,其实是不行的。 大家可搜索 OpenDNS 月光博客:OpenDNS 不能解决 DNS 解析错误 这篇文章

我自己现在使用的就是: 178.79.131.110 208.67.220.220 8.8.8.8 202.96.134.133 (v2ex) (opendns) (Google) (深圳电信)

国内外 dns 列表 港澳台 DNS 服务器地址 

资料来源 tenacy

香港: 205.252.144.228 202.181.202.140 澳门: 202.175.3.8 台湾: 168.95.192.1

国外 DNS 服务器地址

 美国: 208.67.222.222 165.87.13.129 205.171.3.65 198.41.0.4 198.32.64.12 192.203.230.10 192.112.36.4 192.58.128.30 193.0.14.129 128.8.10.90 208.96.10.221 205.171.3.65 165.87.13.129 加拿大: 209.166.160.36 英国: 193.0.14.129 日本 202.12.27.33 韩国: 164.124.101.31 168.126.63.60 新西兰: 202.27.184.3 203.248.240.31 168.126.63.61 202.216.228.18 209.166.160.132 208.67.220.220 165.87.201.244 205.171.2.65 198.41.0.4 192.33.4.12 192.5.5.241 192.36.148.17 192.9.9.3 128.9.0.107 66.33.206.206. 66.33.216.216 205.171.2.65 165.87.201.244 168.95.1.1 202.175.3.3 208.151.69.65 202.181.224.2 资料来源 tenacy 泰国: 209.166.160.132 202.44.8.2 印度: 202.138.103.100

国内各省市 DNS 服务器地址 北京: 202.96.199.133 202.106.0.20 202.97.16.195 深圳: 202.96.134.133 广州: 61.144.56.100 广东: 202.96.128.86 上海: 202.96.199.132 202.96.209.5 天津: 202.99.96.68 广西: 202.96.128.68 202.103.225.68 河南: 202.102.227.68 202.102.224.68 河北: 202.99.160.68 福建: 202.101.98.54 202.101.98.55 202.102.245.12 202.103.224.68 202.99.104.68 202.96.199.133 202.96.209.133 202.96.128.143 61.144.56.101 202.96.154.15 202.96.0.133 202.106.148.1 202.138.96.2 202.138.96.2 202.44.8.34 资料来源 tenacy 厦门: 202.101.103.55 湖南: 202.103.0.68 202.103.96.112 湖北: 202.103.0.68 202.103.24.68 江苏: 202.102.15.162 202.102.13.141 浙江: 202.96.102.3 202.96.104.18 陕西: 202.100.13.11 202.100.4.15 山东: 202.102.154.3 202.102.128.68 山西: 202.99.192.68 四川: 202.98.96.68 重庆: 61.128.128.68 成都: 202.98.96.68 辽宁: 202.98.0.68 202.96.75.64 202.96.86.18 202.96.75.68 202.96.69.38 202.96.86.24 202.98.96.69 61.139.2.69 202.99.198.6 202.102.152.3 202.102.134.68 202.100.4.16 202.100.0.68 202.96.96.68 202.102.29.3 202.102.24.35 202.103.0.117 202.103.96.68 202.101.103.54 资料来源 tenacy 安徽: 202.102.192.68 10.89.64.5 吉林: 202.98.5.68 202.98.14.19 江西: 202.101.224.68 202.101.240.36 新疆: 61.128.97.74 贵州: 202.98.192.68 云南: 202.98.96.68 黑龙江: 202.97.229.133 219.150.32.132 海南: 202.100.192.68 宁夏: 202.100.0.68 甘肃: 202.100.72.13 内蒙古: 202.99.224.68 青海: 202.100.128.68 202.100.96.68 202.100.199.8 202.97.224.68 202.98.160.68 10.157.2.15 61.128.97.73 202.109.129.2 202.98.14.18 202.102.199.68 最后:如果想获知 tenacy 最新地址,请访问

http://www.trycl.info/。 

302 重定向和网址劫持(URL hijacking)
 
302 暂时性转移(Temporarily Moved ) 暂时重定向(temporary redirect)
从网址A 做一个302 重定向到网址B 时,主机服务器的隐含意思是网址A 随时有可能改主意,重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下,当收到302 重定向时,一般只要去抓取目标网址就可以了,也就是说网址B。如果搜索引擎在遇到302 转向时,百分之百的都抓取目标网址B 的话,就不用担心网址URL 劫持了。问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。比如说,有的时候A 网址很短,但是它做了一个302 重定向到B 网址,而B 网址是一个很长的乱七八糟的URL 网址,甚至还有可能包含一些问号之类的参数。很自然的,A 网址更加用户友好,而B 网址既难看,又不用户友好。这时Google 很有可能会仍然显示网址A。由于搜索引擎排名算法只是程序而不是人,在遇到302 重定向的时候,并不能像人一样的去准确判定哪一个网址更适当,这就造成了网址URL 劫持的可能性。也就是说,一个不道德的人在他自己的网址A 做一个302 重定向到你的网址B,出于某种原因, Google 搜索结果所显示的仍然是网址A,但是所用的网页内容却是你的网址B 上的内容,这种情况就叫做网址URL 劫持。你辛辛苦苦所写的内容就这样被别人偷走了。302 重定向所造成的网址URL 劫持现象,已经存在一段时间了。不过到目前为止,似乎也没有什么更好的解决方法。在正在进行的谷歌大爸爸数据中心转换中,302 重定向问题也是要被解决的目标之一。从一些搜索结果来看,网址劫持现象有所改善,但是并没有完全解决。
 
302重定向是暂时的重定向,搜索引擎可能会抓取新的内容而保存旧的网址。由于效劳器前往302代码,搜索引擎以为新的网址只是暂时的。
301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址。
 
302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。因为302重定向经常被用于做url劫持,黑帽seo技术中,而且百度在处理302重定向技术还不成熟,经常将它纳入到黑帽seo的范畴中,而google对这方面识别处理就完善了许多。所以302重定向在现阶段的搜索引擎技术中,还是容易导致网站降权的,尽量不用。但从seo、网站优化方面来说是弊大于利。