В настоящее время я работаю с унаследованной системой, состоящей из нескольких служб, которые (среди прочего) обмениваются данными через какую-либо шину Enterprise Service Bus (ESB) для синхронизации данных.Репликация данных в Micro Services: восстановление резервной копии базы данных
Я хотел бы постепенно работать в этой системе в направлении архитектуры микросервисов. Я планирую уменьшить зависимость от ESB и использовать больше брокер сообщений, таких как RabbitMQ или Kafka. Из-за ограниченности ресурсов/существующих технологий я не думаю, что смогу полностью избежать репликации данных между службами, хотя я должен четко определить единую службу как владельца данных.
Что мне сейчас интересно, как я могу безопасно восстанавливать резервную копию базы данных для одной службы, когда это необходимо? Это приведет к тому, что служба будет не синхронизирована с другими службами, в которых хранятся реплицированные данные. Любой опыт/предложение по этому поводу?
«восстановление, применяемое к первичной базе данных, будет распространено на все другие сервисы» -> не могли бы вы рассказать об этом немного больше? Как мне настроить приложение для обнаружения изменений, применяемых при восстановлении базы данных? – habsq
@habsq Не зная специфику используемой вами базы данных, это немного сложно. В большинстве баз данных вы можете определить триггеры после фиксации, которые будут срабатывать при возникновении мутации. Затем вы можете испускать свои события из триггера. Некоторые базы данных (например, Oracle) предоставляют механизм преобразования репликации, который работает одинаково, используя шаблон публикации-подписки для каждой мутации базы данных для распространения реплицированных данных. –
Спасибо за объяснение! Я отмечаю это как ответ, потому что, по крайней мере, это дало мне частичное решение. Проблема в том, что некоторые из сервисов (и их баз данных) развернуты в PaaS, что означает, что настройка базы данных на публикацию событий, когда мутация происходит, невозможна. – habsq