Использование одной базы данных для двух или более микросервисов само по себе является противоречием.Предполагается, что микросервис является автономным, то есть он не должен совместно использовать одну и ту же базу данных с другим микросервисом.
Если вам нужно ссылаться на user-id
, например, в двух службах, этот идентификатор будет храниться только в том случае, еслиэто целое число, строка или любой другой тип ключа.
Ваша вторая база данных не сможет проверить существование этого внешнего ключа, поскольку она не знает о таблице, в которой находятся Users
хранится в.
Если вы действительно хотите использовать микросервисы, вам нужно создать один контекст db для каждого сервиса, который имеет свои собственные миграции и собственную базу данных.
Если вы по-прежнемуЕсли вы хотите использовать одну и ту же базу данных, вы можете создать множество DbContexts , которые фактически указывают на одну и ту же базу данных, но определяют только набор сущностей.
В общем, существуют разные уровнидомен привод-дизайн.Вы можете сделать доменное проектирование без микросервисов и даже без распределенных систем.Ключевые слова, такие как Aggregates
, Commands
и Events
, Distributed Systems
, являются частью domain-driven-design
.
Некоторые ресурсы, которые можно прочитать о domain-driven-design
https://stackoverflow.com/a/1222488/5397642
https://martinfowler.com/bliki/DDD_Aggregate.html
https://medium.com/withbetterco/using-aggregates-and-factories-in-domain-driven-design-34e0dff220c3
https://dev.to/designpuddle/apps--microservices--what-you-need-to-know-autonomy-and-the-challenges-you-will-face-39e1