DNS
在了解DNS之前,我们先来了解下域名。我们在访问网站的时候,都是通过域名来进行访问的,那么域名是怎么找到我们访问的网站的呢?
其实域名是被一个叫做ICANN的组织进行管理的,我们常见的域名结尾部分,如.com、.cn、.net、.org…等。类似这种就叫做顶级域名,由于顶级域名非常的多,ICANN不好管理这么多的顶级域名,于是每个顶级域名都找一个托管商,让托管商来管理。而ICANN则管理这些托管商,ICANN也被称为根域名节点。
所有域名查询都要先查询根域名,只有根域名才知道这些顶级域名都是由谁在管理。而顶级域名托管商下面又分出来二级域名(abc.com)、三级域名(abc.def.com)等多级域名。这样一层层的来查询,从而找到域名对应的IP地址。
DNS服务器查找域名流程,例如访问www.baidu.com:
- 电脑先从本地hosts文件中查找。
- 如果本地hosts文件中没有,就访问网络运营商的DNS服务器(例如电信、联通等),如果DNS服务器中有缓存,那么就直接将缓存的IP返回。
- 如果DNS中没有域名对应IP的缓存,就询问ICANN,ICANN返回.com顶级域名服务器的IP。
- DNS服务器询问.com顶级域名服务器,返回权威域名服务器地址。
- DNS服务器访问权威服务器,得到baidu.com域名对应的IP。
- 浏览器使用IP直接访问百度服务器。
整个流程都是通过DNS服务器来完成的。
CDN
内容分发网络(Content Delivery Network,简称CDN),由分布在不同区域的边缘节点服务器群组成的分布式网络。
CDN是由运营商在各地部署的多个CDN服务器组成,当使用CDN加速后,CDN会缓存指定网站的部分内容。由于CDN在各地都有服务器,当我们访问网站时,CDN通过负载均衡算法得到离我们最近的CDN服务器IP,这样我们就可以访问最近这台CDN服务器上的缓存记录,如果没有要访问的内容,这时候才去访问真正的网站服务器。
要使用CDN,必须在运营商上对目标域名进行CDN配置,一般运营商会分配一个CNAME值,我们将域名添加一条CNAME记录指向运营商分配的CNAME值。
CDN流程,例如访问www.baidu.com:
- 电脑先从本地hosts文件中查找。
- 如果本地hosts文件中没有,就访问网络运营商的DNS服务器(例如电信、联通等)。
- 本地DNS服务器通过CDN专用DNS服务器得到CDN负载均衡服务器的IP。
- 本地DNS访问CDN负载均衡服务器,CDN负载均衡服务器返回就近CDN服务器IP。
- 浏览器使用CDN服务器IP直接访问CDN服务器。
DNS负载均衡
利用域名解析实现负载均衡,在DNS服务器,配置多个A记录,这些A记录对应的服务器构成集群。一般网站部分使用DNS解析,作为第一级负载均衡。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TI7uHZjG-1629258741706)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210817192644588.png)]
-
优点:
负载均衡工作交给DNS服务器处理,支持基于地址的域名解析,解析成距离用户最近的服务器地址,可以加快访问速度。
-
缺点:
DNS负载均衡的控制权在域名商那里,无法对其做更多的改善和扩展。不能反映服务器当前运行状态,支持的算法少,不能区分服务器的差异。