У меня есть микросервис для бэкэнда, который поддерживается Postgres. У меня также есть микросервис для функции в приложении - чаты (приложение для обмена сообщениями), похожее на Instagram, например.
Причины, по которым у меня есть другой сервис для функции чатов:
Я хочу зафиксировать асинхронные коммиты для таблицы сообщений (а также других связанных таблиц, таких как разговор). таблица, таблица беседы_участников и т. д. c.). Поправьте меня, если я ошибаюсь, но я не могу сделать некоторые запросы асинхронными, в то время как другие должны быть синхронными. Это или то или это. Поэтому мне нужна отдельная БД для функции чата.
** Я мог бы использовать что-то вроде SET LOCAL synchronous commit TO OFF:'
для каждого запроса, но я предполагаю, что это не будет очень мудрым и небезопасным.
Снижение нагрузки от микросервиса главного бэкэнда.
Проблема:
В моем основном микросервисе, У меня есть таблица с именем user_relations
, в которой я могу определить, заблокировал ли пользователь какой-либо другой пользователь. Очевидно, это то, о чем должен знать микросервис Chat, поэтому пользователи не смогут отправлять сообщения людям, которые их заблокировали. Но как микросервис Chat может получить доступ к этим данным? Должен ли я сохранить копию таблицы uer_relations, а затем с каждым изменением основной службы отправлять запрос gRP C в службу чата, чтобы соответствующим образом обновить свою собственную таблицу user_relations? Или есть лучшее решение?