FeignClient发现服务的顺序是什么?

Which order does FeignClient discover services?

第一个服务有两个实例。它们在不同的端口上工作并且具有相同的名称。这些服务在 Eureka 注册。我还有第二个服务需要发现第一个服务的一个实例。第二个服务是用 FeignClient 实现的,也用 Eureka 注册。每次第二个服务按随机顺序发现第一个服务的实例。

发现服务的原理是什么FeignClient?如果 FeignClient 会发现第一个服务的多个实例,它会选择哪个实例?

如果我使用 DiscoveryClient 而不是 FeignClient,我可以获得服务实例列表并选择第一个实例或选择具有自定义元数据的实例。

FeignClient呢?

我想我找到了答案。 Ribbon 管理选择符合条件的服务。例如我们可以在下面的代码中看到它:

 public Optional<Server> chooseRoundRobinAfterFiltering(List<Server> servers, Object loadBalancerKey) {
        List<Server> eligible = getEligibleServers(servers, loadBalancerKey);
        if (eligible.size() == 0) {
            return Optional.absent();
        }
        return Optional.of(eligible.get(nextIndex.getAndIncrement() % eligible.size()));
    }

我们有符合条件的服务器列表,选择其中一个是一个简单的逻辑。