最近,几个服务发现工具变得越来越受欢迎/"主流"。我想知道在什么情况下应该使用它们而不是传统的负载均衡器。
对于负载均衡器,您将一组节点集群在平衡器后面,然后客户端向平衡器发出请求,平衡器通常会将这些请求循环发送到集群中的所有节点。
使用服务发现(如Consul、ZK等),您可以让集中式的“共识”服务确定哪些特定服务的节点是健康的,然后您的应用程序会连接到被服务认为是健康的节点。因此,虽然服务发现和负载均衡是两个不同的概念,但服务发现会方便地为您提供负载均衡。
但是,如果负载均衡器(例如HAProxy或nginx)内置了监视和健康检查,则您基本上会获得以负载均衡为副作用的服务发现!这意味着,如果我的负载均衡器知道不要将请求转发到其集群中的不健康节点,那么在功能上相当于共识服务器告诉我的应用程序不要连接到不健康节点。
因此,在我看来,服务发现工具就像是负载均衡器的“半斤六两”等价物。我是否漏掉了什么?如果某人的应用程序架构完全依赖于负载平衡微服务,那么切换到基于服务发现的模型有何益处(或无益)?