加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java EE / EJB vs Spring用于具有多个DB群集的分布式事务管理

发布时间:2020-12-15 02:31:07 所属栏目:Java 来源:网络整理
导读:我需要生成一个原型(在与J2EE兼容的J2EE应用程序服务器中运行),演示如下 展示在全球不同站点的多个数据库上分发事务的能力(应用程序托管数据复制) 展示从多个位置的多个数据库集群中选择将事务写入数据库的能力.选择要写入的数据库取决于用户位置. (数据库管
我需要生成一个原型(在与J2EE兼容的J2EE应用程序服务器中运行),演示如下

>展示在全球不同站点的多个数据库上分发事务的能力(应用程序托管数据复制)
>展示从多个位置的多个数据库集群中选择将事务写入数据库的能力.选择要写入的数据库取决于用户位置. (数据库管理数据复制)

我可以选择Spring堆栈或Java EE堆栈(EJB等).了解您对哪个堆栈更好地支持多个数据库集群上的分布式事务更有用.

如果可能的话,您是否也可以请您指出您认为如何使用两个堆栈中的任何一个来实现上述内容的任何资源.我认为看到两者的例子将有助于理解它们的工作方式,并可能更好地决定使用哪个堆栈.

我在Google上搜索了很多网站,但大多数网站似乎已经过时(即前EJB 3和Spring 3之前)

谢谢

解决方法

我将通过以下方式使用JavaEE堆栈:

>为每个数据库服务器配置XA DataSource
>根据用户的位置,无状态EJB查找相应的DataSource并从中获取连接
>当将事务广播到所有服务器时,无状态EJB必须迭代所有已配置的DataSource以对它们执行一个或多个查询,但是在单个事务中

如果发生技术故障,事务将在所有相关服务器上回滚.如果出现业务故障,代码可以通过context.setRollbackOnly()触发回滚.

这样,您首先从JavaEE自动分布式事务划分中受益,然后如果需要手动管理事务,则可以使用更复杂的模式.

但是,您在事务中登记的服务器越多,两阶段提交操作的持续时间就越长,而且系统之间的延迟时间也很长.我怀疑MySQL是执行此类复杂分布式事务的最佳关系数据库实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读