Управляйте отказоустойчивостью с помощью Feign, Ribbon и Eureka

Я хочу реализовать отказоустойчивую архитектуру микросервисов с использованием Feign Client, Ribbon и Eureka, поэтому я столкнулся с проблемой. Когда цель микросервисов не работает, я хочу перенаправить на другой экземпляр микросервисов, чтобы пользователь этого не видел. Например, у меня есть 4 экземпляра микросервисов B и один экземпляр A:

Клиент браузера вызывает A, затем A вызов B1, но B1 не работает = ›Автоматическое перенаправление на B2, B2 - KO, затем вызов B3 и B3, затем он возвращает ответ на A. A возвращает ответ клиенту браузера.

Как я мог это реализовать, пожалуйста. Заранее спасибо.


person jonn    schedule 12.07.2020    source источник


Ответы (1)


По сути, Ribbon уже должен находить экземпляры, которые для вас живы - во-первых, Eureka хранит и обновляет информацию о том, какие экземпляры живы, и, во-вторых, Ribbon запускает запросы на проверку работоспособности к экземплярам. Если это не работает для вас, вы можете попробовать настройка интервалов опроса для ленты. Если вы хотите, чтобы неудавшийся запрос повторялся для другого экземпляра, вы можете использовать Spring Cloud Netflix Ribbon с Spring Retry (см. документация).

Сказав это, поскольку Spring Cloud Ribbon теперь находится в режиме обслуживания и не войдет в состав выпуска 2020.0.0, я бы определенно не рекомендовал добавлять его на этом этапе. Доступная альтернатива - Spring Cloud LoadBalancer. Он поддерживает получение активных экземпляров из Service Discovery (с кеширование и проверки работоспособности. На данный момент он не поддерживает повторные попытки, но есть issue для него в невыполненной работе проекта.

person OlgaMaciaszek    schedule 20.07.2020
comment
Если вы хотите, чтобы неудавшийся запрос повторялся для другого экземпляра, вы можете использовать Spring Cloud Netflix Ribbon с Spring Retry Спасибо! - person jonn; 24.07.2020