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