• DNS


    DNS

        DNS(Domain Name System,域名系统), DNS通过域名和IP地址相互映射的一个分布式数据库,使易记的域名替代了枯燥的IP地址。在因特网中向主机提供域名解析服务的机器即为DNS服务器,端口号为53。

    要掌握的要点:

    • DNS 是网络世界的地址簿,可以通过域名查地址,因为域名服务器是按照树状结构组织的,因而域名查找是使用递归的方法,并通过缓存的方式增强性能
    • 在域名和 IP 的映射过程中,给了应用基于域名做负载均衡的机会,可以是简单的负载均衡,也可以根据地址和运营商做全局的负载均衡

    DNS服务器

    DNS服务器应对大量的访问挑战,因此它是高可用、高并发以及分布式的,它呈树状的结构:

    • 根DNS服务器 :返回顶级域 DNS 服务器的 IP 地址
    • 顶级域DNS服务器:返回权威 DNS 服务器的 IP 地址
    • 权威DNS服务器 :返回相应主机的 IP 地址

    DNS解析流程

    负载均衡

    站在客户端角度,这是一次DNS 递归查询过程。因为本地 DNS 全权为它效劳,它只要坐等结果即可。在这个过程中,DNS 除了可以通过名称映射为 IP 地址,它还可以做另外一件事,就是负载均衡。

    内部负载均衡

      一个应用要访问数据库,在这个应用里面应该配置这个数据库的 IP 地址,还是应该配置这个数据库的域名呢?显然应该配置域名,因为一旦这个数据库,因为某种原因,换到了另外一台机器上,而如果有多个应用都配置了这台数据库的话,一换 IP 地址,就需要将这些应用全部修改一遍。但是如果配置了域名,则只要在 DNS 服务器里,将域名映射为新的 IP 地址,这个工作就完成了,大大简化了运维。

      在这个基础上,我们可以再进一步。例如,某个应用要访问另外一个应用,如果配置另外一个应用的 IP 地址,那么这个访问就是一对一的。但是当被访问的应用撑不住的时候,我们其实可以部署多个。但是,访问它的应用,如何在多个之间进行负载均衡?只要配置成为域名就可以了。在域名解析的时候,我们只要配置策略,这次返回第一个 IP,下次返回第二个 IP,就可以实现负载均衡了。

    全局负载均衡

      为了保证我们的应用高可用,往往会部署在多个机房,每个地方都会有自己的 IP 地址。当用户访问某个域名的时候,这个 IP 地址可以轮询访问多个数据中心。如果一个数据中心因为某种原因挂了,只要在 DNS 服务器里面,将这个数据中心对应的 IP 地址删除,就可以实现一定的高可用。 另外,我们肯定希望北京的用户访问北京的数据中心,上海的用户访问上海的数据中心,这样,客户体验就会非常好,访问速度就会超快。这就是全局负载均衡的概念。

    全局负载均衡示例:DNS 访问数据中心中对象存储上的静态资源

     更多学习资料参考:

    DNS协议分析

    DNS协议详解

  • 相关阅读:
    java基础学习总结——方法的重载(overload)
    java基础学习总结——哈希编码
    HDFS常用命令总结
    统计列表中有重复的元素
    url编解码
    python读取文件指定行内容
    python对接elasticsearch的基本操作
    爬虫速度太慢?来试试用异步协程提速吧!
    Python多线程的事件监控
    Python只有文件不存在才能写文件
  • 原文地址:https://www.cnblogs.com/kumata/p/9249723.html
Copyright © 2020-2023  润新知