gpt4 book ai didi

microservices - consul 中的服务通信

转载 作者:行者123 更新时间:2023-12-02 16:26:42 25 4
gpt4 key购买 nike

我正在开发多项服务,并使用 consul 作为服务注册中心。我可以向领事注册我的所有服务。

接下来要做的是,我需要能够从服务 A 到服务 B 进行通信。

如果没有服务注册中心,通常我所做的只是将客户端 HTTP 请求从服务 A 发送到服务 B。

但是现在我已经有了服务发现,我是否应该通过 consul 获取服务 B 主机地址,然后将客户端 HTTP 请求发送到服务 B 主机地址?还是consul也提供API网关,我只需要将我的客户端HTTP请求从服务A派发给consul,然后consul会自动转发到目的地?

另外,如果有关于我的案例的相关文件,我会很乐意看一看? (我找不到相关文档,可能是我google搜索关键字不对)

最佳答案

Consul 支持两种服务发现方式,DNS 和 HTTP。

应用程序可以针对其本地 Consul 代理执行 DNS 查找,该代理在端口 8600 上公开 DNS 服务器(您也可以配置 DNS forwarding )。例如,应用程序可以为 web.service.consul 发出 A 记录查询,Consul 将返回 web 的健康实例端点列表> 服务。还支持 SRV 查找,以便检索给定服务的 IP 和端口。 DNS 接口(interface)还支持通过服务标签和数据中心查询端点。详情可以在Consul.io: DNS - Service Lookups找到.

可以通过查询 /v1/health/service/:name 来执行基于 HTTP 的服务发现针对本地代理的端点。以下将返回服务 nginx 的健康和不健康端点的完整列表。

$ curl http://127.0.0.1:8500/v1/health/service/nginx

您可以使用passing 查询参数将输出限制为仅运行状况良好的服务。

$ curl "http://127.0.0.1:8500/v1/health/service/nginx?passing"

我建议查看指南 Register a Service with Consul Service Discovery有关从目录注册和查询服务的更多信息。

最后,像 Traefik 和 Solo 的 Gloo 这样的 API 网关支持使用 Consul 进行服务发现(参见 Traefik 的 Consul Catalog Provider 和 Gloo 的 Consul Services )。您可以将您的服务配置为将请求路由到这些网关,并允许网关转发到后端目的地。

关于microservices - consul 中的服务通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64304090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com