使用发现中的ServiceID而非目录主机进行微服务之间的通信?

时间:2018-10-04 08:03:54

标签: spring-cloud netflix-eureka service-discovery

我是新的微服务,正在阅读有关发现服务器的一些示例,我看到我们可以通过使用url来调用另一个微服务api,例如: http://inventory-service/api/inventory/{productCode}。 “库存服务”是我在发现中注册的服务实例。 所以我的问题是,使用呼叫目录host:port的serviceId intead有什么好处: http://localhost:9009/api/inventory/ {productCode}。

1 个答案:

答案 0 :(得分:0)

假设您通过在src / main / resources / bootstrap.properties中配置Eureka serviceUrl在Eureka服务器上注册清单服务。

SharedPreferences

然后通过运行以下命令来构建清单服务并启动它的2个实例。

SharedPreference.Editor pref = context.getSharedPreferences("prefs", MODE_PRIVATE).edit();
pref.clear();
pref.commit();

当您访问Eureka仪表板http://localhost:8761/时,您将看到2个注册的库存服务实例。

如果您想从消费者应用程序中应用Client Load Balancing,则需要这样的配置:

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

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

使用ServiceID,您不必担心,因为所有实例都将使用相同的标识符进行注册。它将自动添加到可用服务器列表中。这是使用ServiceId代替主机名的优势之一