【问题标题】:Java application and high availabilityJava 应用程序和高可用性
【发布时间】:2016-06-27 13:20:03
【问题描述】:

我有一个 Java 应用程序,我需要它具有高可用性。 我在想FastMPJ,比如在不同的 PC 上运行多个实例。应用程序每分钟都会检查主实例是否正在运行,如果没有,则另一个将代替它运行。

我想问一下这是否是一个好的解决方案,或者是否有更好的解决方案。

【问题讨论】:

  • 所以应用就像一个服务器,但不使用现有的服务器基础设施?
  • 如果我猜对了,关键是如果存在客户端,则始终拥有正在运行的服务器。但这意味着它必须有某种监听器来接收检查。那么为什么不让它在主服务器上运行呢?是否有多个“主服务器”?
  • 请查看给出链接stackoverflow.com/questions/11904299/…的类似问题
  • @Thomas 没有任何现有的服务器基础架构

标签: java high-availability


【解决方案1】:

更通用的解决方案是使用负载均衡系统,即:您有 N 个应用程序实例以相同的权限运行(如果可能在不同的硬件上),然后前面的冗余负载均衡器选择其中一个这些基于每个请求/任务的实际负载。

这个方案的好处很明显,硬件是实际使用的,不会闲置在什么地方,等待 0.01% 的情况下跳进去。然后实例一直在实际测试,到时会报错它们会发生(例如硬件故障),并且您会阻止:“哦……备份甚至无法正常工作”。最重要的是,您可以自适应地平衡机器之间的负载。

【讨论】:

    【解决方案2】:

    在我的一个项目中,在实施交换时,我们使用 Apache Qpid 来实现高可用性,我的体验非常令人满意。它的扩展性也很好。我一直在运行多达 32 个节点集群的应用程序。请在此处找到更多详细信息,如果您需要任何进一步的信息,请告诉我: http://qpid.apache.org/releases/qpid-0.18/books/AMQP-Messaging-Broker-Java-Book/html/High-Availability.html

    希望对你有帮助:)

    【讨论】:

      【解决方案3】:

      人们经常忘记,从应用程序到数据库也必须具有高可用性。根据我的经验,数据访问层是大多数应用程序瓶颈发生的地方。因此,请确保您有一个良好的应用程序感知数据库负载均衡器。 Oracle 有一个可靠的解决方案,但仅适用于 Oracle 数据库。 PostGres 有一个开源版本。 Heimdall Data 是一种商业解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-09
        • 2020-09-06
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 2013-11-11
        • 2014-12-28
        相关资源
        最近更新 更多