如果你发现手工实现困难,那就必须用EJB,还没有你提问题的情况出现,EJB为集群背负了那么多缺点,如果象你说的情况存在,EJB早就不存在了
http://www.jdon.com/jive/article.jsp?forum=121&thread=22282
只要注意以下几点:(目前只想到这些)
1、往session里边放的东东要实现序列化的接口(session复制用)
2、因为session要复制,所以session里边的东西要尽可能的少,否则可能集群性能还不如单机
3、集群下没有真正单例的实现,所以不要用单态模式来保存集群内所有服务器都需要的状态,比如程序的某个全局变量,可以考虑用jndi来实现。不过相信好的程序这么做的并不多。
4、同步问题也要注意~比如不要试图用加同步来实现取得最大id这样的操作,可以通过保存到数据库的手段来解决这个问题
在好好读读这篇英文文章:
http://www.theserverside.com/articles/article.tss?l=J2EEClustering
如果你普通JavaBeans不费力气能实现真正集群,EJB真的不必存在了。
10个CPU以上的商业服务器集群能力是惊人的,而Tomcat只能是简陋的集群,JBoss则最多是5台,多了就不灵了。
http://www.jdon.com/jive/thread.jsp?forum=121&thread=22848
没有EJB,你真的很难玩转集群。就是玩通了,可伸缩性如何?是否可不断增加服务器,增加后是强者越强?
http://www.matrix.org.cn/resource/article/43/43829_JBoss_Clustering.html
题目是:JBoss 4.0.2集群指南
其实整篇文章谈的都是JBoss中嵌入的Tomcat集群,题目也许可以改为:
Tomcat 5.0集群指南。
关于Tomcat 的简陋集群可以参考上述TSS的那篇文章。
这才是误导啊。
http://www.huihoo.com/jboss/clustering/strategy.html
对比两篇文章,huihoo是谈原理,上面误导篇是谈配置,按道理,原理实现和配置使用应该是一致的,但是你仔细研究会发现两篇不一致,因为huhoo谈了EJB集群,而后者则没有谈集群重要核心EJB集群的配置,包括EJB应用应该注意什么。
“Jboss 支持如下类型的cluster:EJB、web、JNDI、JMS,我们主要了解web cluster。”
但是题目取得就不太确切了,而且从TSS文章可以了解到Web Cluster其实很简陋,没多大可伸缩性。
不过粗粗看下来~好像没有说没了ejb ,cluster就不能跑的阿,嘿嘿,照此说来,我也完全可以说,banq你是完全错的,详情请看http://www.theserverside.com/articles/article.tss?l=J2EEClustering 等等等等~
俺也没说session同步是集群的全部阿~我这里只是摆出了without ejb的情况下,使用集群应该注意的事项而以,而且我可以确信注意到了这些,程序跑在集群上是没有问题的,没那么多理由,因为项目就是这么跑的,运行的也很正常,集群该发挥作用的也都好好的发挥着,我们可不是用tomcat那种玩具的,呵呵~
呵呵,偶尔吵一吵也很有趣~~真想多说一点理由……不过懒得打字了
说话要负责任的,谁说web cluste没多大可伸缩性,如果程序里边不使用session(好像tss就是这样?),你集群里有两台server,就能基本上撑住两倍的访问量,三台就是三倍,只要server前端有台四层交换机分布请求就ok了。不必ejb差吧?
yuxie说的不错,web cluster只是负载平衡,使用Web cluster字样是不准确,容易造成初学者以为集群很简单,就是前面加个分发器。
但是万一有一台机器坏了,或者网络有问题,分发器还是继续将request发往那台坏的服务器啊,这就引起另外一个问题:failover。
使用EJB,可以很好地支持failover,而且动态负载平衡要做得比外部分发器要灵敏多,外部分分发策略是很傻的,无法知道到底哪个EJB耗CPU啊。
另外还有EJB组件的分布式事务。
所以 Web Cluster一般称为web balance load, 负载平衡和集群是两种概念。我们不能因为轻易将其混乱。
现在国内大的网站都是内容网站,是一种方向推的技术,而不是互动网站,所以这些内容网站只要前段使用分发器以及缓存就可以了,越是动态互动性强,对技术要求就高,这也是eBay网站 Google网站技术很高的原因所在。