【问题标题】:How to migrate a running Java program from one machine to another? [duplicate]如何将正在运行的 Java 程序从一台机器迁移到另一台机器? [复制]
【发布时间】:2013-04-09 04:22:04
【问题描述】:

假设我有一个 Java 程序在机器 A 上运行,现在我想中断它,保存它的上下文并在机器 B 上恢复它的执行。可以这样做吗?怎么样?

【问题讨论】:

  • 只需将类文件复制到另一台机器即可。
  • “迁移”到底是什么意思 - 您只是想复制应用程序(您可能需要将其关闭)并在另一台机器上启动复制,还是您在谈论类似 vmware vmotion 的东西?
  • 嗨@radai,很抱歉一开始就把它弄糊涂了。是的,我的意思是像 VMWare VMotion 这样的东西。
  • @Sudhanshu 那会保存状态吗?
  • 嗨@user93353,谢谢,我正在阅读那篇文章。

标签: process jvm runtime java


【解决方案1】:

不,没有什么好的方法可以“冻结”一个进程并在另一台机器上“恢复”它,该进程可能会持有你无法移动的各种状态(打开的文件/套接字等)。

如果它是一个应用程序,您正在编写它以使其可集群化,然后在目标机器上启动另一个节点,等待这 2 个节点同步并关闭您的原始节点。

如果它不是您正在编写的应用程序或上述内容过多,请在 VM 中运行您的应用程序,并使用 VM 的功能迁移整个 VM 及其中正在运行的应用程序(因此,只需使用 vmotion)。

【讨论】:

    【解决方案2】:

    您可能会尝试这样的事情 - 您中断程序的点,只需序列化其所有属性/对象并设置一个标志以指示它可以重新开始执行的点。现在将序列化的东西复制到另一台机器并启动程序。您的代码应该能够处理正确存储(序列化)程序状态的条件,并在其他机器上启动该类时从该点继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多