Архитектура базы данных микросервисов - PullRequest
0 голосов
/ 04 мая 2020

У меня вопрос об архитектуре микросервиса

, например, если у меня есть два микросервиса "UserService" и "TaskService"

, и у меня есть база данных для моей системы с двумя таблицами "USER" и "ЗАДАЧА"

Мы знаем, что одно из правил микросервисов заключается в том, что каждый микросервис имеет свою собственную базу данных

Так что я не знаю, как распределить свою базу данных для этих двух микросервисов?

  1. установить для базы данных для микросервиса "UserService" две таблицы "USER" и "TASK"

и установить для базы данных для микросервиса "TaskService" также две таблицы " ПОЛЬЗОВАТЕЛЬ "и" ЗАДАЧА "

или

установить для базы данных для микросервиса "UserService" таблицу "USER"

и установить для базы данных для микросервиса "TaskService" таблицу "TASK", но проблема здесь заключается в том, как свяжите две таблицы «USER» и «TASK», поскольку каждая из них находится в отдельной базе данных

1 Ответ

0 голосов
/ 04 мая 2020

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

Потому что таким образом вы увеличите сложность и задержку системы.

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

Таким образом, пользовательский сервис будет иметь свой собственный стол, а также обслуживание задач. Если в пользовательском сервисе есть сценарий использования, которому нужна информация о сервисе задач или наоборот. Вы можете сделать запрос от исходной службы к целевой службе, чтобы получить эту информацию, или, если вам действительно необходимо разделить их, и / или у вас есть требования к производительности, тогда решением может быть наличие таблицы только для чтения с другой информацией службы, которую вы нужно и обновить его, подписавшись на изменения владельца таблицы, например, с помощью kafka или другого брокера сообщений

...