类似的问题,“在同一台服务器上拥有多个 tomcat 实例是否有意义?”但在这种情况下,Tomcat 是在虚拟机上运行的。
我知道答案可能是“视情况而定”,但我想探讨这个问题。什么时候有意义? VM 的具体注意事项是什么?
我听到的原因: 1) JVM 在某种程度上限制了它们使用可用资源的能力。所以分配多个tomcat实例会更好的利用资源。不确定这是一个很好的理由。这是曾经正确但不再正确的事情之一吗? 2)如果一个tomcat实例出现故障,另一个可以接管。
缺点: 当您有多个版本且复杂性更高时,开销会更多。
如果我们需要负载平衡,将第二个 tomcat 放在另一个 VM 中是否“更好”?
最佳答案
如果您可以选择,则首选不同的 VM。您仍然可以获得您提到的多个 JVM 的所有资源利用优势。您还可以获得没有单点故障的冗余;您的 VM 崩溃不会导致集群中的每个节点都崩溃。
如果您必须使用一个 VM,则在使用一个 tomcat 实例与多个实例时要考虑的事项是:
- 应用是否需要不同的重启/备份/要求?您不希望卡在一个实例上,并且在其他应用程序应该继续运行时不得不为一个应用程序重新启动它。
- 在 tomcat 中运行的应用程序是否需要直接相互通信(访问对象实例、配置设置等)?远程通信始终是可能的(首选),但我见过 WAR 旨在与同一 tomcat 实例上的其他 WAR 对话。
可能的情况是您会受到上述任何一项的约束,您可以做任何您认为最适合您的事情。我的首选顺序如下:
- 单独的虚拟机
- 相同的虚拟机,相同的 tomcat
- 相同的虚拟机,不同的 tomcat
按此顺序排列 2 和 3 只是因为我不想管理不必要的事情。一个 tomcat 比 2 个或更多更容易。但最好的分离是在服务器级别。
关于java - 在 VM 上部署更多 Tomcat 实例是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218306/