Должен ли доступ к общей базе данных в приложении осуществляться через один микросервис? - PullRequest
0 голосов
/ 28 мая 2020

Рассмотрим пример приложения APP . Он состоит из микросервисов A , B и C и общей базы данных № SQL mon go. Эти микросервисы совершают вызовы API друг к другу и говорят, что приложение APP завершает каждую транзакцию в качестве координирующих действий между этими сервисами. На протяжении каждой транзакции каждая служба A, B и C в какой-то момент требует чтения и записи данных из одной или нескольких коллекций общей базы данных.

Если приложение APP ограничивает доступ к базе данных только одной службой, например, A , и делает другие микросервисы B и C доступ к базе данных через A , так что есть единственный шлюз к общей базе данных и только одному микросервису разрешен доступ к базе данных. ИЛИ Должен ли каждый микросервис A , B и C иметь независимый доступ к базе данных?

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

1 Ответ

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

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

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

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

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

Вы должны просто обслуживать свои ресурсы с надлежащим контрактом между компонентами.

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