关于java:公司架构师常常提起的DNS负载均衡是个什么鬼

3次阅读

共计 1973 个字符,预计需要花费 5 分钟才能阅读完成。

当网站的访问量大了就会思考负载平衡,这也是每一个架构师的基本功了,其根本位置就相当于相声里的说学逗唱,活好不好就看这个了 :)

传统的负载平衡思路是单点的,不论你是硬件的还是软件的根本都是这样的原理,如下图所示:

对于个别的需要来说,这样的架构根本就能够解决问题了,而且保护起来也绝对简略,大多数公司也都是这么干的。

传统思路的局限性

就如同上图所示,传统思路也存在非常明显的局限性。

也就是说,网站的响应速度很大水平上局限于负载平衡节点的能力,而且一旦负载平衡节点自身挂掉的话,整个网站就齐全瘫痪了。

后端的服务能够程度扩大,然而对于单个节点来说就算你再增大机器的配置也是有极限的,而且这也不合乎互联网技术的倒退法则。

CDN 是怎么做的

作为互联网上承载大部分流量的一大基础设施,CDN 对负载分流的解决思路很具备启发性,如下图:

从上图能够看到,用户的拜访被分流了,所有的申请不再是汇集到一个节点上,而是被分担在了各个适合的节点上。

这样即便存在单点故障,也仅仅只会影响到一部分用户,况且咱们还能够应用其余伎俩做故障转移。

同样的做法也能够借鉴到传统的 BS 架构中,咱们也能够把用户的申请间接分流到不同的服务器上,而不用通过一个对立的节点直达。

这个分流是通过什么做到的呢?

答案就是:DNS

你晓得 DNS 是怎么工作的吗?

大部分人可能天天都用着 DNS 却不晓得它的基本原理,你可能晓得咱们拜访互联网须要查问 dns 服务器,就是上面的这个玩意

咱们只须要问它域名所对应的 ip 地址就行了。

但事件真的这么简略吗?它是怎么晓得这个域名所对应的 ip 地址呢?

其实 dns 零碎是一个典型的树状架构,上图所示的 dns 服务器其实应该叫 dns 缓存查问服务器,它是为了加重互联网上 dns 查问的负载所设计的。

如果你的申请没有命中缓存,那么这个缓存服务器就会本人进行一次规范查问,而后再把后果缓存起来,简略来说就是从根服务器开始一级一级的问。

咱们以前常常谈到根服务器的重要性其实就体现在这里了,它保留了对所有域名的起始解释权

神奇的解释权机制(SOA)

下面讲到根服务器领有所有域名的起始解释权,然而如果你去问根服务器它是不会间接通知你最终答案的。

因为如果它要存储所有的记录,那它也太累了,这个负载和开销是惊人的。

那它会通知你什么呢?它会通知你应该去问谁,也就是它受权下一级服务器来解答你的问题。

咱们来看上面的拟人化过程:

1. 我: root, root 通知我,segmentfault.com 怎么走?

2.root: 呵呵,你能够去问.com 的 dns 服务器,地址是 xxxxxx

3. 我: .com, .com 通知我,segmentfault.com 怎么走?

4..com: 呵呵,你能够去问 segmentfault.com 的 dns 服务器(dnspod 之类的),地址是 xxxxxx

5. 我: dnspod, dnspod 通知我,segmentfault.com 怎么走?

6.dnspod: 拿着 xxxxxx,走你

DNS 负载平衡的基本原理

理解了上述过程,咱们失去两个根本论断

1.dns 零碎自身是一个分布式的网络,它是绝对牢靠的,起码比你网站自身牢靠的多

2.dns 的最终解释是能够受咱们本人管制的

有了这两条论断,剩下的事件就简略了,咱们只须要在最终解释的查问后果上做文章就能够了。

简略来说,就是将你的所有服务器地址,依照本人需要制订的频次,返回给用户。

以 github.com 为例,咱们首先获取它的 SOA 服务器(因为 dns 缓存查问服务器会缓存后果,如果你间接去查问域名,会每次返回一样的后果),.com 的 dns 域名服务器也是 13 台,它们是 [a-m].gtld-servers.net,咱们轻易选一台来找找 github.com 的 SOA. 如下图:

OK,咱们获取了四个 SOA 服务器 ns[1-4].p16.dynect.net,再轻易选一个来问问 github.com 对应的记录吧,顺便试几次看看最终的 ip 地址会不会变动

咱们这里查问了两次,留神 ANSWER SECTION 局部返回了两个后果,一次是 192.30.252.129,一次是 192.30.252.128。

这就是利用 dns 实现了负载平衡,你的最终拜访会达到不同的 ip 地址。

有哪些 DNS 服务商反对负载平衡呢?

这是一种比拟高级的服务,个别域名注册商的 dns 服务器不会反对,目前我已知反对它的服务商有:

1.AWS Route 53
2.NSONE
3.Dyn
4.dnspod

其中 1 和 4 是咱们曾经在应用的,成果比拟现实。

总结

其实 DNS 能够玩的花色远不止这些,还能够做故障转移,也能够按地区解析等等。

域名从互联网诞生之初就开始存在了,然而对它的钻研以及衍生进去的应用办法才刚刚开始挖掘,随着大家对互联网利用的晋升,这类技术必定会越来越多。

作者:默默漠然
起源:https://www.cnblogs.com/liang…

正文完
 0