Канарские релизы с использованием Zuul Gateway, Eureka, Ribbon и Feign

Фон

Я хочу развернуть две версии одного и того же приложения и направить запросы к этим приложениям на основе их версий, другими словами, выпусков Canary. Обе версии приложения будут зарегистрированы в Eureka с одинаковым именем приложения.

Среда состоит из шлюза Zuul, обнаружения служб Eureka, ленты для балансировки нагрузки и Feign для внутренней связи между приложениями. Помимо этого есть два других приложения, App1 и App2. Когда App1 получает запрос, он звонит в App2 с помощью Feign.

Это изображение показывает тот поток, который я пытаюсь выполнить.

Мои мысли

Eureka имеет карту метаданных, в которой можно установить пары ключ / значение. Когда Canary-релиз либо App1, либо App2 развернут, на этой карте может быть установлено "canary = true".

После этого пиара. Запрос будет отправлен на шлюз Zuul, где предварительный фильтр проверяет, X-Canary-Test заголовок установлен или нет. Затем, пользовательская Ribbon IRule будет выбирать подмножество экземпляров из Eureka на основе того, был ли сделан запрос на выпуск Canary или нет.

Я также не уверен, как это будет работать с Feign. Если исходный запрос предназначен для релиза Canary, то я бы хотел, чтобы все последующие вызовы были сделаны для релизов Canary, если они существуют.

Вопрос

  • Будет ли это наилучшим способом выполнить маршрутизацию через Zuul Gateway, и если да, то как бы вы получили подмножество серверов / экземпляров от Eureka?
  • Как это можно применить к клиентам Feign и гарантировать, что релизы Canary пытаются вызвать другие развернутые релизы Canary?

0 ответов

Другие вопросы по тегам