Микросервисы: совместное использование данных против состава API

#microservices

#микросервисы

Вопрос:

чтобы дать вам немного контекста, я разрабатываю игру, онлайн футбольный менеджер, и у меня есть следующие микросервисы:

  • Клубы
  • Сезон

Clubs Микросервис заботится об управлении клубом и Season отвечает за управление сезоном.

Одна из обязанностей Season службы — возвращать турнирную таблицу лиги с названиями клубов и их позициями. В Season сервисе я сохраняю только club_id , но для выполнения запроса на возврат турнирной таблицы мне также понадобится название клуба, которое находится в Clubs сервисе.

Теперь я мог бы реализовать конечную точку REST в Clubs службе, чтобы вернуть название клуба, но эти службы больше не будут слабо связаны.

Как я видел из своих показаний, у меня есть 2 варианта, и они:

  • Имейте clubs кеш в Season службе, где он устанавливает связь между club_id и club_name (может быть таблицей базы данных). В этом случае данные будут дублироваться (что нормально для большинства случаев), но мне нужно синхронизировать события домена, отправляемые Clubs Службой.
  • Другим вариантом может быть создание другого микросервиса, который будет использоваться в качестве шаблона композиции API. Таким образом, этот API будет получать данные из обеих служб, обогащать ответ и отправлять обратно вызывающему абоненту.

Теперь я сомневаюсь, какой подход следует избрать. У какого из них меньше недостатков?

Ответ №1:

Оба описаны в шаблоне Saga. Есть плюсы и минусы обоих. Вы должны выбирать на основе ваших NFRS.