Микросервисы извлечения данных - PullRequest
0 голосов
/ 18 мая 2018

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

  1. Клиентское приложение выполняет запрос к заказам microserve, а после делает запрос nпользователи microservice для извлечения информации о пользователях заказ
  2. Клиентское приложение делает запрос на заказы mircoservice, которые делают межзапросные запросы пользователей microservices
  3. Заказы microservice db хранят необходимую информацию о пользователе

Для первого случая - для клиентского приложения сложно создать и объединить данные из двух источников (заказов и пользователей)

Для второго случая - если мыиметь более двух микросервисов, тогда общее время запроса вырастет

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

, какой случай наиболее используется?

и маленькийвопрос № 2 - в случае применения микросервиса и веб-API - каждый микросервис содержит только один или, может быть, два контроллера?

1 Ответ

0 голосов
/ 21 мая 2018

Чтобы ответить на все три случая, это будет зависеть исключительно от архитектуры микросервисов.

Первый случай -> В соответствии с этим делом ваш клиент долженсделать консолидированный ответ, позвонив на различные микросервисы.Это накладные расходы для клиента, что является плохим архитектурным подходом.

Второй случай -> Это хороший подход по сравнению с первым.Если у вас есть независимая база данных / таблицы (без какого-либо прямого отношения), то это будет хорошим подходом.Просто вы должны хранить ссылки на orderId / userId в соответствующих таблицах, чтобы получить эти детали.Ваше общее время запроса будет сгруппировано, но ваш пользовательский модуль будет работать независимо от модулей заказа.При таком подходе вы добьетесь слабой связи.

Третий случай -> Если у вас нет разных баз данных для каждого микросервиса, то это будет вашим лучшим подходом, так как сократит количество вызовов.к базе данных, а также к другим микросервисам.Вы можете получить прямые данные, внедрив методы обслуживания для каждой требуемой модели.

, какой случай наиболее часто используется?

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

В случае применения микросервиса и веб-API - каждый микросервис содержит только один или, может быть, два контроллера?

Естьне является стандартом для количества контроллеров в каждом микросервисе.Это будет зависеть от размера микросервиса и обязанностей, выполняемых этим микросервисом.

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