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

使用来自发现而不是目录主机的ServiceID的微服务之间的通信?

岳嘉悦
2023-03-14

我是一个新的微服务,我正在读一些关于discovery server的例子,我看到我们可以通过使用url调用另一个微服务api:http://inventory-service/api/inventory/{productCode}。“inventor-service”是我在Discovery中注册的服务实例。所以我的问题是使用调用目录host:port:http://localhost:9009/api/inventory/{productCode}的serviceId intead有什么好处。

共有1个答案

韦辰钊
2023-03-14

通过在src/main/resources/bootstrap.properties中配置Eureka serviceUrl,您可以向Eureka服务器注册Inventor-Service。

 spring.application.name=inventory-service
 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

然后构建Inventury-Service并通过运行以下命令启动它的2个实例。

 java -jar -Dserver.port=9001 target/inventory-service-0.0.1-SNAPSHOT-exec.jar

 java -jar -Dserver.port=9002 target/inventory-service-0.0.1-SNAPSHOT-exec.jar

当您访问Eureka Dashboard http://localhost:8761/时,您将看到注册了两个Inventor-Service实例。

如果要从使用者应用程序中应用客户端负载平衡,则需要如下配置:

 server.ribbon.listOfServers=localhost:9001,localhost:9002 
 server.ribbon.eureka.enabled=false

如果要启动新实例,则需要在使用者配置中注册它们。

有了ServiceID,您就不必担心它了,因为所有实例都将使用相同的标识符注册。它将自动添加到可用服务器列表中。这是使用ServiceId而不是hostname的优点之一

 类似资料:
  • 它现在是如何工作的: 微服务X用静态ip向微服务Y发出REST API请求 我试图通过在docker-compose中创建一个已使用的定义网络来实现这一点: 例如,我可以从容器X ping到容器Y,但不能Curl。我该如何解决这个问题,或者这不是实现我想要的最好的方法。

  • 我正在构建一个基于Spring云的微服务ML管道。我有一个数据摄取服务,它(当前)从SQL接收数据,这些数据需要被预测服务使用。 普遍的共识是写入应该使用kafka/Rabbitmq使用基于异步消息的通信。 我不确定的是如何编排这些服务? 我是否应该使用API网关来调用启动管道的摄取?

  • 为了这个问题,我正在做一个项目,其中有两个微服务: null 根据我所读到的,为了进行这种更改,我们需要做以下几点: 从->切换 更改配置以启用分布式命令 使用SpringCloud或JCloud连接微服务 将AxonFramework添加到遗留InvoiceService项目并处理接收到的saga事件。 这是我们遇到麻烦的第四点:发票服务是由一个不愿意进行更改的单独团队维护的。 在这种情况下,使

  • 在单体架构时,因为服务不会经常和动态迁移,所有服务地址可以直接在配置文件中配置,所以也不会有服务发现的问题。但是对于微服务来说,应用的拆分,服务之间的解耦,和服务动态扩展带来的服务迁移,服务发现就成了微服务中的一个关键问题。 服务发现分为客户端服务发现和服务端服务发现两种,架构如下图所示。 这两种架构都各有利弊,我们拿客户端服务发现软件Eureka和服务端服务发现架构Kubernetes/SkyD

  • 问题内容: 我正在尝试在收到C2DM消息时显示一个简单的通知。服务提供给UI,但仍在主线程上运行。我见过有人声称您可以通过服务创建和显示通知。 } 我不知道为什么会抛出该异常。 问题答案: 首先,引发异常是因为创建的通知没有引用该对象的视图对象(contentView属性设置为null)。您必须在显示通知之前调用setLatestEventInfo。 其次,不赞成使用您使用的构造函数。请使用Not