ИМХО, такое деление кажется излишним
Это не означает, что это невозможно сделать, но это потребует слишком много работы.
Во-первых, это похоже на антипаттерн Entity Services, ведущий к анемичным сервисам. На производительность действительно повлияет анализ большого количества сообщений и сетевое взаимодействие. Даже если один микросервис является источником правды, вам все равно придется копировать (или кэшировать) локальные данные в каждый микросервис. Если вы чувствуете, что тратите слишком много кода на службы и клиенты Rest вместо того, чтобы выполнять логику, это может быть так. Кроме того, как любой микросервис обработает один из них со сбоем?
Есть некоторые силы, которые приводят вас к более распределенной или концентрированной архитектуре.
Чтобы разделить на большее количество микросервисов:
- Различные потребности в эскалации
- Различные требования безопасности
- Разные команды разрабатывают
- Возможность отказа без ущерба для других служб
- ...
Присоединиться
- Необходимо выполнить транзакции.
- Сплоченность кода (например, страна и провинция)
- Зависимость от времени
- ...
Я не вижу никакой силы, которая заставляет вас использовать отдельные микросервисы. Хороший архитектор принимает решения, исходя из потребностей. Есть несколько альтернатив:
- Используйте модульный монолит, который можно разделить на микросервисы.
- Если вы действительно пытаетесь кодировать новый LinkedIn, вы можете разделить использование, сосредоточив внимание на поддоменах. Нравиться:
- Микросервис, который обрабатывает веб-страницу-кандидата
- Микросервис, который обрабатывает веб-страницу компании
- Общий микросервис для офферов
- В некоторых случаях может работать обычная библиотека с жестко запрограммированными данными (страны и провинции не сильно меняются).
- Сервисно-ориентированная архитектура с общей базой данных позволит вам поддерживать связь «один ко многим» с внешними ключами.
Нет ни одной хорошей архитектуры. Просто идите на компромиссы, даже если некоторые из них скоро станут явно слишком дорогими.
Рекомендую посмотреть эти видео для лучшего погружения в вопрос:
Прикрепленное видео 1 - Микросервисы, Монолит и Зомби: онлайн-дебаты от Яндекс.Практикума
Прикрепленное видео 2 - "Microservices. Как правильно делать и когда применять?", Вячеслав Михайлов