cluster集群技术是架构一个系统前必须了解的知识

如果你的系统从当初设计就无法很好支持cluster技术,那么 当你的系统访问量增加时,你要辛苦地修改那些已经运行正常证明很成熟的代码,这是一件很痛苦的事情。

了解著名的Java网站theserverside.com如何从单机迁移到集群服务器上的过程有助于从系统开发开始就能考虑到将来:
http://www2.theserverside.com/resources/article.jsp?l=tsscluster1

分析该文:

theserverside.com主要从下面几个方面对原来系统进行了改造:
1.首先不要将每个应用和服务器有太多具体联系(sticky),这个道理很容易理解,
因为一个应用如果很依赖他运行的服务器,离开它不行,那么如何移植到其他平台
实现负载平衡?

其中特别指出的是http session,就是我们平时在Jsp中使用的UseBean scope="session"
这种用法,文章中说:大多数J2EE产品是允许你cluster你的HTTPSession对象, 通过
in-memory replication, 或者通过database.但是这只能在一种J2EE产品中适用,也就是
说,你所有服务器都安装的Jboss的话,HTTPSession才适用,不同J2EE产品之间彼此是无法
工作的。theserverside就采取了HTTP Cookies技术,(这要求客户端浏览器支持),所以
stateless对于cluster是用好处的。

2.如何处理共享数据?
一般的为了克服服务器瓶颈,我们会cache很多数据在内存中,那么这种cache机制在转移向
集群时就有可能要被关闭。
另外象Weblogic提供的EJB特别增强功能smart multicast invalidation of CMP entity beans
就不能被使用。

数据库是个瓶颈,我们需要在数据库前端放置一个分布式的cache层。使用Tangosol产品立即
能在两台服务器间共享cache数据,这是在实体bean层使用的cache技术,同样在jsp层也需要
cache技术,OSCache是个很好的开源代码产品,这样很多时候我们就不必打捞EJB层而能取得
数据。

补充:如果你的系统可能发展到超过一台应用服务器,或者说你的系统访问量可能不断发展,那么你就要在你项目开始之初确定使用J2EE架构你的系统。否则从单纯的java class迁移到J2EE是个不容易的过程。