首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Atomikos -唯一的资源名称

Atomikos -唯一的资源名称
EN

Stack Overflow用户
提问于 2020-06-12 05:56:26
回答 3查看 797关注 0票数 0

我们有一个使用spring的Java项目,并且想知道以下属性在集群中的服务器之间是否必须是唯一的,就像博客发布的https://fogbugz.atomikos.com/default81d0.html?community.6.2225.7一样

App是基于

弹簧启动-1.5.12

春季-4.3.16

泽西岛- 2.25.1

活动MQ - 5.14.5

Atomikos - 3.9.3

RedHat Java - 1.8.0_191

该功能包括JDBC、JPA和JMS。

示例服务器名称: node1、node2、node3

如果下面的属性与下面所示的所有服务器相同,那么我相信它会导致事务恢复和其他可能的XID问题,对吗?

代码语言:javascript
复制
com.atomikos.icatch.tm_unique_name = myapp-tm-node
spring.jta.atomikos.datasource.unique-resource-name = myapp-db-node
spring.jta.atomikos.connectionfactory.unique-resource-name = myapp-jms-node

因此,从技术上讲,上述属性的值在每个节点上都应该是唯一的,如下所示,对吗?

代码语言:javascript
复制
com.atomikos.icatch.tm_unique_name = myapp-tm-node1
spring.jta.atomikos.datasource.unique-resource-name = myapp-db-node1
spring.jta.atomikos.connectionfactory.unique-resource-name = myapp-jms-node1

Likewise the property values ending with "node2" and "node3" on the other two servers
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-12 15:39:09

您不必关心名称,因为每个节点都有一个事务管理器。

只有在Atomikos事务管理器是共享的情况下,使用它的每个方都需要一个惟一的id。

票数 0
EN

Stack Overflow用户

发布于 2020-06-27 10:20:04

对于启动的每个JVM,com.atomikos.icatch.tm_unique_name必须是唯一的,默认情况下它是基于IP地址的。例外:如果您有一个基于LogCloud的弹性云应用程序,那么整个“恢复域”只有一个共享名称(即弹性集群应用程序的名称)。

uniqueResourceName在每个JVM中必须是唯一的。它可以在JVM之间共享--这在集群应用程序中是典型的情况。

盖伊

票数 1
EN

Stack Overflow用户

发布于 2021-10-15 10:36:01

这是我最近遇到的事情。

简短的回答是:是的,每个JVM都需要唯一的部分。

理由:在我的例子中,这个问题只是在很重的情况下才经历过,而且特别难以重现。然后注意到,生成的XID (事务ID)是基于tm_unique_name前缀的自EPOC以来的纳秒数。我们有4个应用服务器实例,每个实例使用相同的tm_unique_name。在负载过重的情况下,我们会看到在事务不再有效的情况下偶尔会出现故障。

有理由说,由于基于时间的元素,不止一个实例创建了在运行过程中具有相同XID的事务。当在数据库上提交了一个时,具有相同XID的另一个(S)的状态就变得不确定了。

解决方案:使每个JVM的唯一值都是唯一的。

我希望这对某些人有所帮助,因为这需要一段时间才能得出这个结论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62338343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档