利用dns解析来实现网站的负载均衡

news/2024/5/14 20:19:38/文章来源:https://blog.csdn.net/weixin_33948416/article/details/89642635

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

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

load-balance

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

传统思路的局限性

就如同上图所示,传统思路也存在非常明显的局限性。也就是网站的响应速度很大程度上局限于负载均衡节点的能力,而且一旦负载均衡节点本身挂掉的话,整个网站就完全瘫痪了。后端的服务可以水平扩展,但是对于单个节点来说就算你再增大机器的配置也是有极限的,而且这也不符合互联网技术的发展规律。

CDN是怎么做的

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

图片描述

从上图可以看到,用户的访问被分流了,所有的请求不再是聚集到一个节点上,而是被分担在了各个合适的节点上,这样即使存在单点故障,也仅仅只会影响到一部分用户,况且我们还可以使用其他手段做故障转移。

同样的做法也可以借鉴到传统的BS架构中,我们也可以把用户的请求直接分流到不同的服务器上,而不必经过一个统一的节点中转。这个分流是通过什么做到的呢?答案就是 DNS!

你知道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负载均衡的基本原理

了解了上述过程,我们得到两个基本结论

  1. dns系统本身是一个分布式的网络,它是相对可靠的,起码比你网站本身可靠的多
  2. dns的最终解释是可以受我们自己控制的

有了这两条结论,剩下的事情就简单了,我们只需要在最终解释的查询结果上做文章就可以了。简单来说,就是将你的所有服务器地址,按照自己需求制定的频次,返回给用户。

github.com为例,我们首先获取它的SOA服务器(因为dns缓存查询服务器会缓存结果,如果你直接去查询域名,会每次返回一样的结果),.com的dns域名服务器也是13台,它们是[a-m].gtld-servers.net,我们随便选一台来找找github.com的SOA

SOA

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

A Record

我们这里查询了两次,注意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可以玩的花样远不止这些,还可以做故障转移,也可以按地区解析等等。域名从互联网诞生之初就开始存在了,但是对它的研究以及衍生出来的使用方法才刚刚开始发掘,随着大家对互联网利用的提升,这类技术肯定会越来越多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_826731.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】我们的电子商务网站—Webtogs的发展历程

过去的11个月里,我和我的团队在一个新的电子商务网站webtogs.co.uk上销售户外运动和探险装备。06年9月份成为了我们新的开始。 一切从零开始 一个网站设计的好坏就看它是不是很好地将网上的产品展示变成实际的交易,我们所做的每件事都要达到最好的目标。…

阿里云普惠建站轻量应用服务器/ ECS 云服务器/虚拟主机如何选择?

阿里云普惠建站计划是阿里云面向刚接触云服务器的朋友们准备的,适合新手建站使用的建站项目。之前魏艾斯博客发过阿里云普惠建站主机低至 14 元/月 轻量应用服务器 1 核/1G/3M 带宽/40G SSD/500G 流量包/350 元/年的文章,简单介绍了一下这个活动&#xf…

阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!

阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看! Ethan_HangZhou | https://www.jianshu.com/p/2604e53a7f6a 第一步:如何以最低价格快速买到阿里云服务器?1 1.1 如何便宜购买云服务器&#xff1f…

4.Windows Server2012 R2里面部署 MVC 的网站

网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新:http://dnt.dkill.net 添加角色 基本功能 默认即可 装一下iis 选4.5和iis核心 其他的下面继续选 安全肯定全要的,常见HTTP和应用程序开…

60个优秀的免费网站模板下载(下篇)

这篇文章收集了60款各式各样的高质量网站模板,您可以免费下载使用。当你需要在短时间内制作出网站的时候,网站模板就非常有用了,感谢那些优秀的设计师分享他们的劳动成果,让更多的人可以使用他们的创意设计,希望这些网…

新云CMS网站内容管理系统生成HTML静态化教程

网站静态化一直是SEO重点关注对象。静态化有好有坏,最大的好处是收录迅速,坏处是纯静态的HTML页面难以维护,特别是对于大型的网站。本文将介绍如何将新云CMS网站管理系统静态化。 本文以新云CMS 3.0为例。 1.进入后台控制面板,找到…

构化数据让 SEO 更上一层楼

