Получить список всех доступных серверов независимо от зоны с балансировщиком нагрузки Ribbon

У нас есть 4 зоны, в каждой из которых работает служба zuul и UI. Лента — это наш балансировщик нагрузки между службами.

Мы достигаем закрепления сеанса в Zuul с помощью пользовательского правила балансировки нагрузки, как указано в

https://github.com/alejandro-du/vaadin-microservices-demo/blob/master/proxy-server/src/main/java/com/example/StickySessionRule.java

Как вы можете видеть в приведенном выше файле, есть строка, которая получает список доступных серверов для конкретной службы.

List<Server> servers = getLoadBalancer().getReachableServers();

В списке серверов будет только один сервер из-за включенной привязки к зоне.

Есть ли способ получить все доступные серверы без учета зоны?

Мы ищем что-то, что могло бы заменить вышеупомянутый вызов балансировщика нагрузки.

В текущем правиле stickysession мы используем ZoneAvoidanceRule. Мы также пробовали AvailabilityFilteringRule, BaseLoadBalancer и RoundRobinRule. Но ни один из них не дает ссылки на все 4 экземпляра сервера.

Что можно сделать, чтобы прочитать весь список серверов?


person Seeker    schedule 16.11.2019    source источник


Ответы (1)


Наконец-то собирался этого добиться.

Все, что мне нужно было сделать, это удалить строку

List<Server> servers = getLoadBalancer().getReachableServers();

а затем введите bean-компонент EurekaClient, который содержит информацию обо всех экземплярах приложения, а затем прочитайте список серверов как

Application app = eurekaClient.getApplication("application-name");
List<InstanceInfo> allinstances = app.getInstances();
person Seeker    schedule 20.11.2019