Я розробляю програму за допомогою Micro-Services, і я не впевнений, що найкращий механізм використовувати для збору даних з декількох сервісів.
Я вважаю, що є два варіанти:
- Інтегруйте механізм зв'язку між послугами, який дозволяє послугам спілкуватися безпосередньо. Шлюз API повинен викликати окрему службу, яка потім викликає інші служби для збору даних, перш ніж повертати консолідовану відповідь на шлюз API. Потім API повертає відповідь абоненту. (Це повинні бути синхронні дзвінки, коли на дзвінок до служби B потрібна відповідь від служби A.. IE окрема особа та адресні служби.)
- Попросіть шлюз API викликати кожну службу безпосередньо та консолідувати дані в API перед поверненням відповіді.
Я схиляюся до другого варіанту, так як те, що служби спілкуються між собою, вводить з'єднання, і в такому випадку я можу просто створити монолітне додаток. Однак є кілька серйозних недоліків, які я можу придумати вгорі голови при такому варіанті:
Якщо API виконує кілька дзвінків до декількох сервісів, це збільшує навантаження на сервер API, особливо коли деякі з цих дзвінків блокуються.
Цей метод означав би, що API повинен «усвідомлювати» те, що намагається зробити додаток (IE Logic доведеться запрограмувати в API для обробки викликів служб по черзі, а потім для консолідації даних), а не просто діють як німа 'кінцева точка' для мікропослуг.
Мені хотілося б знати, що таке стандартний підхід до цієї проблеми і чи є ще третій варіант, який мені не вистачає?