Метод поиска микросервисов шлюза API - PullRequest
0 голосов
/ 23 июня 2018

Я создал API с API-шлюзом и двумя микро-сервисами. Двумя микро сервисами являются Продукты и Категории.

Вызов API может сделать следующее:

/v1/account/getAccount          // gets all accounts
/v1/account/getAccount/44       // gets account 44
/v1/categories/getCategory      // gets all categories
/v1/categories/getCategory/24   // gets category 24

Счета могут быть в категориях. Каков наилучший способ получения всех учетных записей с соответствующими категориями.

  1. Аккаунт микросервис совершает звонок в категорию микро сервис
  2. Шлюз выполняет синхронный вызов микросервису учетной записи, затем перебирает эти учетные записи, чтобы выполнить вызов микросервису категории для получения каждой соответствующей категории
  3. Поместите пункт 2 в новый агрегирующий микро сервис
  4. Как-то иначе?

Спасибо

1 Ответ

0 голосов
/ 23 июня 2018

Краткий ответ: 4 - Как-то иначе.

Проблема, с которой вы столкнулись, является прямым следствием того, как вы разработали свои микросервисы. Обычно (это, конечно, зависит от варианта использования), это плохая идея , чтобы сервисы были сервисами "CRUD" для разных объектов без какой-либо бизнес-логики.

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

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

Правильный способ сделать это : Создавайте свои услуги на основе бизнес-функций, а не данных. Если для функции требуются и клиент, и категория, то они должны быть фактически вместе и образовывать «микросервис» с соответствующей функцией (на самом деле вы ее не упоминали).

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

...