我在我正在开发的系统中有一些问题。我有一个python脚本,它首先与虚拟化软件一起工作,如果该操作成功,它会将内容写入数据库。如果在虚拟化软件中发生了一些异常,那么我可以管理所有的东西,但是如果插入数据库失败,真正的问题就会发生。如果插入失败,我将不得不还原虚拟化软件中内容,否则将变得异步。但问题是,恢复该软件中的内容并不总是可能的。
如何处理才能使数据库与该软件保持同步?是否有中间件或特殊应用程序?或者在编程中有什么逻辑?
发布于 2011-06-27 22:10:25
您需要在系统中执行两个操作(在virt中执行OP: operation。软件;WDB:写入数据库)是原子的(两个都发生,或者都不发生)。一种分布式事务,但您的虚拟化软件不直接支持可处理的行为(无回滚)。如果你能让它们成为某个分布式事务系统的一部分,你就完成了(参见eg),但这通常是不可能的或不切实际的。实现伪事务行为的不同策略取决于您的场景的具体情况。下面是一些例子:
只有当您写入DB的内容不依赖于OP操作时才是可行的(不太可能)。
(步骤4-5可以切换)这将是一个糟糕的“两阶段提交”实现。只有当你能将你的操作分成这两个阶段时才是可行的。
这将检查DB是否可操作,在尝试实际操作和写入之前执行一次虚拟写入。可行,但不是万无一失。
听起来很可悲。但有时这是唯一可行的方法。
https://stackoverflow.com/questions/6493758
复制相似问题