Как связать связанные данные в отдельных базах данных РСУБД микро-сервисов в типичной архитектуре микро-сервисов? - PullRequest
0 голосов
/ 02 декабря 2018

Допустим, я проектирую портал электронного обучения, где пользователь может выбрать курсы, которые он хочет пройти, а затем произвести оплату в Интернете, а затем он / она может использовать курсы. Итак, у меня есть модули, такие как 1) Курсы2) Платежи 3) Управление пользователями.Я предпочитаю проектировать 3 отдельных микросервиса, то есть a) курсы b) платежи и c) управление пользователями на основе домена.Теперь, если бы эта система была монолитной, то мы могли бы использовать внешний ключ и связать таблицы пользователей, курсов и платежей для сопоставления данных.Теперь, когда эти 3 являются разными микро-сервисами и будут иметь свои собственные базы данных, то как эти данные связаны друг с другом?т.е. если я хочу рассказать, что конкретный пользователь «Х» записался на курсы «А», «В», «С»?

1 Ответ

0 голосов
/ 02 декабря 2018

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

Предположим, что отношение между микроуслугами будет:

User Management  ->  Courses
                uses

Управление пользователями может хранить идентификаторы ресурсов ресурсов курса, связанных с пользователями.
Таким образом, у вас есть способСоедините данные двух доменов особым образом.
Если необходим другой способ зависимости (Курсы -> Управление пользователями), ничто не мешает вам выполнять ту же самую логику.

Не ваш вопрос, но важное следствие связи данных между микро-сервисами: обновление данных внешних ресурсов должно быть обработано.Потяните Нажмите ?С кешем или без?Это существенно зависит от ваших вариантов использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...