我们有一个使用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问题,对吗?
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因此,从技术上讲,上述属性的值在每个节点上都应该是唯一的,如下所示,对吗?
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发布于 2020-06-12 15:39:09
您不必关心名称,因为每个节点都有一个事务管理器。
只有在Atomikos事务管理器是共享的情况下,使用它的每个方都需要一个惟一的id。
发布于 2020-06-27 10:20:04
对于启动的每个JVM,com.atomikos.icatch.tm_unique_name必须是唯一的,默认情况下它是基于IP地址的。例外:如果您有一个基于LogCloud的弹性云应用程序,那么整个“恢复域”只有一个共享名称(即弹性集群应用程序的名称)。
uniqueResourceName在每个JVM中必须是唯一的。它可以在JVM之间共享--这在集群应用程序中是典型的情况。
盖伊
发布于 2021-10-15 10:36:01
这是我最近遇到的事情。
简短的回答是:是的,每个JVM都需要唯一的部分。
理由:在我的例子中,这个问题只是在很重的情况下才经历过,而且特别难以重现。然后注意到,生成的XID (事务ID)是基于tm_unique_name前缀的自EPOC以来的纳秒数。我们有4个应用服务器实例,每个实例使用相同的tm_unique_name。在负载过重的情况下,我们会看到在事务不再有效的情况下偶尔会出现故障。
有理由说,由于基于时间的元素,不止一个实例创建了在运行过程中具有相同XID的事务。当在数据库上提交了一个时,具有相同XID的另一个(S)的状态就变得不确定了。
解决方案:使每个JVM的唯一值都是唯一的。
我希望这对某些人有所帮助,因为这需要一段时间才能得出这个结论。
https://stackoverflow.com/questions/62338343
复制相似问题