Как правильно сохранять данные из микросервисов в единую БД?
Есть архитектура:
1) Микросервис на Flask
2) Микросервис с БД
3) Микросервис на python
4) Микросервис на go
5) Брокер очередей
Веб приложение (Flask) используется для отображения информации из БД, в которую складируют данные каждый микросервис и само web приложение. Как правильно и менее ресурсоемко (для меня) сделать работу с данными из БД:
1) В каждом микросервисе подключить ORM и с помощью него сохранять или читать данные из БД (слишком трудозатратно, требуется поддержание схемы БД на каждом микросервисе в актуальном виде),
2) В каждом микросервисе сохранять данные в БД с помощью сырых запросов (кроме FLASK, там алхимия),
3) Во Flask сделать API методы, для сохранения данных в БД, из микросервисов обращаться к БД через это API,
4) Поднять для обращения к БД еще один микросервис с FastAPI и сделать на нем API для всех запросов,
5) Сделать еще один микросервис для общения с БД, но передавать данные в него через брокер.
Не надо лишней лирики вроде здрасти/спасибо. Пишите по делу. См.п.3.4 Регламента.
Если нет кода python, то при чём тут тэг Python? См.п.3.1 Регламента.
Если ваши микросервисы будут иметь общее состояние в одной БД, и работать с этим состоянием через СУБД, то это не микросервисы, а монолит. Вам лишь будет казаться, что это микросервисы. Тем более что вы сказали, что вам важно следить за схемой данных, видимо она не зафиксирована один раз на веки вечные (и это нормально).
Либо разносите данные по разным БД для разных сервисов, либо обращайтесь к этим данным через один сервис (видимо это ваш 5-й вариант, только я не совсем понял что вы имеете в виду под "брокером").