我们先来看看swarm和Consul提供的服务发现范围。
Swarm只是在您的docker网络/ infra上进行服务发现,而consul几乎可以用于任何事情,如果您知道如何使用它,无论是单一应用程序还是微服务,consul都会在一个地方为您提供所有这些服务。
其次,尽管Swarm非常适合处理小型基础架构负载,但对于资源匮乏的基础架构来说,处理高生产负载并不是很好。这就是为什么还有其他工具存在的原因,例如kubernetes,ECS等。
因此,考虑到你有一个你知道会增长的应用程序,我宁愿选择一个适合我未来可能尝试的任何解决方案,而不必改变太多,并且适用于任何IaaS提供商的扩展。希望有所帮助。
Consul被用作独立Swarm中的服务发现模块(在docker 1.12之前)。但是,由于docker 1.12,Swarm模式引入了默认发现服务。所以你不需要外部商店。
要注意的关键点是,如果你有一个像consul这样的外部商店的群,它仍然会有一些需要保留的数据/元数据。因此,使用Consul仍然存在。