[转帖]公司架构师常常提起的DNS负载均衡是个什么鬼?

公司,架构师,常常,提起,dns,负载,均衡,什么 · 浏览次数 : 0

小编点评

## DNS基于微服务的负载均衡详解 DNS基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。 **DNS的工作原理** 1. 用户通过域名访问互联网,例如访问 github.com, DNS会将请求转发给 DNS 服务器。 2. DNS 服务器会将请求传递给根服务器。 3. 根服务器是 DNS 缓存查询服务器,它保留了对所有域名的起始解释权,但它不会直接告诉你最终答案。 4. 为了解决这个问题,它授权下一级服务器来解答你的问题。 5. 下级服务器会根据 DNS 服务器提供的 IP 地址,从根服务器中查询域名对应的 IP 地址。 6. 用户最终访问到指定的 IP 地址上,并从 dort 获取数据。 **支持负载均衡的DNS服务商** 目前,支持负载均衡的 DNS 服务商包括: * AWS Route 53NSONEDyndnspod * 1和4是我们在使用过的 DNS 服务商,效果很好 **总结** DNS 可以玩的花样远不止这些,还可以做故障转移,也可以按地区解析等等。

正文

https://cloud.tencent.com/developer/article/2190719?areaSource=105001.2&traceId=7RuArY2Tm1MQWwQaMnx-Q
  • 传统思路的局限性
  • CDN是怎么做的
  • 你知道DNS是怎么工作的吗?
  • 神奇的解释权机制(SOA)
  • DNS负载均衡的基本原理
  • 有哪些DNS服务商支持负载均衡呢?
  • 总结

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

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

对于一般的需求来说,这样的架构基本就可以解决问题了,而且维护起来也相对简单,大多数公司也都是这么干的。

传统思路的局限性

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

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

后端的服务可以水平扩展,但是对于单个节点来说就算你再增大机器的配置也是有极限的,而且这也不符合互联网技术的发展规律。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

CDN是怎么做的

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

从上图可以看到,用户的访问被分流了,所有的请求不再是聚集到一个节点上,而是被分担在了各个合适的节点上。

这样即使存在单点故障,也仅仅只会影响到一部分用户,况且我们还可以使用其他手段做故障转移。

同样的做法也可以借鉴到传统的 BS 架构中,我们也可以把用户的请求直接分流到不同的服务器上,而不必经过一个统一的节点中转。

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

答案就是:DNS

基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。 项目地址:https://github.com/YunaiV/onemall

你知道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可以玩的花样远不止这些,还可以做故障转移,也可以按地区解析等等。

域名从互联网诞生之初就开始存在了,但是对它的研究以及衍生出来的使用方法才刚刚开始发掘,随着大家对互联网利用的提升,这类技术肯定会越来越多。

与[转帖]公司架构师常常提起的DNS负载均衡是个什么鬼?相似的内容:

[转帖]公司架构师常常提起的DNS负载均衡是个什么鬼?

https://cloud.tencent.com/developer/article/2190719?areaSource=105001.2&traceId=7RuArY2Tm1MQWwQaMnx-Q 传统思路的局限性 CDN是怎么做的 你知道DNS是怎么工作的吗? 神奇的解释权机制(SOA) D

[转帖]tidb之旅——tidb架构选择

https://zhuanlan.zhihu.com/p/641650168 前言 从4月份开始利用tidb改造了我们公司bi系统。这个过程中,我感觉到了tidb的强大。也打算记录一下整个改造过程。我打算从4个方面来记录这个改造过程。tidb架构选择,dm工具的使用——这两个部分还是tidb6.5.

[转帖]8 年 Redis 运维经验,我踩了哪些坑

https://cloud.tencent.com/developer/article/1986942 Redis 目前绝对算是当前市场的宠儿,大到 BAT,小到初创公司都在使用。一说到 Redis,我们就会想到它的高性能、数据结构丰富、API 功能强大、高可用性以及架构可伸缩等特点。正是这些特点,

[转帖]国产数字芯片厂商详细信息

http://www.ichyang.com/post/36770.html 国产数字芯片厂商详细信息 下面我们将从核心技术、主要产品、目标市场和应用方案等方面对这30家公司逐一展示。 国产芯片 中科龙芯 核心技术:MIPS授权架构的CPU及生态圈、跨指令兼容的二进制翻译技术。 主要产品:面向行业应

[转帖]Arm CPU风起,补齐国产大芯片最后一块拼图 | 甲子光年

https://rmh.pdnews.cn/Pc/ArtInfoApi/article?id=30960014 最近一年,国产CPU火了。 今年6月24日,龙芯中科在科创板挂牌上市,公司主营自研LoongAche架构的CPU,首日涨幅接近50%,市值曾一度超过400亿元。 仅仅49天后的8月12日,

[转帖]Armv9 架构相比 Armv8 有何升级/区别:全面性能提升

https://baijiahao.baidu.com/s?id=1695708603852200216&wfr=spider&for=pc 自 2011 年 10 月 Arm 首次公布 Armv8 架构以来,已经有近 10 年的时间了,这是计算领域相当多变的 10 年,因为指令集架构通过移动领域到

【转帖】数据库篇-MySql架构介绍

https://zhuanlan.zhihu.com/p/147161770 公众号-坚持原创,码字不易。加微信 : touzinv 关注分享,手有余香~ 本篇咱们也来聊聊mysql物理和逻辑架构,还有其组件。MySQL的架构具备灵活性,因为它把不同的存储引擎作为插件。 因此,MySQL的架构和行为

[转帖]数据库篇-MySql架构介绍

https://zhuanlan.zhihu.com/p/147161770 公众号-坚持原创,码字不易。加微信 : touzinv 关注分享,手有余香~ 本篇咱们也来聊聊mysql物理和逻辑架构,还有其组件。MySQL的架构具备灵活性,因为它把不同的存储引擎作为插件。 因此,MySQL的架构和行为

[转帖]后台性能优化实践实战

近年来公司的业务数据量和用户流量都呈现出了非常迅猛的增长趋势,为了解决历史架构设计中的不足,应对诸多因素引发的风险并保证通天塔平台的稳定运行,通天塔后端组专项成立了一个“通天塔后端技术优化组”,号召并鼓励团队每个人积极参与进来,全盘分析和梳理、技术设计和技术Review、形成技术优化需求、排期、自测

[转帖]聊聊我对 GraphQL 的一些认知

https://www.modb.pro/db/139451 作者简介:haohongfan 是 Apache Dubbogo Committer,目前就职于京东,擅长高并发架构设计。公众号 HHFCodeRv 会定期发布原创文章,包括源码分析、业务思考、架构设计等。推荐大家关注 每隔一段时间就能看