Совместное использование баз данных между микро-сервисами с Django rest framework - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть два проекта API REST django, которые я разделил на архитектуру микро-сервисов, один из сервисов (SSO), который обрабатывает аутентификацию ( Я использую аутентификацию на основе токенов JWT ) и управляюИнформация о пользователях, а другая - это служба начисления заработной платы.

Проблема в том, что user имеет отношение к какой-либо модели в системе начисления заработной платы.Если быть точным, у меня есть класс Employee в системе начисления заработной платы с полем user_id.Здесь я добавлю пользователя UUID, который я получу от запроса службы SSO.

Как я могу совместно использовать базу данных между микро-службами, учитывая, что каждая служба имеет свою собственную базу данных.

1 Ответ

0 голосов
/ 25 сентября 2018

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

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

...