当前位置: 首页 > 知识库问答 >
问题:

领事服务沟通

萧飞
2023-03-14

我正在开发几个服务,并使用Consult作为服务注册表。我可以向领事登记我的所有服务。

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

如果没有服务注册表,通常我所做的只是将客户端HTTP请求从服务a分派到服务B。

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

如果有关于我的案子的相关文件,我也很乐意看一看?(找不到相关文档,可能是我的谷歌搜索关键词错了)

共有2个答案

左丘阳晖
2023-03-14

我最终从领事那里得到服务信息列表,然后对其进行名称匹配,然后得到服务地址。

我使用此端点获取服务列表及其数据

http://localhost:8500/v1/agent/services

所以我猜这是客户端的发现。

松锐藻
2023-03-14

Consul支持两种服务发现方法:DNS和HTTP。

应用程序可以对其本地Consuler代理执行DNS查找,该代理公开端口8600上的DNS服务器(您还可以配置DNS转发)。例如,应用程序可以为web.service.Consul发出a记录查询,Consul将返回web服务的正常实例终结点列表。还支持srv查找,以便检索给定服务的IP和端口。DNS接口还支持按服务标记和数据中心查询端点。详情可以在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"

我建议阅读指南Registry a Service with Consult Service Discovery,以了解更多有关从目录中注册和查询服务的信息。

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

 类似资料:
  • 3.4 ABP领域层 - 领域服务 3.4.1 简介 领域服务(或者服务,在DDD模式中)是被用来执行领域操作或者业务规则的。Eric Evans 在他的DDD书中这样说过:一个好的Service应该有以下三个特征: 与领域概念相关的操作不是Entity或Value Object 的一个自然部分; 接口是根据领域模型的其它元素定义的; 操作是无状态的。 领域服务和Application Servi

  • 我有多个微服务。客户端可以通过API网关调用这些微服务,微服务之间也可以相互通信。 理想情况下,请求将来自拥有所有权限的用户的API网关。例如,如果用户(浏览器)需要来自微服务A的数据,则只将该角色授予用户,如果内部微服务A需要来自B的数据(rest call),则不应将该角色分配给用户。 要求:如何限制/授权微服务之间的内部通信,以便只有经授权的微服务才能呼叫其他服务。 选项: > 将所有角色分

  • 我有一个带有2个主机的consur堆栈(用于测试)。1台主机仅在引导模式下运行consur,另一台主机在注册器下运行客户端模式,用于自动注册服务(均在docker上运行)。现在,如果我启动一个应用程序(例如8080端口)容器,注册器将检测并将其注册到Consor,但它没有我想要的http检查。我发现Registrator有自动注册健康检查的选项是将SERVICE\u 8080\u check\u

  • 当我在我的本地机器上运行consul和bootstrap.properties中具有以下属性的Spring Boot客户端时,我可以看到它连接、发现服务并能够使用服务发现从一个服务连接到另一个服务。Bootstrap.properties: 但是现在,我在 openshift 上安装了领事,提供了通往它的路线。我可以浏览到领事UI,并看到领事服务已注册。但是当我尝试将在本地主机上运行的客户端连接到

  • 3.6 ABP领域层 - 领域事件 在C#中,一个类可以定义其专属的事件并且其它类可以注册该事件并监听,当事件被触发时可以获得事件通知。这对于对于桌面应用程序或独立的Windows Service来说非常有用。但是, 对于Web应用程序来说会有点问题,因为对象是根据请求(request)被创建并且它们的生命周期都很短暂。我们很难注册其它类别的事件。同样地,直接注册其它类别的事件也造成了类之间的耦合

  • 我正在我的Android应用程序中使用 Realm。我通过完成事件收到来自谷歌驱动器的通知,所以我需要在服务中修改我的领域数据库。 我得到的例外是: 我在应用程序类中设置了默认配置,如下所示: 在onCreate中,我从我的服务中得到我的领域实例,如下所示: 然后我在服务中使用这个领域实例: 但是,在执行最后一个时,应用程序会启动非法状态异常。我不知道为什么。我不确定它是否与我在Android清单