即使服务器中途失败,如何可靠地确保更新本地和远程数据副本

时间:2014-08-04 20:22:19

标签: java transactions message-queue rollback distributed-transactions

这是一个基础设施问题。我有一个Java Web应用程序,允许用户进行“交易”。此事务首先调用远程服务并在那里更新信息,一旦从远程服务接收到ack,表示信息已在那里成功更新,它将执行一些本地计算并将事务记录在本地数据库中。

所以我的问题是,如果远程服务记录了更改会发生什么,但不知何故我的服务器无法计算并将其记录在本地数据库中?假设远程服务完成时但在本地更新发生之前电源正常关闭。然后,远程数据和本地数据之间存在不匹配,并且违反了一致性。我该如何处理这种情况?

此外,是否有任何开源工具等可以帮助我解决这个问题?例如,假设解决方案是使用基于日志的回滚机制,我不愿意自己实现这一点。

提前感谢您的帮助! :)

1 个答案:

答案 0 :(得分:2)

您是否尝试过XA交易?看看这个页面: http://java.dzone.com/articles/xa-transactions-2-phase-commit