【发布时间】:2011-02-07 22:43:00
【问题描述】:
向这里所有的聪明人问好!
我想问一下,将 Java 企业 Web 应用程序部署到 Amazon EC2 等云中是否可行或是否是个好主意。更准确地说,我正在寻找一个应用程序的基础设施选项,该应用程序应处理数百个用户,但既不是 CPU 也不是内存密集型会话。我正在考虑专用服务器、虚拟专用服务器 (VPS) 和 EC2。我注意到有一个名为 JBoss Cloud 的项目,所以人们正在努力实现这样的部署,另一方面,它似乎还不成熟,我不确定云是否已经为这种部署做好了准备应用程序,这与 Twitter 等典型的基于云的应用程序不同。您会建议将其部署到云端吗?有什么好处和坏处?
该应用程序是一个 Java EE 5 Web 应用程序,其主要功能是使用户能够通过组合可用的部件来组成自己的定制产品。它使用无状态和有状态会话 bean 和 JPA 将实体持久化到 RDBMS,并通过 Web 服务从公司的库存系统中获取有关零件的信息。除了外部用户之外,它还被少数内部用户使用,他们通过公司的 LDAP 进行身份验证。该应用程序应该处理大约 300-400 个并发用户来构建他们的产品,并且应该具有合理的可扩展性和可用性,尽管这些品质在现阶段仅具有中等重要性。
我提出了一个由防火墙 (FW) 和支持粘性会话和 https 的负载均衡器组成的架构(在云中,这将被 EC2 的 Elastic Load Balancing 服务和应用程序服务器上的 FW 取代,在物理架构中)负载平衡器将是一个硬件),然后是两个物理集群应用程序服务器与 Web 服务器相结合(这样如果一个失败,用户不会丢失他/她长期构建的产品),最后是一个数据库服务器。数据库服务器需要一个从属备份实例,如果主实例发生故障,它可以替换它。这应该提供合理的可用性和容错性,并提供良好的可伸缩性,只要单个 RDBMS 可以保持负载,这应该可以持续一段时间,因为大多数操作都是使用有状态 bean 在内存中完成的,并且只是偶尔存储或从数据库中检索,数据量也很低。一个有问题的部分可能是对远程库存系统 web 服务的依赖,但如果在应用程序中对其输出进行了良好的缓存,它也应该没问题。
不幸的是,对于数百个用户所需的这种“普通 Java EE 应用程序”所需的系统资源(内存大小、CPU/内核的数量和速度),我只有模糊的概念。根据亚马逊的实际产品,我粗略且几乎没有根据的估计是,1.7GB 和一个速度约为 2.5GHz(高 CPU 中型实例)的单个 2 核“现代 CPU”对于两个应用程序服务器中的任何一个都应该足够了(因为我们可以通过配置更多负载来处理更高的负载)。或者,我会考虑使用大型实例(64b,7.5GB RAM,2 个 1GHz 核心)
所以我的问题是,这样的云部署在技术上和财务上是否可行,或者专用/VPS 服务器是否是更好的选择,以及是否有一些类似的实际经验。
非常感谢! /Jakub 圣洁
PS:我发现 JBoss EAP in a Cloud Case Study 表明可以将真实世界的 Java EE 应用程序部署到 EC2 云,但遗憾的是没有关于拓扑、实例类型或任何内容的详细信息 :-(
【问题讨论】:
-
这将更适合 Serverfault.com
-
谢谢,Michael,我不知道这个服务器。我已将问题转发到 Serverfault.com - serverfault.com/questions/132325/…
标签: java jakarta-ee jboss amazon-ec2 cloud