同一个JBoss服务器上有多个服务?
我们正在开发一些将在JBoss上运行的新服务,并且可以通过REST API-s访问。这些将是捆绑到EAR文件中的Java应用程序。将这些服务部署到同一台JBoss服务器是否是一种好的做法?同一个JBoss服务器上有多个服务?
这将简化开发,部署和测试。
不确定是否有任何重大缺陷。会有有限的内存,应用程序将不得不分享?在这种情况下,部署到单独的服务器会更好吗?一个应用程序可能导致其他应用程序崩溃(即:通过占用所有内存)?
您可以在一个应用程序服务器实例上部署多个服务,并且据我所知这是最常见的情况:appservers倾向于需要相当多的资源,每个应用程序都部署大量应用程序会严重增加资源解决方案的使用。
这些应用程序将共享可用内存和一个jvm,并且一个应用程序中的错误可能会导致服务器关闭。因此,您将需要监督应用程序服务器堆以及其他一些“重要事项”。您可以使用jconsole(JDK的一部分)手动执行此操作,也可以使用优秀的hyperic等工具自动执行此操作。 Hyperic本身btw基于一个JBoss服务器。
如果您的应用程序驻留在同一台服务器上,则会遇到共享资源问题并减少可用于扩展服务的粒度。
下面是一个简化的例子:假设你的服务器有4GB的RAM可用于应用程序。服务1需要2GB的RAM,而服务2和3则需要1GB。如果您在Service 3上获得大量流量,则部署更多容量的唯一直接方式是启动一个新服务器,尽管服务1和服务2的大部分内存不会获得大量流量,但大部分内存专用于服务1和服务2。
约束可能实际上是RAM,CPU或IO。事实是,如果您一起部署多个服务,则在扩展时会限制灵活性。
在您的情况下,这是否是一个实际问题是您需要确定的。