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

news/2024/5/20 14:21:32/文章来源:https://blog.csdn.net/wjq008/article/details/81570301

参看的地址:https://segmentfault.com/a/1190000002578457

 

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

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

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

传统思路的局限性

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

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

  •  

赞  |   19收藏  |  84

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

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

相关文章

web连接数据库,创建一个网站

期末作业: 用visual studio连接数据库,创建网页 包含功能如图所示: 以下是做出来的效果。。。 老师说界面太丑了。。。辛辛苦苦做的。。。 就到这里吧 若有需要,直接dd我就行啦 如果我能及时看到的话

Django入门笔记(一)_建站基本流程

Django入门笔记(一)_建站基本流程 逻辑总览基本环境虚拟配置命令行创建模型URLconf视图编写模板编写全局settings测试超级用户 逻辑总览 基本环境 # 安装python3# 安装virtualenv pip3 install virtualenv虚拟配置 # 生成激活 # win virtualenv -p pyt…

存图网站

http://imagehosting.biz

Wordress博客网站查看文章时显示进度条

可以在Wordress的插件里面下载 Post Reading Progress 插件 安装完之后,可以在后台的: 设置->读取进度条->中设置 如下图 我们就可以设置进度条相对应的功能

20多个漂亮的使用jQuery交互的网站设计欣赏

jQuery是使用最多的JS库之一,它有很多优点,比如轻量、易用、完善的Ajax、良好的浏览器兼容,以及它有健壮的选择器等。这些优点使得jQuery成为帮助前端开发人员的有力工具。越来越多的大型网站开始使用jQuery及其插件实现其前端交互。 这里&am…

老旧asp.net网站搬家导致的反编译实例1

2020年12月,朋友的海外win2008r2的服务器就要到期了,上面也没几个站了,租服务器就不合算了。3个人合伙买了一个海外的虚拟主机,算下来,平均下来每人每年一百不到。无限流量、无限网站、无限空间,放一些小站…

老旧asp.net网站搬家导致的反编译实例2

https://blog.csdn.net/liufile/article/details/112001740 前面提到了,迁移老破旧asp.net网站出现的兼容性问题,在反编译dll,修补了相应代码,编译的dll出现,新的错误: 未能加载文件或程序集“NVelocity,…

老旧asp.net网站搬家导致的反编译实例3

https://blog.csdn.net/liufile/article/details/112002023 前一篇已经介绍了,如何解决无源代码的老旧asp.net的兼容性或小范围修改问题,但是,对于我调试的网站,又出现新的问题,就是功能有缺失,这可能是反…

CodeIgniter开发实际案例-新闻网站

1、建立数据库 运用Navicat For Mysql工具,创建一个数据库,名称为"news", 并建立如下表(鼠标右键,命令行运行如下sql语句): CREATE TABLE news (id int(11) NOT NULL AUTO_INCREMENT,…

使用github搭建个人网站

使用github搭建个人网站 首先注册一个账号 然后新建一个仓库。点击New repository 名称使用 你的名字.github.io 之后在打开设置Setting 拉到下面有一个git 博客,点击它的选择主题,然后用它的模板创建一个。 创建了以后,就不会…

使用阿里云ecs搭建网站

最近两天在弄自己的服务器,尽管配置是最低的,不过终于算是弄好了,其中许多波折,希望以后有机会弄一下wordpress。 在一开始的时候,就只是熟悉一下过程,所以网站也是很简单的静态网站,估计以后会…

Chrome插件: 网站收藏

在工作中我们会收藏很多网址。以前一直都是用的chrome里面的收藏夹。后面觉得一点都不方便。看一下Chrome插件开发挺容易入手的所以自己写了一个Chrome插件. 基于:Angularjs Bootstrap的. 主界面: 功能描述: 1.Add: 支持添加网址功能: 2.Collect current page: 获…

说一下这两天比较红火的航班追踪网站

这两天一款本来名不见经传的“小众民航好物”,一夜爆红。其实时追踪航班的功能,昨夜吸引30万人齐齐涌入,直接把这小破网站搞得流量爆炸,一度崩溃。 如果你睡得比较早,现在可以再一起看一眼这个名叫Flightradar24的网站…

nginx+mysql8+php8建站

nginxmysql8php8rhel7.6建站(20220111) 1、Nginx安装配置 1.1 安装前工作 ​ 首先更新系统软件源,使用以下命令更新系统 - [rootswordman ~]# yum update有关两个命令的一点解释: yum -y update - 升级所有包,改变…

织梦模板:响应式手机电子配件类网站织梦模板

模板名称: 响应式手机电子配件类网站织梦模板(自适应设备) 模板介绍: 织梦最新内核开发的模板,该模板属于HTML5响应式、手机配件、电子配件、手机套类企业使用,一 款适用性很强的模板,基本可以适合各行业的企业网站&am…

dedecms模板自带的网站地图如何优化?

dedecms模板自带的网站地图如何优化?使用织梦CMS模板做网站的人应该都知道,在它的robots.txt是屏蔽掉了data目录的,不巧的是dedecms默认的网站地图是在data下的,为了让蜘蛛更好的爬行,有必要将dedecms生成的网站地图放…

响应式摄影类企业网站织梦模板(自适应设备)

模板介绍:织梦最新内核开发的模板,该模板属于HTML5响应式、户外摄影、婚纱摄影设计类网站企业使用,一款适用性很强的模板,基本可以适合各行业的企业网站!响应式自适应各种移动设备,同一个后台,数…

汽车租赁服务类网站织梦模板(带手机移动端) 2017-07-17 17:15 模板名称:汽车租赁服务类网站织梦模板(带手机移动端)

模板名称:汽车租赁服务类网站织梦模板(带手机移动端) 模板介绍: 1、织梦最新内核开发的模板,该模板属于企业通用类、汽车租赁服务、汽车4S店类企业都可使用, 2、这款模板使用范围极广,不仅仅局限于一类型的企业&#x…

如何在阿里云虚拟主机上绑定多个域名创建多个网站

其实,很多时候我们购买的虚拟主机在建立一个站点之后会剩余很多空间,会很浪费。其实一台虚拟主机也可以拥有多个独立的网站、独立的域名。今天就跟大家分享一下如何在在阿里云虚拟主机上绑定多个域名创建多个网站。 方法如下: 第一步、在虚拟…

织梦网站地图生成插件下载

网站地图不但可以让浏览用户一览网站框架,对于搜索引擎对网站的收录和抓取同样起着相当重要的作用。今天跟大家分享一款好用的织梦织梦网站地图生成插件。 用过织梦的朋友应当都知道,织梦自带的网站地图只包含了顶级栏目的链接,并没有网站二级…