我們正在開發一些將在JBoss上運行的新服務,並且可以通過REST API-s訪問。這些將是捆綁到EAR文件中的Java應用程序。將這些服務部署到同一臺JBoss服務器是否是一種好的做法?同一個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。事實是,如果您一起部署多個服務,則在擴展時會限制靈活性。
在您的情況下,這是否是一個實際問題是您需要確定的。