【问题标题】:Pros and Cons of having different WARs for server and client side and deploying them in different application servers为服务器和客户端使用不同的 WAR 并将它们部署在不同的应用程序服务器中的优点和缺点
【发布时间】:2012-06-01 13:13:52
【问题描述】:

我们有一个产品,其中 UI 打包为单独的 WAR,而服务器打包为单独的 WAR 文件。现在这两个 WAR 都部署在同一个应用程序容器中。以下是我发现的这种方法的优缺点:

进行不同战争的优点: 1. 我觉得拥有两个不同的 WAR 让我可以灵活地重构 UI 或服务器端代码,而不会影响另一个。 2. 为了最大限度地利用内存,我可以将它部署在两个不同的容器中。所以如果早些时候我为整个 jboss 使用 2 GB(比如我正在使用 jboss),现在如果部署在两个中,我可能会使用 4 GB 不同的 jboss 应用服务器(当然不同的端口号) 3. 我可以扩展我的应用程序。如果明天,我看到该服务器是我的瓶颈,那么我可以创建一个服务器场,(仅适用于我的服务器模块),因为服务器本身是一个不同的 WAR,而无需担心 UI WAR。 4. 松耦合并给我各种集成点

缺点: 1. 对于 UI,我使用 primefaces。我没有看到一个用例,我可以看到像缝附加值这样的集成框架。有人能告诉我有一个集成框架是否有意义吗 为了我的 UI 战争?基本上,seam 的全部乐趣在于它提供的与 UI、EJB 等的完美集成。因此,我在这里看不到太多价值,因为我的表单会要求其余 API 完成所有处理。

有人能告诉我,多场战争是否真的有助于可扩展性和维护。例如,我看到的一个好处是,如果我有两场战争并且我需要升级服务器平台,我不需要关闭我的 UI。除了我上面列出的还有其他好处吗?

另外,我想了解如果所有内容都打包为 EAR,您将如何扩展我们架构的特定层。如上所述,如果我觉得服务器层是瓶颈,如果是一个 WAR/EAR,我将如何扩展我的应用程序?

我仍然不确定我是否需要在不同的应用程序服务器中继续使用我的不同 WAR 模型,还是应该为我的整个应用程序只使用一个 WAR?请指导...

【问题讨论】:

  • 好的,我们实际上没有 EAR,只有 WAR。

标签: java web-applications architecture jboss


【解决方案1】:

如果您的后端是独立的,并且您使用一些 REST 或 SOAP Web 服务与客户端通信 - 这很好。试着想象明天你用 java 放弃你的客户端并用 .NET 创建另一个客户端。后端是否需要一些更改?如果没有 - 这很好。如果是 - 我认为两场战争不会顺风顺水。

【讨论】:

  • 是的,但优点是什么。我实际上看到了拥有两个 WAR 的很多优势。我想了解的是单个 EAR/WAR 文件如何扩展?我不认为如果所有层都是单个 WAR/EAR 中的包,它们可以垂直扩展。只有水平缩放是可能的,对吧?而且我不认为水平缩放是一种理想的缩放形式。
  • 它看起来不像垂直缩放,但是你可以水平缩放这两个组件,可能有不同的缩放比例:例如,你可以有 3 个前端和 20 个后端。以防单场战争 - 25 个后端相同。
  • right alexey28,所以这确实使拥有多个 WAR 成为一种更好的选择,对吧?如果是,那么具有单个 WAR 的应用程序如何声称是可扩展的,因为我见过的大多数应用程序(所谓的可扩展)都作为单个 WAR 部署在单个容器中......
  • 可以有两种方法来扩展: 1. 您自己的解决方案 - 您有一些执行负载平衡的客户端并在集群中拥有注册后端的地址(两次战争)。 2.您使用现有的集群解决方案:构建应用服务器集群(我认为Tomcat可以做到)并使用数据库服务器集群。在这种情况下,可以考虑 NoSQL。但这是使用 NoSQL(单一战争)的非常负责任的解决方案。
  • alexey29...我很抱歉...没有了解您对 NoSQL 的看法。如果有的话,您认为在什么情况下它可以替代 RDBMS?其实我还是不太熟悉 NoSQL 的概念……
猜你喜欢
  • 2017-08-15
  • 1970-01-01
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多