Я разрабатываю приложение с использованием Micro-Services, и я не уверен в том, какой механизм лучше использовать для сбора данных из нескольких служб.
Я считаю, что есть два варианта:
- Интегрируйте межсервисный механизм связи, который позволяет сервисам общаться напрямую. API-шлюз будет вызывать отдельную службу, которая затем вызывает другие службы для сбора данных, прежде чем возвращать консолидированный ответ на API-шлюз. Затем API возвращает ответ вызывающей стороне. (Это должны быть синхронные вызовы, когда вызову serviceB требуется ответ от serviceA. IE Seperate Person и Address Services.)
- Пусть API-шлюз вызывает каждую службу напрямую и объединяет данные в API, прежде чем вернуть ответ.
Я склоняюсь ко второму варианту, поскольку взаимодействие сервисов может привести к соединению, и в этом случае я мог бы просто спроектировать монолитное приложение. Тем не менее, есть несколько серьезных недостатков, которые я могу отмахнуться от этой опции:
Наличие API для выполнения нескольких вызовов нескольких служб увеличивает нагрузку на сервер API, особенно когда некоторые из этих вызовов блокируются.
Этот метод будет означать, что API должен «знать» о том, что пытается сделать приложение (IE Logic должен быть запрограммирован в API для обработки вызова сервисов по очереди, а затем для консолидации данных), а не просто действовать как тупая «конечная точка» для микро-услуг.
Я хотел бы знать, что является стандартным подходом к этой проблеме и есть ли другой третий вариант, который я пропускаю?