有许多应用程序可以在分布式环境AKA SOA中扮演服务定位器的角色。例如,Zookeeper和Consul。为什么不使用DNS呢?标准,众所周知,稳定…
感谢@igorbel提供了有趣的文章,引发了更多关于主题的有趣文章。
至于答案,DNS因为以下原因而不能成为好的解决方案:
当然你可以使用DNS。很多时候你应该。但是,如果您的需求大于DNS提供的需求并且需要在其上构建自定义内容,则可以检查已有的工具,如ZooKeeper,Consul,etcd,Eureka等。
如果您遇到可以解决的问题,可以决定使用它们。
例如,您可能希望检测服务何时关闭或失去连接 - 并从服务列表中删除受影响的端点。所有提到的工具都提供了开箱即用的功能。
Spotify与此主题相关的一篇很好的文章: https://labs.spotify.com/2013/02/25/in-praise-of-boring-technology
用于发现的DNS协议是一个不错的选择 - 这就是像[SkyDNS]这样的工具(对于etcd) 1 和 康索尔 为此目的支持它。
最好使用这些只有DNS的工具,因为它们提供额外的功能,如领导者选举,健康检查等。