Канарские релизы с использованием Zuul Gateway, Eureka, Ribbon и Feign - PullRequest
0 голосов
/ 24 февраля 2019

Фон

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

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

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

Мои мысли

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

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

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

Вопрос

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