域名访问

模拟域名可以使开发环境尽量模拟生产环境并且方便微服务之间的调用,同时也便于开发人员进行调试和问题排查。在实际的开发工作中,模拟域名是比较常见的做法。

  • 在开发中,我们需要模拟域名的主要原因有两个
    • 在实际的生产环境中,不同的微服务通常会运行在不同的主机或容器中,并使用不同的IP地址或域名来访问。但
      是,在开发环境中,不同的微服务可能会运行在同一台计算机上,或者运行在不同的计算机上但是还没有进行DNS解析。如果不进行模拟,那么开发环境就无法模拟生产环境的实际情况,会给微服务的开发、联调和部署带来很大的不便。
    • 在微服务架构中,通常会存在多个微服务之间相互调用的情况。例如,订单服务需要调用商品服务获取商品信息。支付服务需要调用订单服务完成支付。如果不使用域名进行调用,那么在每次调用时需要手动指定IP地址和端口号,这样会给开发带来很大的麻烦。通过模拟域名,可以使每个微服务都拥有唯一的域名,方便调用。

域名解析

  • 一个域名一定会经过本地域名解析和DNS服务器解析两个步骤才能最终解析为一个或多个IP地址。
    • 本地域名解析:当我们在本地计算机上输入目标域名时,本地域名解析器会首先检查本地hosts文件中是否有对应的IP地址映射,如果有则直接返回对应IP地址,否则则将查询请求发送给本地DNS服务器。
    • DNS服务器解析:本地DNS服务器可能会缓存一部分域名解析信息,如果在缓存中能够找到对应的IP地址,则直接返回,否则就会向上级DNS服务器发出查询请求,逐级查询、解析,最终返回目标域名对应的IP地址。在这个过程中,查询请求往返经历多个DNS服务器之间的通信,可能经过不同地区、不同运营商的网络,因此查询的速度和结果也可能会受到影响。

我们不可能去购买一个域名,因此我们可以伪造本地的hosts文件,实现对域名的解析。

  • Windows 下的 hosts 文件地址:C:/Windows/System32/drivers/etc/hosts
  • Linux / Mac 下的 hosts 文件所在路径: /etc/hosts