【问题标题】:High availability of Standalone Java Multi threaded application独立 Java 多线程应用程序的高可用性
【发布时间】:2015-01-28 16:32:06
【问题描述】:

我们使用的是没有 WEBSERVER 的 Core Java APP,它是多线程的。我们有一个要求,我们的应用程序要在客户环境中高度可用。 我们应用程序中的所有事务主要基于 ActiveMQ(Java 消息传递服务 TCP 连接),即我们使用消息队列与其他应用程序通信。我们也有 HTTP 连接 对于 ActiveMQ 的高可用,我们在 Master/Slave Configuration(Active/Passive) 中实现了它 为了我们应用程序的高可用性(主动/主动),我们考虑部署两个应用程序实例,它们将并行使用消息, 但是这个实现将排除我们保留消息的内部特性。只有当它们被处理时,我们才会确认来自 ActiveMQ 队列的消息。 因此,运行两个实例可能会导致相应消息的进程重复。

请就如何使我们的应用程序高度可用提供建议。 就地负载均衡器能解决我们的问题吗?还, 我们是否必须将我们的核心 Java 应用程序转换为服务?

提前致谢

【问题讨论】:

  • 保留消息到底是什么意思?
  • 保留消息意味着将消息保留在活动的 mq 消息队列中,直到它被处理。
  • 啊,这应该不是问题,已经发布了答案

标签: java windows-services activemq


【解决方案1】:

每当您想要应用程序的高可用性时,如果您的应用程序的高可用性直接取决于 ActiveMQ 的高可用性,那么您真正应该做的是,拥有一个 App 实例和多个 ActiveMQ 实例,

这样做的目的是,即使 ActiveMQ 的一个实例出现故障,其他实例也可能接管(典型的主从配置)并且 App 将按预期运行。

这种拓扑结构也不会导致重复消息处理,因为在任何时候只有一个 ActiveMQ 实例与您的应用关联。

对于负载平衡,您可以在这里查看(如果它符合您的要求)。

希望这会有所帮助!

祝你好运!

【讨论】:

  • 感谢 vihar 的回复。我们已经实现了主动 mq 主从配置。但是现在我们希望我们的应用程序被配置为主从。请提供解决方案
  • 是的,负载平衡和故障转移是您所需要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
相关资源
最近更新 更多