Spring Boot微服务架构查找服务实例数

时间:2018-08-26 18:39:53

标签: spring-boot netflix-zuul netflix-eureka netflix-ribbon

我正在尝试使用spring boot建立微服务架构。我是通过分离各个组件并使用ribboneureka naming serverzuul API等技术创建的。

service1从数据库读取输入,并通过功能区,尤里卡和zuul调用service2

List<Object> inputs= ...
for(Object input: inputs){
    service2Proxy.process(input); // calling service 2
}

是否可以根据service2的可用实例数来调用service2? 即,如果一次有3个service2实例,我一次只需要向service2调用3个请求。

该问题的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

如果直接(通过自动装配)直接使用LoadBalancerClient,然后使用LoadBalancerClient.choose(serviceId),则可以保留返回的ServiceInstance。这包含服务的uri。因此,在每次调用之后将此uri存储在一组uri中,并在进行另一个调用之前检查您是否已经使用了服务器实例。如果所有服务器都已耗尽,请等待进一步的输入。当您准备好再次处理时,请清除设置并重复。如文档here中所述,代码会像这样

@Autowired
    private LoadBalancerClient loadBalancer;

    public void doStuff() {
        ServiceInstance instance = loadBalancer.choose("stores");
        URI serverUri = instance.getUri();
     // use you logic here
        URI storesUri = URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));

    }