Микросервисы на основе сообщений - производительность шлюза Api - PullRequest
0 голосов
/ 25 января 2020

Я нахожусь в процессе разработки архитектуры микросервиса, и у меня есть вопрос, связанный с производительностью. Вот что я пробую с моим дизайном:

  • У меня есть несколько микро-сервисов, которые выполняют различные действия и сохраняют эти результаты в собственном хранилище данных.
  • Микро -услуги получают работу через очередь сообщений, где они получают запросы на запуск своего процесса для указанных данных c. Микро-сервисы НЕ связываются друг с другом.
  • У меня есть API-шлюз, который фактически имеет три пути:

    1) Получите запрос на обработку данных, которые затем преобразуются в несколько сообщений, которые он помещает в очередь для обработки микросервисами в свое время. Время обработки может быть в минутах или дольше (не мгновенно)

    2) Получает запрос о статусе процесса, в котором возвращается ход всего процесса.

    3) Получает запрос на объединенные данные, представляющий собой некоторую комбинацию всех результатов от служб.

Моя проблема заключается в № 3 выше и производительности этого процесса.

Всякий раз, когда этот запрос получен, шлюз API должен поместить запрос сообщения в очередь для получения информации от всех служб, затем он должен дождаться ответа всех служб с последним состоянием их данных и затем он объединяет эти данные и возвращает вызывающему.

Этот процесс, очевидно, довольно медленный, так как он должен ждать ответа от каждой службы. Какой способ ускорить это?

Единственный способ, которым я решил решить эту проблему, - это иметь другую агрегированную службу / хранилище данных, где дублированные данные хранятся и запрашиваются моим шлюзом API. Мне действительно не нравится этот подход, так как он дублирует данные и требует дополнительной работы / кода.

Каков «правильный» и эффективный способ запроса актуальных данных из моих микро-сервисов.

1 Ответ

0 голосов
/ 26 января 2020

Вы можете использовать этот подход для запроса данных через микроуслуги. Ссылка
Выборочная репликация данных

При таком подходе мы копируем данные, необходимые с других микросервисов, в базу данных нашего микросервиса. Единственная связь между микросервисами заключается в конфигурации репликации данных.

Уровень составного сервиса При таком подходе вы вводите составные сервисы, которые агрегируют данные из микросервисов более низкого уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...