前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全球智能DNS解析实践

全球智能DNS解析实践

作者头像
心平气和
发布2020-09-11 11:29:45
3.1K0
发布2020-09-11 11:29:45
举报

一、什么是智能DNS解析

以下是百度的解释:

DNS策略解析最基本的功能是可以智能的判断访问您网站的用户,然后根据不同的访问者把您的域名分别解析成不同的IP地址。如访问者是网通用户,DNS策略解析服务器会把你的域名对应的网通IP地址解析给这个访问者。如访问者是电信用户,DNS策略解析服务器会把您域名对应的电信IP地址解析给这个访问者。

举个例子,我们有个域名:ab.com,服务器部署在2个机房:中国、美国;当前访问用户的IP为中国,DNS解析会返回一个中国的IP;换之是海外用户,DNS会返回海外地址,这样保证每次用户都可以就近访问,加快访问速度。

二、为什么要使用智能DNS解析

智能DNS解析使用条件如下:

1、对外统一域名访问

即所有用户访问的都是统一域名

2、用户分散在多地域,并且网络差异很大

可能是中国南、北,也可能是中国、海外。

这样在使用智能DNS解析后,用户可以就近访问,明显提高访问速度。

三、智能DNS解析的范围

既然是DNS,就得和域名有关,那智能DNS需要将哪些域名做智能解析呢?

1、前端页面

主要指前端页面,即用户直接在浏览器里输入的地址,但不包括里面的js/css,图片内容,因为这些可以通过CDN的方式处理。

2、后端接口

因为前端页面做了DNS解析,因此后端接口至少和前端页面的主域保持一致,因为涉及到登录状态的检测,具体来说就是cookie的传递,因为http是无状态的,所以通过cookie来保存状态。

四、具体实践

下面我们以一个具体的案例来分析智能DNS解析来如何实现。

设想我们网站用户主要是中国、美国用户,因此服务器部署在中国、美国机房,域名为ab.com。

首先我们来分析具体有哪些需求:

1、访问链路

A、中国用户访问中国服务

B、中国用户访问美国服务

因为中国用户也可能需要访问海外的站点

C、外国用户访问外国服务

D、外国用户访问中国服务

同上面的B一样

2、url规划

中国和海外的页面都是同一域名,那最终区别也只能通过域名了,一般是不同的地区加不同的前缀,像我们这个案例中,可以这样规划:

ab.com/cn

ab.com/us

如果web服务器使用的是nginx,在中国机房配一个ab.com的server,再配2个location,大概如下:

代码语言:javascript
复制
location /us{
   proxy_pass {美国服务器集群地址}
}

location /cn{
   proxy_pass {中国服务器集群地址}
}

这里要注意集群地址配置,现在大多数公司前面有个大的负载均衡器,负载均衡器的IP可能是不固定,如果是这种情况,则需要一种机制能够在负载均衡器更改IP的情况下能自动更新集群IP,不然可能出现无法访问的情况,我们线上就发生过样的问题。

海外机房也可以参考中国机房配置。

3、自动跳转

如果用户每次都要输入ab.com/us或ab.com/cn,体验就差别差,所以我们需要根据用户的IP自动跳转到相应的机房中。

如果使用的nginx服务器,可以使用GEOIP模块获取用户IP所在国家,然后写上lua脚本做相应的跳转。

五、踩过的坑

1、URL不标准化

标准化如果没有做到,做起来会很麻烦;

具体来说,如果美国的部分页面在中国没有,或者中国某个页面在美国服务器上没有,则会出现有的URL需要跳,有的不需要,则要在代码中做大量的特别处理;

另外就是要考虑爬虫之类的请求,这类请求不管当前用户来自哪里,都不应该做跳转。

2、URL规范很重要

如果仅仅是几个机房之间跳转的需求还好,实际情况是有的公司可能有多商城的需求,两者混在一起,URL的规范就很重要了,建议以机房为前缀,机房后再加上商城的标识。

如 ab.com/global/us,ab.com/globl/uk

3、不要和现有业务逻辑耦合在一起

这块的代码一般是在nginx上用lua实现的,如果在nginx上还有其它相关代码,建议两者分开,不然调试、维护起来会很麻烦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档