【问题标题】:Service locator - why not use DNS?服务定位器 - 为什么不使用 DNS?
【发布时间】:2015-07-20 15:12:39
【问题描述】:

有很多应用程序可以在分布式环境 AKA SOA 中扮演服务定位器的角色。例如,动物园管理员和领事。为什么不改用 DNS?

  • 标准、知名、稳定
  • 分布式、容错
  • 可以将多个 IP 分配给同名,以实现同构集群中的负载平衡
  • 可以提供其他元数据

那么……为什么不呢?

【问题讨论】:

  • 我已经非常有效地将其用作“服务目录”。我和其中一位开发人员将裸机构建脚本绑定到我隐藏的主服务器上的非特权用户帐户,我可以将他自动构建的文件包含到主 DNS 基础设施中。工作得很好。为了解决可用性问题,您最好在具有主动探测功能的服务前面放置一个实际的负载均衡器。

标签: dns soa microservices


【解决方案1】:

当然可以使用 DNS。很多时候你应该。但是,如果您的需求比 DNS 提供的更大,并且您需要在其之上构建一些自定义的东西,您可以检查现有的工具,如 ZooKeeper、Consul、etcd、Eureka 等。

如果您有他们可以解决的问题,您可能会决定使用它们。

例如,您可能希望检测您的服务何时出现故障或失去连接 - 并从您的服务列表中删除受影响的端点。所有提到的工具都提供了开箱即用的功能。

Spotify 有一篇与此主题相关的精彩文章: https://labs.spotify.com/2013/02/25/in-praise-of-boring-technology

【讨论】:

    【解决方案2】:

    感谢@igorbel 提供有趣的文章,从而带来更多有趣的主题文章。

    至于答案,DNS 不是很好的解决方案,因为:

    • 复杂的集中配置。添加新主机确实很复杂。
    • 传播时间长且不可预测。移除故障节点可能需要一些时间,因为分层 DNS 缓存会导致较长时间的系统不稳定。

    【讨论】:

      【解决方案3】:

      用于发现的 DNS 协议是一个不错的选择 - 这就是为什么像 [SkyDNS](用于 etcd)1Consol 这样的工具支持它的原因。

      最好使用这些工具而不是 DNS,因为它们提供了额外的功能,如领导者选举、健康检查等。

      【讨论】:

        猜你喜欢
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        • 1970-01-01
        相关资源
        最近更新 更多