微服务中的数据复制:恢复数据库备份

Data replication in Micro Services: restoring database backup

我目前正在使用一个由多个服务组成的遗留系统,这些服务(除其他外)通过某种企业服务总线 (ESB) 进行通信以同步数据。

我想逐步把这个系统往微服务架构的方向发展。我计划减少对 ESB 的依赖并使用更多消息代理,如 RabbitMQ 或 Kafka。由于某些 resource/existing 技术限制,我不认为我能够完全避免服务之间的数据复制,即使我应该能够明确地将单个服务定义为数据所有者。

我现在想知道的是,如何在必要时安全地对单个服务进行数据库备份还原?这样做会导致该服务与保存复制数据的其他服务不同步。 experience/suggestion 对此有何看法?

每次发生数据库变更时,让您的主数据库发布事件,并让复制服务订阅此事件并对它们的复制数据应用相同的变更。

您已经使用了消息代理,因此您可以利用现有堆栈来广播事件。通过事件完成复制,应用于主数据库的恢复将传播到所有其他服务。

根据备份的规模,其他服务上的数据会在短时间内过时。对于您的用例,这可能会或可能不会被接受。将陈旧视为某种最终一致性模型。