继上一篇使用 SSR 来优化搜索引擎之后,为了进一步提高自己的网(zhi)站(ming)排(du)名,就打算进一步优化 SEO。之前有听朋友提到结构化数据对 SEO 有帮助,便去了解了一下&…

分享最棒的免费PSD资源网站

为什么80%的码农都做不了架构师?>>> 日期:2012-9-23 来源:GBin1.com 是不是你也同样有过这样的经历,需要免费PSD的时候找不到,不需要的时候又常常能够看到,今天我们将要分享一堆免费下载PSD文…

学习SEO更像是一种参悟

2019独角兽企业重金招聘Python工程师标准>>> 济宁辉腾网站建设www.0537web.net 供稿 不少刚接触SEO的新手都会问,要怎样才能学好SEO呢?在这之前,你得确定你的目的只是单纯的想赚钱还是想从事SEO这个行业。这两者区别很大。赚钱的…

大型网站后台架构的Web Server与缓存

1.1 Web server Web server 用来解析HTTP协议。当web服务器接收到一个HTTP请求时,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,web服务器可 以响应一个静态页面或者图片。进行页面跳转,或者把动态响应的产生委托给…

使用Java开发高性能网站需要关注的那些事儿2

近期各家IT媒体举办的业内技术大会让很多网站都在披露自己的技术内幕与同行们分享,大到facebook,百度,小到刚起步的网站。facebook,百度之类的大型网站采用的技术和超凡的处理能力的确给人耳目一新的感觉,但并不是每个…

java处理高并发高负载类网站的优化方法

2019独角兽企业重金招聘Python工程师标准>>> 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一…

9月第1周国内社区类网站/频道:西安论坛上升5位

09月11日报道:根据国际统计机构Alexa公布的最新数据显示,9月第1周(2013-09-02至2013-09-08),我国社区类网站/频道排行榜中,天涯虚拟社区以3060的周均用户覆盖数居榜首;排行第二的是凯迪网络&…

IIS网站发布若干问题

1.Win7 64位 IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项 未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项 解决方案: 1、需要在IIS里设置,启用32位应用程序 我用的是iis7 把启用32位应用程序的false改为true 2.…

认识爬虫:提取网站 cookie 信息,并使用 cookie 信息实现登录

为什么要使用 cookie 信息来进行爬虫呢?做后端的朋友们都知道,一般情况下,在服务器上发布接口都是要设置身份信息验证,验证的方式就是通过 cookie 信息中包含的身份认证来进行验证。在身份验证通过之后,才能获取到响应…

初学者福利:分享五个免费的 Python 学习网站,抓紧收藏吧

最近有好多人说刚开始学习,有哪些免费的学习网站可以自学一下。于是,趁着周末的时间在各大网站上面梳理了一下找出了六个比较好的学习网站,并且都是免费的,比较适合初学者了解一些基础语法、解决BUG问题。如果是大佬的话了解一下就…

Python爬虫建站入门手记——从零开始建立采集站点(三:采集入库)

上回,我已经大概把爬虫写出来了。 我写了一个内容爬虫,一个爬取tag里面内容链接的爬虫 其实还差一个,就是收集一共有哪些tag的爬虫。但是这里先不说这个问题,因为我上次忘了 这次又不想弄。。 还有个原因:如果实际采集…

怎样自己创建一个个人网站,怎样将自己写的网站发布到外网?

注**:本教程是在window平台上的展示: 以下只是一个简单的html网页,如果想了解整体系统功能(包括登录,注册,数据库,后台等功能)可以加我微信号yizheng369咨询哈 华丽分割线 注意&…

生成微信二维码,微信扫码登录网站

微信扫码登录网站 源码地址1(这个是nodejs项目实现):https://gitee.com/618859/wx_login_qrcode 源码地址2(这个是前端vue3项目中实现微信扫码登录源码): https://gitee.com/618859/wx_login_qrcode_vue 源码地址3(这个是前端vue2项目中实现微信扫码登录…

网站流量统计系统 phpMyVisites

phpMyVisites是一个网站流量统计系统,它能够提供非常详细的统计报告和高级图形报表。phpMyVisites不是一个Apache log分析工具,它建有自己的log。它的特点包括: 安装部署:提供可视化的安装向导,并且使用简单只要把一段…