服务定位器-为什么不使用DNS?
在分布式环境(也称为SOA)中,有许多应用程序可以扮演服务定位器的角色。例如,动物园管理员和领事。为什么不改用DNS呢服务定位器-为什么不使用DNS?,dns,soa,microservices,Dns,Soa,Microservices,在分布式环境(也称为SOA)中,有许多应用程序可以扮演服务定位器的角色。例如,动物园管理员和领事。为什么不改用DNS呢 标准、知名、稳定 分布式、容错 可以将多个IP分配给同一名称,以便在同构群集中进行负载平衡 可以提供额外的元数据 所以。。。为什么不呢?当然可以使用DNS。很多时候你应该这样做。但是,如果您的需求大于DNS提供的,并且您需要在其上构建自定义的东西,那么您可以检查现有的工具,如ZooKeeper、Concur、etcd、Eureka和其他工具 如果你有他们能解决的问题,你可能
- 标准、知名、稳定
- 分布式、容错
- 可以将多个IP分配给同一名称,以便在同构群集中进行负载平衡
- 可以提供额外的元数据
所以。。。为什么不呢?当然可以使用DNS。很多时候你应该这样做。但是,如果您的需求大于DNS提供的,并且您需要在其上构建自定义的东西,那么您可以检查现有的工具,如ZooKeeper、Concur、etcd、Eureka和其他工具 如果你有他们能解决的问题,你可能会决定使用他们 例如,您可能希望检测服务何时停机或失去连接,并从服务列表中删除受影响的端点。所有提到的工具都提供了这种开箱即用的功能 Spotify有一篇与此主题相关的精彩文章:
用于发现的DNS协议是一个很好的选择-这就是为什么像[SkyDNS](用于etcd)这样的工具支持它,并且正是为了这个目的
最好使用这些仅用于DNS的工具,因为它们提供了额外的功能,如领导人选举、健康检查等。感谢@igorbel提供了有趣的文章,从而获得了更多关于该主题的有趣文章 至于答案,DNS不是一个好的解决方案,因为:
- 复杂的集中式配置。这确实使添加新主机变得复杂
- 大量且不可预测的传播时间。删除失败的节点可能需要一些时间,因为分层DNS缓存会导致较长时间的系统不稳定