之前有写过DNS服务器的工作方式网络之旅 (一),过了一段时间再学习发现了之前没有学到的知识,所以来记录一下.
DNS 的解析流程在上一篇已经写过。这里就不在赘述。
DNS可以做内部负载均衡
如果DNS给所有人解析的都是同一个网址,那么这台服务器(属于这个网址对应的IP)承受的压力就很大,为了缓解压力,可以部署多台服务器。比如 有5台 A、B、C、D、E服务器。这5台服务器上运行的业务是相同的。然后在域名解析的时候,配置策略(比如轮询)这次返回A 的IP,下次返回B的IP。如果A宕机了,就在剩下的4台服务器上轮询。这样就可以实现负载均衡了。
DNS可以做全局负载均衡
全局负载均衡: 西安的用户肯定想访问里西安最近的服务器,上海用户想访问里他们最近的服务器。因为这样访问速度是最快的。
DNS 存在的问题
那么DNS这么强大,它就不会存在问题吗? 肯定不是的。
域名缓存问题
本地浏览器会做一个缓存操作,即当你访问过一次之后,它就会把对应的映射缓存起来 (域名和IP的映射),当你再次访问这个域名的时候,它不会在直接向DNS服务器发送请求,而是先查看缓存中是否有映射。
这样以来就存在了一个问题。想象下面这个场景:
我们刚访问了www.tt.com 的网站,它返回了一个IP。然后tt 这个网站 把IP更换了。这次浏览器还使用缓存中的数据, 你会发现访问不到了。
域名转发问题
如果是 A 运营商的客户,访问自己运营商的 DNS 服务器,如果 A 运营商去权威 DNS
服务器查询的话,权威 DNS 服务器知道你是 A 运营商的,就返回给一个部署在 A 运营商的网站地址,
这样针对相同运营商的访问,速度就会快很多。
但是 A 运营商偷懒,将解析的请求转发给 B 运营商,B 运营商去权威 DNS 服务器查询的话,权威服务
器会误认为,你是 B 运营商的,那就返回给你一个在 B 运营商的网站地址吧,结果客户的每次访问都要
跨运营商,速度就会很慢
域名更新问题
假如 上面 www.tt.com 这个网站想更换域名,但是在DNS服务器解析变更的时候,解析结果在全网生效的周期十分漫长。
解析延迟问题
之前那篇已经说了 DNS的查询过程是递归遍历多个DNS服务器,这会带来一定的时延,或者解析超时。