这是一个基础设施问题。我有一个Java Web应用程序,允许用户进行“交易”。此事务首先调用远程服务并在那里更新信息,一旦从远程服务接收到ack,表示信息已在那里成功更新,它将执行一些本地计算并将事务记录在本地数据库中。
所以我的问题是,如果远程服务记录了更改会发生什么,但不知何故我的服务器无法计算并将其记录在本地数据库中?假设远程服务完成时但在本地更新发生之前电源正常关闭。然后,远程数据和本地数据之间存在不匹配,并且违反了一致性。我该如何处理这种情况?
此外,是否有任何开源工具等可以帮助我解决这个问题?例如,假设解决方案是使用基于日志的回滚机制,我不愿意自己实现这一点。
提前感谢您的帮助! :)
答案 0 :(得分:2)
您是否尝试过XA交易?看看这个页面: http://java.dzone.com/articles/xa-transactions-2-phase-commit。