【问题标题】:Multiple services on same JBoss server?同一个 JBoss 服务器上有多个服务?
【发布时间】:2010-12-05 15:56:23
【问题描述】:
我们正在开发一些将在 JBoss 上运行并可由 REST API-s 访问的新服务。这些将是捆绑到 EAR 文件中的 Java 应用程序。将这些服务部署到同一个 JBoss 服务器是一个好习惯吗?
这将简化开发、部署和测试。
不确定是否有任何大的缺点。应用程序必须共享的内存是否有限?在这种情况下,部署到单独的服务器会更好吗?一个应用程序是否会导致其他应用程序崩溃(即:通过占用所有内存)?
【问题讨论】:
标签:
architecture
deployment
rest
jboss
soa
【解决方案1】:
您可以在一个应用程序服务器实例上部署多个服务,据我所知,这是最常见的情况:应用程序服务器往往需要相当多的资源,在加载一个应用程序的情况下部署大量资源会严重增加资源使用率解决方案。
这些应用程序将共享可用内存和一个 jvm,一个应用程序中的错误可能会导致服务器停机。因此,您将需要监督应用程序服务器的堆以及其他一些“生命”。您可以使用 jconsole(JDK 的一部分)手动完成,也可以使用出色的 hyperic 等工具自动完成。顺便说一句,Hyperic 本身是基于 JBoss 服务器的。
【解决方案2】:
只要您的应用程序驻留在同一台服务器上,您就会遇到共享资源问题并降低您扩展服务的粒度。
这是一个简化的示例:假设您的服务器有 4GB 的 RAM 可供应用程序使用。服务 1 需要 2GB 的 RAM,而服务 2 和 3 各需要 1GB。如果您在 Service 3 上获得大量流量,部署更多容量的唯一直接方法是启动一个新服务器,其中大部分 RAM 专用于 Service 1 和 Service 2,即使它们没有获得太多流量。
约束实际上可能是 RAM、CPU 或 IO。事实上,如果您一起部署多个服务,则会限制您在横向扩展时的灵活性。
您需要确定这是否会成为您的实际问题。