【问题标题】:Benefits of JVM atop an OS VM?JVM 在 OS VM 上的好处?
【发布时间】:2009-11-03 04:22:56
【问题描述】:

我看到许多部署中,IT 团队只在虚拟机(vmware 和 c)实例中运行 JVM 应用程序堆栈。

我想我认为 JVM 是一个正式的 VM:在另一个 VM 中运行您的 Java 应用程序堆栈有什么真正的好处?

【问题讨论】:

    标签: operating-system jvm vmware sysadmin


    【解决方案1】:

    同一台(真实或虚拟)机器中的两个 JVM 实例不会彼此完全隔离:它们不能都有侦听同一个已知编号端口的套接字,如果它们可能会相互干扰两者都写在同一个文件系统中,依此类推。

    使用操作系统级别的虚拟机(vmware 或其他)确实可以保证您在物理上独立的系统上获得尽可能多的隔离,这是完全不同的主张。

    【讨论】:

    • 真正出于好奇提出疑问,对于端口冲突,您为什么不使用虚拟网络接口而不是整个操作系统本身?
    • @Xepoch,如果您只需要隔离某些特定方面(网络,或文件系统,或其他特定设备等),并且可以获得专门针对这些方面的轻量级解决方案你关心,那太好了;但是一旦你开始堆积多个这样的单点解决方案,轻量级方面很快就会消失,而操作系统级虚拟化可以保证以一个固定、合理的价格提供“所有你可以吃的”隔离解决方案的自助餐!-)
    • 我正在考虑我的下一个项目,以在操作系统级别限制 JVM 资源来做同样的事情:)
    【解决方案2】:

    这是一个不幸的术语冲突

    这实际上是两个不同的术语,不幸的是使用相同的英文单词,但只有相当抽象的联系。

    IBM 首先使用了“虚拟机”这个词,所以我想我们不能把它重命名为“虚拟服务器”什么的。

    太糟糕了,“软件框架”的首字母没有 VM。如果您以这种方式考虑 JVM,那么很明显您实际上只是在 VM 中运行一个框架,而不是同类事物中的一个事物...

    所以一个真正的虚拟机可以随便放弃超级用户 shell 帐户、ssh 访问、软件安装权限......

    【讨论】:

    • 是的,叫我老,但在这种情况下,在我的命名法中,VM 仍然是虚拟机
    【解决方案3】:

    在另一个 VM 中运行您的 Java 应用程序堆栈有什么真正的好处?

    通过这样做,您的 JVM 将在虚拟化硬件上运行,您可以修改并与其他虚拟机并行运行。这是将大型服务器分割成“共享”的好方法,您可以按需分配。

    (编辑:我在此答案中直接回答 OP 的评论)

    我明白你的意思,但为什么不能像主机操作系统上的单独进程一样做同样的事情?

    我可以提到来宾可能会运行另一个操作系统,但这不是最重要的部分。正如另一个答案所指出的,最大的区别在于虚拟机与其他虚拟机隔离,它是真正的专用环境。端口的东西是一个很好的例子,但我更喜欢这样说明:另一个进程不会占用 "your" CPU 周期。这是一个非常重要的区别,尤其是对于通常不喜欢共享资源的 IT 团队而言。相反,您可以根据需要(可能是动态地)精确调整虚拟机的大小,并根据 IT 团队的实际使用情况计费。这就是 IMO 使资源相互化成为可能的原因(从而降低了成本)。

    【讨论】:

    • 我明白你的意思,但为什么不能像主机操作系统上的单独进程一样做同样的事情呢?
    • 我已经在我的回答中回答了这个问题
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 2011-04-03
    • 2011-05-10
    相关资源
    最近更新 更多