我正在一个 Spring Java EE 应用程序中工作,该应用程序必须处理两个不同的数据源 A 和 B。
因为应用程序需要以一致的方式更新 A 和 B。如果一次更新失败,则整个过程都会失败,必须进行回滚。
我对如何实现应用程序有两种不同的想法:
- 我必须将这两个更新都包含在分布式事务 XA 中。这种方法在性能方面会很昂贵。此外,B 源将很快关闭,保持整个 XA 基础设施可能是一个瓶颈;
- 我可以设置从 db A 到 db B 的 Oracle DB 链接,并让我的应用程序相信它只使用单个数据源和本地事务,而 Oracle 处理更新同步。当 B 将被关闭时,我将简单地删除 B 更新并关闭 DB Link。
对于这两种情况,你怎么看?