2017-07-18 26 views
0

我有兩個第一個服務的實例。他們在不同的港口工作,並有相同的名字。這些服務已在Eureka註冊。另外我有第二個服務需要發現第一個服務的一個實例。第二項服務使用FeignClient實施,並且也與Eureka註冊。每次第二個服務按隨機順序發現第一個服務的實例時。FeignClient發現哪些訂單服務?

發現服務的原理有FeignClient?如果FeignClient會發現第一個服務的多個實例,它會選擇哪個實例?

如果我使用DiscoveryClient,而不是FeignClient,我可以獲取服務實例的列表並選擇第一個實例或選擇帶有自定義元數據的實例。

FeignClient呢?

回答

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())); 
    } 

我們有資格的服務器列表,選擇其中之一是一個簡單的邏輯。