需要在集群环境中工作的Java Web应用程序的主要考虑因素/陷阱?

时间:2010-11-23 05:32:31

标签: java web-services web-applications cluster-analysis

我们有一个使用Spring和Hibernate的Java Web应用程序,并且具有相当标准的体系结构。目前,除了通过AFM / HTTP与BlazeDS后端通信的Flex GUI客户端之外,该应用程序还支持基于SOAP的客户端。今天,应用程序仅在Tomcat中运行,但是即将支持JBoss和Websphere。

我们现在要确保应用程序可以在集群环境中运行,以实现可伸缩性和故障转移。此问题主要是关于Java应用程序服务器层(而不是数据库层)。除了由Spring Security管理的登录会话信息之外,该应用程序是无状态的。

支持群集环境时需要考虑什么?

寻找有关日志记录,JNDI,配置,文件I / O,登录会话等的任何提示 - 任何事情!

2 个答案:

答案 0 :(得分:2)

  • 如果您有文件I / O,请确保使用信号量/类似的东西,以确保I / O操作按照您希望的方式进行。
  • 如果您使用任何SSO(单点登录)产品,请确保它们在群集后正常工作。
  • 必须在所有服务器上安装/维护SSL证书。
  • 如果您使用JBoss,可以使用mod_cluster或mod_proxy,具体取决于您的环境/要求。
  • 如果您使用的是WebSphere,则可以在其中一个节点所在的物理计算机上安装Deployment Manager。
  • 彻底测试您的图像和其他静态资源,以确保它们都能正常工作。
  • 为每台服务器保持日志分开。
  • 我不确定您是否使用任何负载平衡器 - 只需确保负载在服务器之间分布均匀。
  • 所有标准内容:会话管理,身份验证等。

答案 1 :(得分:1)

  

我们需要考虑什么时候   支持集群环境?

这取决于很多事情,给出的最有用的建议几乎总是最具体的建议,但我想你在这里寻找一般的经验/建议。 : - )

虽然有点过时,this article解释了很好地集群Java EE的基础知识。

关于个人经历,在我以前的一个项目中,我们不是使用容器提供的内置会话复制/故障转移,而是为我们的应用程序实现了自己的会话功能。这样做的好处是能够以服务器/应用程序无关的方式访问用户特定数据。我们的会话存储基本上是一个由内存数据网格库Hazelcast支持的分布式哈希映射,并且运行良好。我确实写了一些关于here的文章。

群集生效的最重要部分是“测试”群集是否有效。我知道这听起来很明显,但这经常被忽视。确保进行彻底的性能和回归测试,以确保:

  • 群集确实有效
  • 它不会弄乱您的网络应用程序的正确性

由于每个服务器现在都有自己的连接池,因此请确保您重新访问连接池配置,因为您的负载现在将分布在'n'个服务器实例之间。

哦,顺便说一句,祝你好运“Websphere”整合......; - )