Где добавить объединение в архитектуру микросервисов на основе Azure

#azure #architecture #microservices #aggregate

#azure #архитектура #микросервисы #агрегировать

Вопрос:

Мы используем функцию шлюза управления API Azure, среди прочего, для маршрутизации запросов к нашим микросервисам.

Для некоторых запросов из пользовательского интерфейса (на основе angular) мы хотим, чтобы пользовательский интерфейс выполнял только один запрос для получения всех необходимых данных. Например, запрос может заключаться в получении данных панели мониторинга, где данные, составляющие панель мониторинга, будут получены из нескольких микросервисов.

Мы рассматриваем следующие варианты:

  1. добавьте логику агрегирования с помощью шлюза
  2. добавьте микросервис агрегации, который будет вызывать шлюз
  3. добавьте службу агрегирования, которая вызывает шлюз

Для вариантов 1 и 2 наш пользовательский интерфейс будет напрямую вызывать шлюз управления API. Для варианта 3 пользовательский интерфейс вызовет службу агрегации, которая затем вызовет шлюз управления API.

Мы склоняемся к варианту 1, однако, похоже, это может стать немного сложнее, поскольку нам может понадобиться некоторый c # для логики агрегирования (или же использовать политики отправки запросов, аналогичные показанным здесь).

Для варианта 3 мы, вероятно, выбрали бы службу приложений на основе nodejs / express. Мы не нашли никаких ссылок, где агрегация помещается перед вызовом шлюза (ближайшая ссылка, которую мы имеем, — это некоторое сходство с примером двухуровневого шлюза, показанным здесь, который выглядит так, где наш подход к варианту 3 может выглядеть так).

В настоящее время все наши микросервисы написаны на Java.

Какой вариант мы должны выбрать?