我有第一个服务的两个实例。它们在不同的端口上工作,并具有相同的名称。这些服务已在Eureka注册。我还有第二个服务,需要发现第一个服务的一个实例。第二项服务是使用FeignClient实现的,并且也注册了Eureka。每次第二服务在随机订单上发现第一服务的实例。
哪些原则发现服务有FeignClient?如果FeignClient会发现第一个服务的多个实例,那么它将选择哪个实例?
如果我使用DiscoveryClient而不是FeignClient,我可以获取服务实例的列表并选择第一个实例或选择具有自定义元数据的实例。
FeignClient怎么样?
答案 0 :(得分:0)
我想我找到了答案。功能区管理选择符合条件的服例如,我们可以在以下代码中看到它:
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()));
}
我们有符合条件的服务器列表,选择其中一个是一个简单的逻辑。