在 Consul 中注册具有多个实例的服务

Register a service with multiple instance in Consul

我有几个微服务想在 Consul 中注册,以便它们可以找到彼此并进行通信。 一切都在 docker compose 上运行。

我想知道如果这两个服务之一有多个副本,那将如何工作。 Consul(或 docker compose)如何处理这个问题?是否有某种内部负载平衡或什么?

Consul 支持注册多个 instances/replicas 服务。当消费者查询 Consul 目录时,Consul 将 return 每个已注册服务实例的信息。

如果 consumer/client 通过 DNS 查询 Consul,客户端的 DNS 解析器最终将负责从 DNS 响应中的 IP 列表中选择要连接的端点。

如果客户端通过 HTTP API(例如,/v1/agent/health/service/:service)查询 Consul,则客户端必须实现自己的逻辑以 select 实例列表中的上游实例return编辑在 API 回复中。

有关详细信息,请参阅使用 Consul 服务发现教程注册服务的 query services 部分。