文章推荐:和BEA架构师Dean Jacobs谈Cluster

文章:
http://www.theserverside.com/events/videos/DeanJacobs/transcription.html

从这个对话中,我们大概可以了解如何考虑Cluster,要从Web层 EJB层 JMS等几个方面分别去考虑,首先着重的是state,即状态的cluster,关于状态有三种:
1. Stateless services,它只要解决负载平衡问题,也就是说,增加多台机器就能增强Stateless service的处理能力;

2.需要在内存中保留,但是不一定要持久化到数据库或文件系统,这就是Web层的http session和stateful session bean,一般做内存备份,丢失第一份,可以从第二份找到。

3.需要持久化的一些class,如entity beans, JMS destinations,这些可以使用后台强大的数据库和cache来解决。


Dean Jacobs特别谈到了singleton service的cluster问题:singleton service属于上面第三类,通过好的cache方案或entity bean来解决。

Dean Jacobs还提出以一种垂直式的cluster来使系统分层,通过在最前端预置一批大量cheap的Pc机,用来保存Socket相关的Session,这样,然后再通过Socket Server集中访问后台的几个大型服务器,这样的分层虽然比不分离session时性能有所降低,但是更scalable,这样就省略对Http session 复制和跳跃式的操作,后者随着服务器台数增加会非常耗时。

Dean Jacobs认为WEB层的分离独立以及后端的分布式对象(EJB)给于了EJB强大的力量。

更正最后一句话:
Dean Jacobs认为WEB层的分离独立以及后端的分布式对象(EJB)给于了J2EE强大的力量。

这句话我非常同意,现在有很多开发者将重要的逻辑都封装在WEB层,就象Jive一样,那么如果要实现CLuster只能使用另类的解决方案,而如果将重要的运算封装在EJB层,那么随着访问量增加,你可以自然形成你的server farm,这些无须你做很多底层的cluster的技术。

马上我要在J道网站出一本关于剖析EJB运行原理的教程,这样能扫清很多EJB的“恐惧症”。敬请关注。