#azure #architecture #microservices #aggregate
#azure #архитектура #микросервисы #агрегировать
Вопрос:
Мы используем функцию шлюза управления API Azure, среди прочего, для маршрутизации запросов к нашим микросервисам.
Для некоторых запросов из пользовательского интерфейса (на основе angular) мы хотим, чтобы пользовательский интерфейс выполнял только один запрос для получения всех необходимых данных. Например, запрос может заключаться в получении данных панели мониторинга, где данные, составляющие панель мониторинга, будут получены из нескольких микросервисов.
Мы рассматриваем следующие варианты:
- добавьте логику агрегирования с помощью шлюза
- добавьте микросервис агрегации, который будет вызывать шлюз
- добавьте службу агрегирования, которая вызывает шлюз
Для вариантов 1 и 2 наш пользовательский интерфейс будет напрямую вызывать шлюз управления API. Для варианта 3 пользовательский интерфейс вызовет службу агрегации, которая затем вызовет шлюз управления API.
Мы склоняемся к варианту 1, однако, похоже, это может стать немного сложнее, поскольку нам может понадобиться некоторый c # для логики агрегирования (или же использовать политики отправки запросов, аналогичные показанным здесь).
Для варианта 3 мы, вероятно, выбрали бы службу приложений на основе nodejs / express. Мы не нашли никаких ссылок, где агрегация помещается перед вызовом шлюза (ближайшая ссылка, которую мы имеем, — это некоторое сходство с примером двухуровневого шлюза, показанным здесь, который выглядит так, где наш подход к варианту 3 может выглядеть так).
В настоящее время все наши микросервисы написаны на Java.
Какой вариант мы должны выбрать?