使用来自发现的 ServiceID 而不是目录主机的微服务之间的通信?
Communication between microservice using ServiceID from discovery instead of directory host?
我是新的微服务,我正在阅读一些关于发现服务器的示例,我看到我们可以使用 url 调用另一个微服务 api,例如:
http://inventory-service/api/inventory/{productCode}
。
"inventory-service"是我在discovery中注册的一个服务实例。
所以我的问题是使用 serviceId 而不是调用目录的好处是什么 host:port:
http://localhost:9009/api/inventory/{productCode}.
假设您通过在 src/main/resources/bootstrap.properties.
中配置 Eureka serviceUrl 来向 Eureka 服务器注册 inventory-service
spring.application.name=inventory-service
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
然后构建 inventory-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 仪表板时 http://localhost:8761/ 您将看到 2 个已注册的库存服务实例。
如果您想从您的消费者应用程序应用 Client Load Balancing,您需要这样的配置:
server.ribbon.listOfServers=localhost:9001,localhost:9002
server.ribbon.eureka.enabled=false
如果您想启动新实例,您需要在您的消费者配置中注册它们。
有了 ServiceID,您就不必担心了,因为所有实例都将使用相同的标识符进行注册。它将自动添加到可用列表中 servers.It 是使用 ServiceId 而不是 hostname
的优点之一
我是新的微服务,我正在阅读一些关于发现服务器的示例,我看到我们可以使用 url 调用另一个微服务 api,例如:
http://inventory-service/api/inventory/{productCode}
。
"inventory-service"是我在discovery中注册的一个服务实例。
所以我的问题是使用 serviceId 而不是调用目录的好处是什么 host:port:
http://localhost:9009/api/inventory/{productCode}.
假设您通过在 src/main/resources/bootstrap.properties.
中配置 Eureka serviceUrl 来向 Eureka 服务器注册 inventory-service spring.application.name=inventory-service
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
然后构建 inventory-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 仪表板时 http://localhost:8761/ 您将看到 2 个已注册的库存服务实例。
如果您想从您的消费者应用程序应用 Client Load Balancing,您需要这样的配置:
server.ribbon.listOfServers=localhost:9001,localhost:9002
server.ribbon.eureka.enabled=false
如果您想启动新实例,您需要在您的消费者配置中注册它们。
有了 ServiceID,您就不必担心了,因为所有实例都将使用相同的标识符进行注册。它将自动添加到可用列表中 servers.It 是使用 ServiceId 而不是 hostname
的优点之一