【发布时间】:2012-01-28 10:15:07
【问题描述】:
是否可以复制完整的 JVM,并且在故障转移的情况下只需将负载转移到复制的 JVM?
如果是,那我们该怎么做呢?
【问题讨论】:
-
JVM 的故障转移,听起来太复杂了:),但希望其他人知道。
标签: java jvm replication failover
是否可以复制完整的 JVM,并且在故障转移的情况下只需将负载转移到复制的 JVM?
如果是,那我们该怎么做呢?
【问题讨论】:
标签: java jvm replication failover
理论上是的,但主要问题是您的应用程序会慢得多(比如 100 到 1000 倍),这就是让大多数人无法进行完整复制的原因。
相反,您需要生成重要信息的数据流,例如所有输入或输出消息(或两者)并将其发送到第二台机器并根据现有数据重新构建状态。
顺便说一句:当您失去与服务器的 TCP 连接时,必须关闭这些连接并重新连接。这些不是透明的故障转移。 UDP 通过没有连接来避免这个问题,但更难可靠地使用。解决这个问题的一种方法是在客户端和服务器之间有一个简单的代理/负载平衡服务器。因为它很简单,所以不太可能失败,并且它隐藏了与服务器的重新连接。不管你有一个数据中心故障,它也会消失。
【讨论】:
如果您的应用程序是 Web 应用程序,请阅读“集群”和“负载平衡”。大多数应用服务器都支持集群。
您还可以查看 JGroups,它提供了 JVM 间通信。
【讨论】:
这不是在 JVM 级别完成的事情,但是有很多产品在处理消息时处理这个问题。通常这是企业服务总线的一个特性。谷歌一下,你会得到一些想法。
【讨论】: