【问题标题】:Atomikos - Unique resource namesAtomikos - 唯一的资源名称
【发布时间】:2020-06-12 05:56:26
【问题描述】:

我们有一个使用 spring boot 的 Java 微服务项目,想知道以下属性是否必须在集群中的服务器之间是唯一的,根据博客文章 https://fogbugz.atomikos.com/default81d0.html?community.6.2225.7

应用基于

Spring Boot - 1.5.12.RELEASE
春季 - 4.3.16.RELEASE
球衣 - 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

【问题讨论】:

  • 您是在 Spring Boot 应用程序中使用 Atomikos internal 还是单独部署了 Atomikos 实例?
  • Atomikos 在 Spring Boot 应用程序内部。
  • 您不必关心名称,因为每个节点都有一个事务管理器。
  • 很高兴知道。如果每个节点上有多个使用 Atomikos 的 Spring Boot 微服务应用程序,那么这意味着这些应用程序的上述三个属性值应该是唯一的,对吗?
  • 没错。如果 Atomikos 事务管理器是共享的,使用它的每一方都需要一个唯一的 id

标签: spring jpa unique atomikos


【解决方案1】:

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

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

男人

【讨论】:

    【解决方案2】:

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

    只有当 Atomikos 事务管理器被共享时,使用它的每一方都需要一个唯一的 ID。

    【讨论】:

      【解决方案3】:

      这是我最近遇到的。

      简短的回答是:是的,每个 JVM 的唯一部分必须是唯一的。

      理由: 在我的例子中,这个问题只在重负载下出现,并且特别难以重现。然后注意到生成的 XID(事务 ID)基于自 EPOC 以来的纳秒数,前缀为 tm_unique_name。我们有 4 个应用服务器实例,每个实例都使用相同的 tm_unique_name。在重负载下,我们会看到交易不再有效的非常偶然的失败。
      由于基于时间的元素,有多个实例创建了当时使用相同 XID 进行中的事务,这是有道理的。当一个被提交到数据库时,其他具有相同 XID 的状态变得不确定。

      解决办法: 使每个 JVM 的唯一值唯一。

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

      【讨论】:

        猜你喜欢
        • 2019-07-01
        • 2020-08-30
        • 2015-06-12
        • 2012-01-17
        • 1970-01-01
        • 2014-04-12
        • 2014-12-24
        • 2013-02-22
        • 1970-01-01
        相关资源
        最近更新 更多